├── .flake8 ├── .github ├── FUNDING.yml └── workflows │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .gitmessage ├── .pre-commit-config.yaml ├── .pre-commit-hooks.yaml ├── .vscode └── settings.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── bin ├── lint └── pull-contributor-pr ├── docs ├── CONTRIBUTING.md └── violations │ ├── README.md │ ├── TRY002.md │ ├── TRY003.md │ ├── TRY004.md │ ├── TRY005.md │ ├── TRY006.md │ ├── TRY100.md │ ├── TRY101.md │ ├── TRY200.md │ ├── TRY201.md │ ├── TRY202.md │ ├── TRY203.md │ ├── TRY300.md │ ├── TRY301.md │ ├── TRY400.md │ └── TRY401.md ├── img ├── logo.png └── tryceratops-example3.gif ├── poetry.lock ├── pyproject.toml └── src ├── tests ├── __init__.py ├── analyzer_helpers.py ├── analyzers_call_test.py ├── analyzers_classdefs_test.py ├── analyzers_conditional_test.py ├── analyzers_exception_block_test.py ├── analyzers_try_block_test.py ├── files_test.py ├── fixers_test.py └── samples │ ├── autofix │ └── except_reraise_no_cause.py │ ├── ignore_comments │ ├── ignore_file.py │ ├── ignore_line.py │ └── ignore_line_specific.py │ └── violations │ ├── call_check_continue.py │ ├── call_raise_long_str.py │ ├── call_raise_vanilla.py │ ├── call_too_many_try.py │ ├── class_base_allowed.py │ ├── class_non_pickable.py │ ├── conditional_prefer_type_error.py │ ├── except_bare.py │ ├── except_pass.py │ ├── except_prefer_log_method.py │ ├── except_reraise_no_cause.py │ ├── except_verbose_reraise.py │ ├── log_error.py │ ├── log_object.py │ ├── try_consider_else.py │ ├── try_finally_dont_consider_else.py │ ├── try_inner_raise.py │ └── try_useless_except.py └── tryceratops ├── __init__.py ├── __main__.py ├── analyzers ├── __init__.py ├── base.py ├── call.py ├── classdefs.py ├── conditional.py ├── exception_block.py ├── exceptions.py └── try_block.py ├── files ├── __init__.py ├── discovery.py └── parser.py ├── fixers ├── __init__.py ├── base.py ├── exception_block.py └── exceptions.py ├── flake_plugin.py ├── interfaces.py ├── logging_config.py ├── parsing_types.py ├── processors.py ├── runners.py ├── settings.py └── violations ├── __init__.py ├── codes.py └── violations.py /.flake8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.flake8 -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.github/FUNDING.yml -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.github/workflows/release.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmessage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.gitmessage -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /.pre-commit-hooks.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.pre-commit-hooks.yaml -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/README.md -------------------------------------------------------------------------------- /bin/lint: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/bin/lint -------------------------------------------------------------------------------- /bin/pull-contributor-pr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/bin/pull-contributor-pr -------------------------------------------------------------------------------- /docs/CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/CONTRIBUTING.md -------------------------------------------------------------------------------- /docs/violations/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/README.md -------------------------------------------------------------------------------- /docs/violations/TRY002.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY002.md -------------------------------------------------------------------------------- /docs/violations/TRY003.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY003.md -------------------------------------------------------------------------------- /docs/violations/TRY004.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY004.md -------------------------------------------------------------------------------- /docs/violations/TRY005.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY005.md -------------------------------------------------------------------------------- /docs/violations/TRY006.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY006.md -------------------------------------------------------------------------------- /docs/violations/TRY100.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY100.md -------------------------------------------------------------------------------- /docs/violations/TRY101.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY101.md -------------------------------------------------------------------------------- /docs/violations/TRY200.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY200.md -------------------------------------------------------------------------------- /docs/violations/TRY201.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY201.md -------------------------------------------------------------------------------- /docs/violations/TRY202.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY202.md -------------------------------------------------------------------------------- /docs/violations/TRY203.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY203.md -------------------------------------------------------------------------------- /docs/violations/TRY300.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY300.md -------------------------------------------------------------------------------- /docs/violations/TRY301.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY301.md -------------------------------------------------------------------------------- /docs/violations/TRY400.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY400.md -------------------------------------------------------------------------------- /docs/violations/TRY401.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/docs/violations/TRY401.md -------------------------------------------------------------------------------- /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/img/logo.png -------------------------------------------------------------------------------- /img/tryceratops-example3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/img/tryceratops-example3.gif -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/poetry.lock -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/pyproject.toml -------------------------------------------------------------------------------- /src/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/tests/analyzer_helpers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/analyzer_helpers.py -------------------------------------------------------------------------------- /src/tests/analyzers_call_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/analyzers_call_test.py -------------------------------------------------------------------------------- /src/tests/analyzers_classdefs_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/analyzers_classdefs_test.py -------------------------------------------------------------------------------- /src/tests/analyzers_conditional_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/analyzers_conditional_test.py -------------------------------------------------------------------------------- /src/tests/analyzers_exception_block_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/analyzers_exception_block_test.py -------------------------------------------------------------------------------- /src/tests/analyzers_try_block_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/analyzers_try_block_test.py -------------------------------------------------------------------------------- /src/tests/files_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/files_test.py -------------------------------------------------------------------------------- /src/tests/fixers_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/fixers_test.py -------------------------------------------------------------------------------- /src/tests/samples/autofix/except_reraise_no_cause.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/autofix/except_reraise_no_cause.py -------------------------------------------------------------------------------- /src/tests/samples/ignore_comments/ignore_file.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/ignore_comments/ignore_file.py -------------------------------------------------------------------------------- /src/tests/samples/ignore_comments/ignore_line.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/ignore_comments/ignore_line.py -------------------------------------------------------------------------------- /src/tests/samples/ignore_comments/ignore_line_specific.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/ignore_comments/ignore_line_specific.py -------------------------------------------------------------------------------- /src/tests/samples/violations/call_check_continue.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/call_check_continue.py -------------------------------------------------------------------------------- /src/tests/samples/violations/call_raise_long_str.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/call_raise_long_str.py -------------------------------------------------------------------------------- /src/tests/samples/violations/call_raise_vanilla.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/call_raise_vanilla.py -------------------------------------------------------------------------------- /src/tests/samples/violations/call_too_many_try.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/call_too_many_try.py -------------------------------------------------------------------------------- /src/tests/samples/violations/class_base_allowed.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/class_base_allowed.py -------------------------------------------------------------------------------- /src/tests/samples/violations/class_non_pickable.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/class_non_pickable.py -------------------------------------------------------------------------------- /src/tests/samples/violations/conditional_prefer_type_error.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/conditional_prefer_type_error.py -------------------------------------------------------------------------------- /src/tests/samples/violations/except_bare.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/except_bare.py -------------------------------------------------------------------------------- /src/tests/samples/violations/except_pass.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/except_pass.py -------------------------------------------------------------------------------- /src/tests/samples/violations/except_prefer_log_method.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/except_prefer_log_method.py -------------------------------------------------------------------------------- /src/tests/samples/violations/except_reraise_no_cause.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/except_reraise_no_cause.py -------------------------------------------------------------------------------- /src/tests/samples/violations/except_verbose_reraise.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/except_verbose_reraise.py -------------------------------------------------------------------------------- /src/tests/samples/violations/log_error.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/log_error.py -------------------------------------------------------------------------------- /src/tests/samples/violations/log_object.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/log_object.py -------------------------------------------------------------------------------- /src/tests/samples/violations/try_consider_else.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/try_consider_else.py -------------------------------------------------------------------------------- /src/tests/samples/violations/try_finally_dont_consider_else.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/try_finally_dont_consider_else.py -------------------------------------------------------------------------------- /src/tests/samples/violations/try_inner_raise.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/try_inner_raise.py -------------------------------------------------------------------------------- /src/tests/samples/violations/try_useless_except.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tests/samples/violations/try_useless_except.py -------------------------------------------------------------------------------- /src/tryceratops/__init__.py: -------------------------------------------------------------------------------- 1 | """Prevent Exception Handling AntiPatterns""" 2 | 3 | __version__ = "2.4.1" 4 | -------------------------------------------------------------------------------- /src/tryceratops/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/__main__.py -------------------------------------------------------------------------------- /src/tryceratops/analyzers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/analyzers/__init__.py -------------------------------------------------------------------------------- /src/tryceratops/analyzers/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/analyzers/base.py -------------------------------------------------------------------------------- /src/tryceratops/analyzers/call.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/analyzers/call.py -------------------------------------------------------------------------------- /src/tryceratops/analyzers/classdefs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/analyzers/classdefs.py -------------------------------------------------------------------------------- /src/tryceratops/analyzers/conditional.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/analyzers/conditional.py -------------------------------------------------------------------------------- /src/tryceratops/analyzers/exception_block.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/analyzers/exception_block.py -------------------------------------------------------------------------------- /src/tryceratops/analyzers/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/analyzers/exceptions.py -------------------------------------------------------------------------------- /src/tryceratops/analyzers/try_block.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/analyzers/try_block.py -------------------------------------------------------------------------------- /src/tryceratops/files/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/files/__init__.py -------------------------------------------------------------------------------- /src/tryceratops/files/discovery.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/files/discovery.py -------------------------------------------------------------------------------- /src/tryceratops/files/parser.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/files/parser.py -------------------------------------------------------------------------------- /src/tryceratops/fixers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/fixers/__init__.py -------------------------------------------------------------------------------- /src/tryceratops/fixers/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/fixers/base.py -------------------------------------------------------------------------------- /src/tryceratops/fixers/exception_block.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/fixers/exception_block.py -------------------------------------------------------------------------------- /src/tryceratops/fixers/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/fixers/exceptions.py -------------------------------------------------------------------------------- /src/tryceratops/flake_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/flake_plugin.py -------------------------------------------------------------------------------- /src/tryceratops/interfaces.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/interfaces.py -------------------------------------------------------------------------------- /src/tryceratops/logging_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/logging_config.py -------------------------------------------------------------------------------- /src/tryceratops/parsing_types.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/parsing_types.py -------------------------------------------------------------------------------- /src/tryceratops/processors.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/processors.py -------------------------------------------------------------------------------- /src/tryceratops/runners.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/runners.py -------------------------------------------------------------------------------- /src/tryceratops/settings.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/settings.py -------------------------------------------------------------------------------- /src/tryceratops/violations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/violations/__init__.py -------------------------------------------------------------------------------- /src/tryceratops/violations/codes.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/violations/codes.py -------------------------------------------------------------------------------- /src/tryceratops/violations/violations.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilatrova/tryceratops/HEAD/src/tryceratops/violations/violations.py --------------------------------------------------------------------------------