Skip to content

Commit aad4cce

Browse files
Fix linter violations with flake8-import-order 0.19.0 (#248)
Signed-off-by: Michael Carlstrom <rmc@carlstrom.com>
1 parent fde430c commit aad4cce

5 files changed

Lines changed: 32 additions & 28 deletions

File tree

rosidl_generator_py/resource/_action.py.em

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class Metaclass_@(action.namespaced_type.name)(rosidl_pycommon.interface_base_cl
5050
@@classmethod
5151
def __import_type_support__(cls) -> None:
5252
try:
53-
from rosidl_generator_py import import_type_support
53+
from rosidl_generator_py import import_type_support # type: ignore[attr-defined]
5454
module = import_type_support('@(package_name)')
5555
except ImportError:
5656
import logging

rosidl_generator_py/resource/_idl.py.em

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,35 @@
1+
@{
2+
import sys
3+
module_name = f"_{interface_path.name.split('.', 1)[0].lower()}"
4+
}@
5+
@[if module_name in sys.builtin_module_names]@
6+
# noqa: A005
7+
# Module @(module_name).py shadows a builtin
8+
9+
@[end if]@
110
# generated from rosidl_generator_py/resource/_idl.py.em
211
# with input from @(package_name):@(interface_path)
312
# generated code does not contain a copyright notice
413

514
from __future__ import annotations
615

716
import collections.abc
8-
from os import getenv
17+
import os
918
import typing
1019

1120
import rosidl_pycommon.interface_base_classes
1221

22+
if typing.TYPE_CHECKING:
23+
from ctypes import Structure
24+
25+
class PyCapsule(Structure):
26+
pass # don't need to define the full structure
27+
28+
1329
# This is being done at the module level and not on the instance level to avoid looking
1430
# for the same variable multiple times on each instance. This variable is not supposed to
1531
# change during runtime so it makes sense to only look for it once.
16-
ros_python_check_fields = getenv('ROS_PYTHON_CHECK_FIELDS', default='')
32+
ros_python_check_fields = os.getenv('ROS_PYTHON_CHECK_FIELDS', default='')
1733
@
1834
@#######################################################################
1935
@# EmPy template for generating _<idl>.py files

rosidl_generator_py/resource/_msg.py.em

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,6 @@ type_annotations_setter: dict[str, str] = {}
3838
type_annotations_getter: dict[str, str] = {}
3939
type_imports: set[str] = set()
4040

41-
# Types which always exist
42-
# Done in one multi-line string to preserve order
43-
type_imports.add(
44-
"""from ctypes import Structure
45-
46-
class PyCapsule(Structure):
47-
pass # don't need to define the full structure""")
4841
for member in message.structure.members:
4942
setter_type, getter_type = get_setter_and_getter_type(member, type_imports)
5043
type_annotations_setter[member.name] = setter_type
@@ -63,21 +56,18 @@ for member in message.structure.members:
6356
}@
6457
@{
6558
suffix = '__'.join(message.structure.namespaced_type.namespaces[1:]) + '__' + convert_camel_case_to_lower_case_underscore(message.structure.namespaced_type.name)
66-
type_annotations_import_statements_copy = type_annotations_import_statements.copy()
59+
new_typing_imports = sorted(type_imports - type_annotations_import_statements)
6760
}@
61+
@[if new_typing_imports]@
6862

6963

7064
if typing.TYPE_CHECKING:
71-
@[for type_import in type_imports]@
72-
@[if type_import not in type_annotations_import_statements]@
73-
@(type_import)
65+
@[ for type_import in new_typing_imports]@
66+
@(type_import) # noqa: E402, I100, I201, I300
7467
@{
7568
type_annotations_import_statements.add(type_import)
7669
}@
77-
@[end if]@
78-
@[end for]@
79-
@[if type_annotations_import_statements == type_annotations_import_statements_copy]@
80-
pass
70+
@[ end for]@
8171
@[end if]@
8272
@#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
8373
@# Collect necessary import statements for all members

rosidl_generator_py/resource/_srv.py.em

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ TYPE_ALIAS_IMPORT = 'from typing_extensions import TypeAlias'
3131

3232

3333
if typing.TYPE_CHECKING:
34-
@(TYPE_ALIAS_IMPORT)
34+
@(TYPE_ALIAS_IMPORT) # noqa: I100, I300
3535
@[end if]@
3636
@{
3737
type_annotations_import_statements.add(TYPE_ALIAS_IMPORT)
@@ -46,7 +46,7 @@ class Metaclass_@(service.namespaced_type.name)(rosidl_pycommon.interface_base_c
4646
@@classmethod
4747
def __import_type_support__(cls) -> None:
4848
try:
49-
from rosidl_generator_py import import_type_support
49+
from rosidl_generator_py import import_type_support # type: ignore[attr-defined]
5050
module = import_type_support('@(package_name)')
5151
except ImportError:
5252
import logging

rosidl_generator_py/rosidl_generator_py/generate_py_impl.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -404,9 +404,9 @@ def get_setter_and_getter_type(member: Member, type_imports: set[str]) -> tuple[
404404
type_.typename in SPECIAL_NESTED_BASIC_TYPES
405405
):
406406
if isinstance(member.type, Array):
407-
type_imports.add('import numpy.typing')
407+
type_imports.add('from numpy.typing import NDArray')
408408
dtype = SPECIAL_NESTED_BASIC_TYPES[type_.typename]['dtype']
409-
type_annotation = f'numpy.typing.NDArray[{dtype}]'
409+
type_annotation = f'NDArray[{dtype}]'
410410
elif isinstance(member.type, AbstractSequence):
411411
type_annotation = f'array.array[{python_type}]'
412412

@@ -422,13 +422,11 @@ def get_setter_and_getter_type(member: Member, type_imports: set[str]) -> tuple[
422422
type_annotation = sequence_type
423423

424424
elif isinstance(member.type, AbstractGenericString) and member.type.has_maximum_size():
425-
type_annotation = 'typing.Union[str, collections.UserString]'
426-
427-
type_imports.add('import collections')
425+
type_imports.add('from collections import UserString')
426+
type_annotation = 'typing.Union[str, UserString]'
428427
elif isinstance(type_, BasicType) and type_.typename == 'char':
429-
type_annotation = 'typing.Union[str, collection.UserString]'
430-
431-
type_imports.add('import collections')
428+
type_imports.add('from collections import UserString')
429+
type_annotation = 'typing.Union[str, UserString]'
432430
elif isinstance(type_, BasicType) and type_.typename == 'octet':
433431
type_annotation = 'typing.Union[bytes, collections.abc.ByteString]'
434432
else:

0 commit comments

Comments
 (0)