A linter to manage your exception like a PRO!
Project description
Manage your exceptions in Python like a PRO
Currently in BETA. Inspired by this blog post.
I shared the building process of this tool here.
“For those who like dinosaurs 🦖 and clean try/except ✨ blocks.”
Installation and usage
Installation
pip install tryceratops
Usage
tryceratops [filename or dir...]
You can enable experimental analyzers by running:
tryceratops --experimental [filename or dir...]
You can ignore specific violations by using: --ignore TCXXX
repeatedly:
tryceratops --ignore TC201 --ignore TC202 [filename or dir...]
You can exclude dirs by using: --exclude dir/path
repeatedly:
tryceratops --exclude tests --exclude .venv [filename or dir...]
flake8
Plugin
🦖 Tryceratops is also a plugin for flake8
, so you can:
❯ flake8 --select TC src/tests/samples/violations/call_raise_vanilla.py
src/tests/samples/violations/call_raise_vanilla.py:13:9: TC002 Create your own exception
src/tests/samples/violations/call_raise_vanilla.py:13:9: TC003 Avoid specifying long messages outside the exception class
src/tests/samples/violations/call_raise_vanilla.py:21:9: TC201 Simply use 'raise' without specifying exception object again
Violations
All violations and its descriptions can be found in docs.
Ignoring violations
If you want to ignore a violation in a specific file, you can either:
- Add a comment with
notc
to the top of the file you want to ignore - Add a comment with
notc
to the line you want to ignore - Add a comment with
notc: CODE
to the line you want to ignore a specific violation
Example:
def verbose_reraise_1():
try:
a = 1
except Exception as ex:
raise ex # notc: TC202
Configuration
You can set up a pyproject.toml
file to set rules.
This is useful to avoid reusing the same CLI flags over and over again and helps to define the structure of your project.
Example:
[tool.tryceratops]
exclude = ["samples"]
ignore = ["TC002", "TC200", "TC300"]
experimental = true
CLI flags always overwrite the config file.
Pre-commit
If you wish to use pre-commit, add this:
- repo: https://github.com/guilatrova/tryceratops
rev: v0.2.4
hooks:
- id: tryceratops
License
MIT
Credits
Thanks to God for the inspiration 🙌 ☁️ ☀️
Logo icon was made by https://www.freepik.com
The black project for insights.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for tryceratops-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e2043ba28ba7ad006a71525cde7a4c2f30849bf7eda863bc46c47e448072662 |
|
MD5 | ee27ee12138889e5e8226ffe90c24d75 |
|
BLAKE2b-256 | e8d7db86e94b20ee7dcb2dc1668d47aacdf018ed853464dd76cb498d5f7338e7 |