nautobot / pylint-nautobot

Custom Pylint Rules for Nautobot
https://docs.nautobot.com/projects/pylint-nautobot/en/latest/
Other
4 stars 0 forks source link

Pytest does not work outside of docker #95

Open gsnider2195 opened 1 month ago

gsnider2195 commented 1 month ago

When running pytest locally it appears our tests are inspecting code in site-packages:

(pylint-nautobot-py3.12) gary@gary-work:~/github/nautobot/pylint-nautobot (develop)$ pytest
=========================================================================== test session starts ===========================================================================
platform linux -- Python 3.12.5, pytest-7.4.4, pluggy-1.5.0 -- /home/gary/.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/bin/python
cachedir: .pytest_cache
rootdir: /home/gary/github/nautobot/pylint-nautobot
configfile: pyproject.toml
testpaths: tests
plugins: django-constance-3.1.0
collected 57 items                                                                                                                                                        

tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_code_location_changed[import nautobot.core.fields-expected_args0] PASSED                  [  1%]
tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_code_location_changed[from nautobot.core.fields import anything-expected_args1] PASSED    [  3%]
tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_code_location_changed_object[from nautobot.core.api.utils import TreeModelSerializerMixin-expected_args0] PASSED [  5%]
tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_code_location_changed_object[from nautobot.utilities.utils import csv_format-expected_args1] PASSED [  7%]
tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_no_issues[from nautobot.core.api.utils import anything] PASSED                            [  8%]
tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_no_issues[import nautobot] PASSED                                                         [ 10%]
tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_no_issues[import nautobot.core.api.serializers] PASSED                                    [ 12%]
tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_no_issues[import nautobot.core.api.utils] PASSED                                          [ 14%]
tests/test_code_location_changes.py::TestCodeLocationChangesChecker::test_no_issues[from nautobot.utilities.utils import anything] PASSED                           [ 15%]
tests/test_deprecated_status_model.py::TestDeprecatedStatusModelChecker::test_error[deprecated-status-model/error_status_model.py-expected_error0] PASSED           [ 17%]
tests/test_deprecated_status_model.py::TestDeprecatedStatusModelChecker::test_good[filename0] SKIPPED (got empty parameter set ['filename'], function test_good at
/home/gary/github/nautobot/pylint-nautobot/tests/test_deprecated_status_model.py:28)                                                                                [ 19%]
tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_error[incorrect-base-class/error_form.py-expected_error0] PASSED                            [ 21%]
tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_error[incorrect-base-class/error_model_form.py-expected_error1] PASSED                      [ 22%]
tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_error[incorrect-base-class/error_model.py-expected_error2] PASSED                           [ 24%]
tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_error[incorrect-base-class/error_filter_set.py-expected_error3] PASSED                      [ 26%]
tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_good[incorrect-base-class/good_filter_set.py] PASSED                                        [ 28%]
tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_good[incorrect-base-class/good_form.py] PASSED                                              [ 29%]
tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_good[incorrect-base-class/good_model_form.py] PASSED                                        [ 31%]
tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_good[incorrect-base-class/good_primary_model.py] PASSED                                     [ 33%]
tests/test_model_label.py::TestModelLabelChecker::test_finds_model_label_construction[f"{model._meta.app_label}.{model._meta.model}"] PASSED                        [ 35%]
tests/test_model_label.py::TestModelLabelChecker::test_finds_model_label_construction[f"Prepended {another_model._meta.app_label}.{another_model._meta.model}, appended"] PASSED [ 36%]
tests/test_model_label.py::TestModelLabelChecker::test_no_issues["{model._meta.app_label}.{model._meta.model}"] PASSED                                              [ 38%]
tests/test_model_label.py::TestModelLabelChecker::test_no_issues[f"{model._meta.app_label},{model._meta.model}"] PASSED                                             [ 40%]
tests/test_model_label.py::TestModelLabelChecker::test_no_issues[f"{model._meta.app_label}.{another_model._meta.model}"] PASSED                                     [ 42%]
tests/test_replaced_models.py::TestReplacedModelsImportChecker::test_code_location_changed[nb-replaced-aggregate-from nautobot.ipam.models import Aggregate] PASSED [ 43%]
tests/test_replaced_models.py::TestReplacedModelsImportChecker::test_code_location_changed[nb-replaced-device-role-from nautobot.dcim.models import DeviceRole] PASSED [ 45%]
tests/test_replaced_models.py::TestReplacedModelsImportChecker::test_code_location_changed[nb-replaced-ipam-role-from nautobot.ipam.models import Role] PASSED      [ 47%]
tests/test_replaced_models.py::TestReplacedModelsImportChecker::test_code_location_changed[nb-replaced-rack-role-from nautobot.dcim.models import RackRole] PASSED  [ 49%]
tests/test_replaced_models.py::TestReplacedModelsImportChecker::test_code_location_changed[nb-replaced-region-from nautobot.dcim.models import Region] PASSED       [ 50%]
tests/test_replaced_models.py::TestReplacedModelsImportChecker::test_code_location_changed[nb-replaced-site-from nautobot.dcim.models import Site] PASSED           [ 52%]
tests/test_replaced_models.py::TestReplacedModelsImportChecker::test_no_issues[from nautobot.dcim.models import Device] PASSED                                      [ 54%]
tests/test_replaced_models.py::TestReplacedModelsImportChecker::test_no_issues[from nautobot.ipam.models import IPAddress] PASSED                                   [ 56%]
tests/test_string_field_blank_null.py::TestStringFieldBlankNullChecker::test_error[string-field-blank-null/error_field.py-expected_error0] PASSED                   [ 57%]
tests/test_string_field_blank_null.py::TestStringFieldBlankNullChecker::test_good[string-field-blank-null/good_field.py] PASSED                                     [ 59%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_table_model.py-expected_error0] PASSED                              [ 61%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_table.py-expected_error1] PASSED                                    [ 63%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_viewset.py-expected_error2] FAILED                                  [ 64%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_model_form.py-expected_error3] PASSED                               [ 66%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_filter_form.py-expected_error4] PASSED                              [ 68%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_serializer.py-expected_error5] PASSED                               [ 70%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_viewset_model.py-expected_error6] PASSED                            [ 71%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_filter_set.py-expected_error7] PASSED                               [ 73%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_no_issues[sub-class-name/good_filter_form.py] PASSED                                                    [ 75%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_no_issues[sub-class-name/good_filter_set.py] PASSED                                                     [ 77%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_no_issues[sub-class-name/good_model_form.py] PASSED                                                     [ 78%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_no_issues[sub-class-name/good_serializer.py] PASSED                                                     [ 80%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_no_issues[sub-class-name/good_table.py] PASSED                                                          [ 82%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_no_issues[sub-class-name/good_table_model.py] PASSED                                                    [ 84%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_no_issues[sub-class-name/good_viewset.py] PASSED                                                        [ 85%]
tests/test_sub_class_name.py::TestSubClassNameChecker::test_no_issues[sub-class-name/good_viewset_model.py] PASSED                                                  [ 87%]
tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_error[use-fields-all/error_form.py-expected_error0] PASSED                                              [ 89%]
tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_error[use-fields-all/error_serializer.py-expected_error1] PASSED                                        [ 91%]
tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_error[use-fields-all/error_filter_set.py-expected_error2] PASSED                                        [ 92%]
tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_good[use-fields-all/good_filter_set.py] PASSED                                                          [ 94%]
tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_good[use-fields-all/good_form.py] PASSED                                                                [ 96%]
tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_good[use-fields-all/good_serializer.py] PASSED                                                          [ 98%]
tests/test_version_specifiers.py::test_version_specifiers PASSED                                                                                                    [100%]

================================================================================ FAILURES =================================================================================
______________________________________ TestSubClassNameChecker.test_sub_class_name[sub-class-name/error_viewset.py-expected_error2] _______________________________________

self = <tests.test_sub_class_name.TestSubClassNameChecker object at 0x7f5df619ce30>, filename = 'sub-class-name/error_viewset.py'
expected_error = {'args': ('AddressObjectUIViewSet',), 'col_offset': 0, 'line': 9, 'msg_id': 'nb-sub-class-name', ...}

    @parametrize_error_files(__file__, _EXPECTED_ERRORS)
    def test_sub_class_name(self, filename, expected_error):
>       assert_error_file(self, filename, expected_error)

tests/test_sub_class_name.py:93: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/utils.py:67: in assert_error_file
    module_node = astroid.parse(test_code)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:307: in parse
    return builder.string_build(code, modname=module_name, path=path)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:153: in string_build
    return self._post_build(module, builder, "utf-8")
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:173: in _post_build
    module = self._manager.visit_transforms(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:109: in visit_transforms
    return self._transform.visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:89: in visit
    return self._visit(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:57: in _visit
    return self._transform(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:38: in _transform
    if predicate is None or predicate(node):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/brain/brain_namedtuple_enum.py:600: in _is_enum_subclass
    return cls.is_subtype_of("enum.Enum")
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in is_subtype_of
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in <genexpr>
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2399: in ancestors
    for baseobj in stmt.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:334: in infer_import_from
    module = self.do_import_module()
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/_base_nodes.py:146: in do_import_module
    return mymodule.import_module(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:530: in import_module
    return AstroidManager().ast_from_module_name(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:246: in ast_from_module_name
    return self.ast_from_file(found_spec.location, modname, fallback=False)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:138: in ast_from_file
    return AstroidBuilder(self).file_build(filepath, modname)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:145: in file_build
    return self._post_build(module, builder, encoding)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:173: in _post_build
    module = self._manager.visit_transforms(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:109: in visit_transforms
    return self._transform.visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:89: in visit
    return self._visit(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:57: in _visit
    return self._transform(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:38: in _transform
    if predicate is None or predicate(node):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/brain/brain_namedtuple_enum.py:600: in _is_enum_subclass
    return cls.is_subtype_of("enum.Enum")
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in is_subtype_of
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in <genexpr>
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2399: in ancestors
    for baseobj in stmt.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:358: in infer_attribute
    for owner in self.expr.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:334: in infer_import_from
    module = self.do_import_module()
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/_base_nodes.py:146: in do_import_module
    return mymodule.import_module(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:530: in import_module
    return AstroidManager().ast_from_module_name(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:246: in ast_from_module_name
    return self.ast_from_file(found_spec.location, modname, fallback=False)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:138: in ast_from_file
    return AstroidBuilder(self).file_build(filepath, modname)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:145: in file_build
    return self._post_build(module, builder, encoding)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:173: in _post_build
    module = self._manager.visit_transforms(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:109: in visit_transforms
    return self._transform.visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:89: in visit
    return self._visit(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:57: in _visit
    return self._transform(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:38: in _transform
    if predicate is None or predicate(node):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/brain/brain_namedtuple_enum.py:600: in _is_enum_subclass
    return cls.is_subtype_of("enum.Enum")
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in is_subtype_of
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in <genexpr>
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2399: in ancestors
    for baseobj in stmt.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:334: in infer_import_from
    module = self.do_import_module()
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/_base_nodes.py:146: in do_import_module
    return mymodule.import_module(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:530: in import_module
    return AstroidManager().ast_from_module_name(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:246: in ast_from_module_name
    return self.ast_from_file(found_spec.location, modname, fallback=False)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:138: in ast_from_file
    return AstroidBuilder(self).file_build(filepath, modname)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:145: in file_build
    return self._post_build(module, builder, encoding)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:173: in _post_build
    module = self._manager.visit_transforms(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:109: in visit_transforms
    return self._transform.visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:89: in visit
    return self._visit(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:57: in _visit
    return self._transform(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:38: in _transform
    if predicate is None or predicate(node):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/brain/brain_namedtuple_enum.py:600: in _is_enum_subclass
    return cls.is_subtype_of("enum.Enum")
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in is_subtype_of
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in <genexpr>
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2399: in ancestors
    for baseobj in stmt.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:358: in infer_attribute
    for owner in self.expr.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:334: in infer_import_from
    module = self.do_import_module()
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/_base_nodes.py:146: in do_import_module
    return mymodule.import_module(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:530: in import_module
    return AstroidManager().ast_from_module_name(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:246: in ast_from_module_name
    return self.ast_from_file(found_spec.location, modname, fallback=False)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:138: in ast_from_file
    return AstroidBuilder(self).file_build(filepath, modname)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:145: in file_build
    return self._post_build(module, builder, encoding)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:173: in _post_build
    module = self._manager.visit_transforms(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:109: in visit_transforms
    return self._transform.visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:89: in visit
    return self._visit(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:57: in _visit
    return self._transform(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:38: in _transform
    if predicate is None or predicate(node):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/brain/brain_namedtuple_enum.py:600: in _is_enum_subclass
    return cls.is_subtype_of("enum.Enum")
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in is_subtype_of
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in <genexpr>
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2399: in ancestors
    for baseobj in stmt.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:334: in infer_import_from
    module = self.do_import_module()
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/_base_nodes.py:146: in do_import_module
    return mymodule.import_module(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:530: in import_module
    return AstroidManager().ast_from_module_name(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:246: in ast_from_module_name
    return self.ast_from_file(found_spec.location, modname, fallback=False)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:138: in ast_from_file
    return AstroidBuilder(self).file_build(filepath, modname)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:145: in file_build
    return self._post_build(module, builder, encoding)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:173: in _post_build
    module = self._manager.visit_transforms(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:109: in visit_transforms
    return self._transform.visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:89: in visit
    return self._visit(module)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:54: in _visit
    visited = self._visit_generic(value)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:61: in _visit_generic
    return [self._visit_generic(child) for child in node]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:67: in _visit_generic
    return self._visit(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:57: in _visit
    return self._transform(node)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/transforms.py:38: in _transform
    if predicate is None or predicate(node):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/brain/brain_namedtuple_enum.py:600: in _is_enum_subclass
    return cls.is_subtype_of("enum.Enum")
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in is_subtype_of
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2238: in <genexpr>
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:2399: in ancestors
    for baseobj in stmt.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:358: in infer_attribute
    for owner in self.expr.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:341: in infer_import_from
    stmts = module.getattr(name, ignore_locals=module is self.root())
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:414: in getattr
    result = [self.import_module(name, relative_only=True)]
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:530: in import_module
    return AstroidManager().ast_from_module_name(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:246: in ast_from_module_name
    return self.ast_from_file(found_spec.location, modname, fallback=False)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:138: in ast_from_file
    return AstroidBuilder(self).file_build(filepath, modname)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:145: in file_build
    return self._post_build(module, builder, encoding)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:169: in _post_build
    self.delayed_assattr(delayed)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:240: in delayed_assattr
    for inferred in node.expr.infer():
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:171: in infer
    yield from self._infer(context=context, **kwargs)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:1162: in infer_assign
    stmts = list(self.assigned_stmts(context=context))
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/protocols.py:412: in _arguments_infer_argname
    is_metaclass = isinstance(cls, nodes.ClassDef) and cls.type == "metaclass"
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:1874: in _class_type
    if _is_metaclass(klass):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:1845: in _is_metaclass
    for baseobj in base.infer():
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:171: in infer
    yield from self._infer(context=context, **kwargs)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:431: in infer_subscript
    for value in self.value.infer(context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/bases.py:177: in _infer_stmts
    for inf in stmt.infer(context=context):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/node_ng.py:184: in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:143: in raise_if_nothing_inferred
    yield next(generator)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/decorators.py:112: in wrapped
    for res in _func(node, context, **kwargs):
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/inference.py:334: in infer_import_from
    module = self.do_import_module()
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/_base_nodes.py:146: in do_import_module
    return mymodule.import_module(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py:530: in import_module
    return AstroidManager().ast_from_module_name(
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:246: in ast_from_module_name
    return self.ast_from_file(found_spec.location, modname, fallback=False)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/manager.py:138: in ast_from_file
    return AstroidBuilder(self).file_build(filepath, modname)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:144: in file_build
    module, builder = self._data_build(data, modname, path)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/builder.py:204: in _data_build
    module = builder.visit_module(node, modname, node_file, package)
../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/rebuilder.py:254: in visit_module
    [self.visit(child, newnode) for child in node.body],
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <astroid.rebuilder.TreeRebuilder object at 0x7f5df1331ac0>, node = <ast.TypeAlias object at 0x7f5df116efd0>, parent = <Module.typing l.0 at 0x7f5df1332a80>

    def visit(self, node: ast.AST | None, parent: NodeNG) -> NodeNG | None:
        if node is None:
            return None
        cls = node.__class__
        if cls in self._visit_meths:
            visit_method = self._visit_meths[cls]
        else:
            cls_name = cls.__name__
            visit_name = "visit_" + REDIRECT.get(cls_name, cls_name).lower()
>           visit_method = getattr(self, visit_name)
E           AttributeError: 'TreeRebuilder' object has no attribute 'visit_typealias'

../../../.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/rebuilder.py:609: AttributeError
============================================================================ warnings summary =============================================================================
tests/test_deprecated_status_model.py: 1316 warnings
tests/test_incorrect_base_class.py: 506 warnings
tests/test_sub_class_name.py: 682 warnings
tests/test_use_fields_all.py: 12 warnings
  /home/gary/.cache/pypoetry/virtualenvs/pylint-nautobot-zWzTTHMb-py3.12/lib/python3.12/site-packages/astroid/rebuilder.py:84: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
    if isinstance(first_value, self._module.Str) or (

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
========================================================================= short test summary info =========================================================================
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_viewset.py-expected_error2] - AttributeError: 'TreeRebuilder' object has no attribute 'visit_typealias'
========================================================= 1 failed, 55 passed, 1 skipped, 2516 warnings in 6.03s ==========================================================
itdependsnetworks commented 1 month ago

I was thinking about that. Anything that requires actual inspection of code, perhaps we could move to a test? Leave pylint only for AST checks.

gsnider2195 commented 1 month ago

The output in the summary was actually due to that version of pylint not supporting python 3.12. See the output below for the actual test failures

========================================================================== short test summary info ==========================================================================
FAILED tests/test_deprecated_status_model.py::TestDeprecatedStatusModelChecker::test_error[deprecated-status-model/error_status_model.py-expected_error0] - AssertionError: Expected messages did not match actual.
FAILED tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_error[incorrect-base-class/error_filter_set.py-expected_error0] - AssertionError: Expected messages did not match actual.
FAILED tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_error[incorrect-base-class/error_form.py-expected_error1] - AssertionError: Expected messages did not match actual.
FAILED tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_error[incorrect-base-class/error_model.py-expected_error2] - AssertionError: Expected messages did not match actual.
FAILED tests/test_incorrect_base_class.py::TestIncorrectBaseClassChecker::test_error[incorrect-base-class/error_model_form.py-expected_error3] - AssertionError: Expected messages did not match actual.
FAILED tests/test_string_field_blank_null.py::TestStringFieldBlankNullChecker::test_error[string-field-blank-null/error_field.py-expected_error0] - AssertionError: Expected messages did not match actual.
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_viewset_model.py-expected_error0] - AssertionError: Expected messages did not match actual.
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_table.py-expected_error1] - AssertionError: Expected messages did not match actual.
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_filter_set.py-expected_error2] - AssertionError: Expected messages did not match actual.
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_serializer.py-expected_error3] - AssertionError: Expected messages did not match actual.
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_table_model.py-expected_error4] - AssertionError: Expected messages did not match actual.
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_model_form.py-expected_error5] - AssertionError: Expected messages did not match actual.
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_viewset.py-expected_error6] - AssertionError: Expected messages did not match actual.
FAILED tests/test_sub_class_name.py::TestSubClassNameChecker::test_sub_class_name[sub-class-name/error_filter_form.py-expected_error7] - AssertionError: Expected messages did not match actual.
FAILED tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_error[use-fields-all/error_form.py-expected_error0] - AssertionError: Expected messages did not match actual.
FAILED tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_error[use-fields-all/error_filter_set.py-expected_error1] - AssertionError: Expected messages did not match actual.
FAILED tests/test_use_fields_all.py::TestUseFieldsAllChecker::test_error[use-fields-all/error_serializer.py-expected_error2] - AssertionError: Expected messages did not match actual.
================================================================= 17 failed, 39 passed, 1 skipped in 0.77s ==================================================================