[tool.poetry] name = "aristaproto" version = "0.1.2" description = "Arista Protobuf / Python gRPC bindings generator & library" authors = ["Arista Networks "] readme = "README.md" repository = "https://github.com/aristanetworks/python-aristaproto" keywords = ["protobuf", "gRPC", "aristanetworks", "arista"] license = "MIT" packages = [ { include = "aristaproto", from = "src" } ] [tool.poetry.dependencies] python = "^3.9" black = { version = ">=23.1.0", optional = true } grpclib = "^0.4.1" jinja2 = { version = ">=3.0.3", optional = true } python-dateutil = "^2.8" isort = {version = "^5.11.5", optional = true} typing-extensions = "^4.7.1" betterproto-rust-codec = { version = "0.1.1", optional = true } [tool.poetry.group.dev.dependencies] asv = "^0.4.2" bpython = "^0.19" jinja2 = ">=3.0.3" mypy = "^0.930" sphinx = "3.1.2" sphinx-rtd-theme = "0.5.0" pre-commit = "^2.17.0" grpcio-tools = "^1.54.2" tox = "^4.0.0" [tool.poetry.group.test.dependencies] poethepoet = ">=0.9.0" pytest = "^7.3.2" pytest-asyncio = "^0.23.0" pytest-cov = "^2.9.0" pytest-mock = "^3.12.0" pydantic = ">=1.8.0,<2" protobuf = "^4" cachelib = "^0.10.2" tomlkit = ">=0.7.0" [tool.poetry.scripts] protoc-gen-python_aristaproto = "aristaproto.plugin:main" [tool.poetry.extras] compiler = ["black", "isort", "jinja2"] rust-codec = ["betterproto-rust-codec"] # Dev workflow tasks [tool.poe.tasks.generate] script = "tests.generate:main" help = "Generate test cases (do this once before running test)" [tool.poe.tasks.test] cmd = "pytest" help = "Run tests" [tool.poe.tasks.types] cmd = "mypy src --ignore-missing-imports" help = "Check types with mypy" [tool.poe.tasks] _black = "black . --exclude tests/output_ --target-version py310" _isort = "isort . --extend-skip-glob 'tests/output_*/**/*'" [tool.poe.tasks.format] sequence = ["_black", "_isort"] help = "Apply black and isort formatting to source code" [tool.poe.tasks.docs] cmd = "sphinx-build docs docs/build" help = "Build the sphinx docs" [tool.poe.tasks.bench] shell = "asv run master^! && asv run HEAD^! && asv compare master HEAD" help = "Benchmark current commit vs. master branch" [tool.poe.tasks.clean] cmd = """ rm -rf .asv .coverage .mypy_cache .pytest_cache dist aristaproto.egg-info **/__pycache__ testsoutput_* """ help = "Clean out generated files from the workspace" [tool.poe.tasks.generate_lib] cmd = """ protoc --plugin=protoc-gen-custom=src/aristaproto/plugin/main.py --custom_opt=INCLUDE_GOOGLE --custom_out=src/aristaproto/lib/std -I /usr/local/include/ /usr/local/include/google/protobuf/**/*.proto """ help = "Regenerate the types in aristaproto.lib.std.google" # CI tasks [tool.poe.tasks.full-test] shell = "poe generate && tox" help = "Run tests with multiple pythons" [tool.poe.tasks.check-style] cmd = "black . --check --diff" help = "Check if code style is correct" [tool.isort] py_version = 37 profile = "black" force_single_line = false combine_as_imports = true lines_after_imports = 2 include_trailing_comma = true force_grid_wrap = 2 src_paths = ["src", "tests"] [tool.black] target-version = ['py37'] [tool.doc8] paths = ["docs"] max_line_length = 88 [tool.doc8.ignore_path_errors] "docs/migrating.rst" = [ "D001", # contains table which is longer than 88 characters long ] [tool.coverage.run] omit = ["aristaproto/tests/*"] [tool.tox] legacy_tox_ini = """ [tox] requires = tox>=4.2 tox-poetry-installer[poetry]==1.0.0b1 env_list = py311 py39 [testenv] commands = pytest {posargs: --cov aristaproto} poetry_dep_groups = test require_locked_deps = true require_poetry = true """ [build-system] requires = ["poetry-core>=1.0.0,<2"] build-backend = "poetry.core.masonry.api"