diff --git a/.github/workflows/pep.yaml b/.github/workflows/style.yaml similarity index 100% rename from .github/workflows/pep.yaml rename to .github/workflows/style.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6df3697..63e242b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,14 +9,10 @@ repos: - id: end-of-file-fixer - id: check-yaml - id: mixed-line-ending -- repo: https://github.com/pycqa/flake8 - rev: '6.1.0' +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.16.1 hooks: - - id: flake8 -- repo: https://github.com/pycqa/isort - rev: '5.12.0' - hooks: - - id: isort + - id: ruff-check - repo: https://github.com/codespell-project/codespell rev: v2.2.6 hooks: diff --git a/README.md b/README.md index 85b26c9..516afea 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![PyPI](https://img.shields.io/pypi/v/inventree)](https://pypi.org/project/inventree/) ![Build Status](https://github.com/inventree/inventree-python/actions/workflows/ci.yaml/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/inventree/inventree-python/badge.svg)](https://coveralls.io/github/inventree/inventree-python) -![PEP](https://github.com/inventree/inventree-python/actions/workflows/pep.yaml/badge.svg) +![Code Style](https://github.com/inventree/inventree-python/actions/workflows/style.yaml/badge.svg) ## InvenTree Python Interface diff --git a/inventree/order.py b/inventree/order.py index 8228c11..9f857f3 100644 --- a/inventree/order.py +++ b/inventree/order.py @@ -4,16 +4,24 @@ """ # Pass PurchaseOrder models through -from inventree.purchase_order import PurchaseOrder # noqa:F401 -from inventree.purchase_order import PurchaseOrderExtraLineItem # noqa:F401 -from inventree.purchase_order import PurchaseOrderLineItem # noqa:F401 +from inventree.purchase_order import ( + PurchaseOrder, # noqa:F401 + PurchaseOrderExtraLineItem, # noqa:F401 + PurchaseOrderLineItem, # noqa:F401 +) + # Pass ReturnOrder models through -from inventree.return_order import ReturnOrder # noqa:F401 -from inventree.return_order import ReturnOrderExtraLineItem # noqa:F401 -from inventree.return_order import ReturnOrderLineItem # noqa:F401 +from inventree.return_order import ( + ReturnOrder, # noqa:F401 + ReturnOrderExtraLineItem, # noqa:F401 + ReturnOrderLineItem, # noqa:F401 +) + # Pass SalesOrder models through -from inventree.sales_order import SalesOrder # noqa:F401 -from inventree.sales_order import SalesOrderExtraLineItem # noqa:F401 -from inventree.sales_order import SalesOrderLineItem # noqa:F401 -from inventree.sales_order import SalesOrderShipment # noqa:F401 -from inventree.sales_order import SalesOrderAllocation # noqa:F401 +from inventree.sales_order import ( + SalesOrder, # noqa:F401 + SalesOrderAllocation, # noqa:F401 + SalesOrderExtraLineItem, # noqa:F401 + SalesOrderLineItem, # noqa:F401 + SalesOrderShipment, # noqa:F401 +) diff --git a/pyproject.toml b/pyproject.toml index bf6c42b..7f2916a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ keywords = [ "stock", ] dependencies = [ - "requests>=2.27.0", + "requests>=2.27.0", "urllib3>=2.3.0", ] [project.optional-dependencies] @@ -34,19 +34,21 @@ dependencies = [ Homepage = "https://github.com/inventree/inventree-python/" [tool.setuptools.dynamic] -version = {attr = "inventree.base.INVENTREE_PYTHON_VERSION"} +version = {attr = "inventree.base.INVENTREE_PYTHON_VERSION"} [tool.setuptools] packages = ["inventree"] -[tool.flake8] -ignore =[ - 'C901', - # - W293 - blank lines contain whitespace - 'W293', - # - E501 - line too long (82 characters) - 'E501', - 'N802'] -exclude = ['.git','__pycache__','inventree_server','dist','build','test.py'] -max-complexity = 20 +[tool.ruff] +extend-exclude = ["inventree_server", "test.py"] + +[tool.ruff.lint] +# E/W: pycodestyle, F: pyflakes, I: isort, C90: mccabe complexity +select = ["E", "W", "F", "I", "C90"] +ignore = [ + "E501", # line too long + "W293", # blank line contains whitespace +] +[tool.ruff.lint.mccabe] +max-complexity = 20 diff --git a/requirements.txt b/requirements.txt index 4f1a39d..4d55638 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ requests[socks]>=2.21.0 # Python HTTP for humans with proxy support -flake8==7.1.2 # PEP checking -flake8-pyproject==1.2.3 # PEP 621 support +ruff==0.16.1 # Linting / code style wheel>=0.34.2 # Building package invoke>=1.4.0 coverage>=6.4.1 # Run tests, measure coverage diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index e3ab9f2..0000000 --- a/setup.cfg +++ /dev/null @@ -1,10 +0,0 @@ -[flake8] -ignore = - C901, - # - W293 - blank lines contain whitespace - W293, - # - E501 - line too long (82 characters) - E501 - N802 -exclude = .git,.eggs,__pycache__,inventree_server,dist,build,test.py -max-complexity = 20 diff --git a/tasks.py b/tasks.py index 5db905d..2378dc0 100644 --- a/tasks.py +++ b/tasks.py @@ -19,8 +19,8 @@ def style(c): Run PEP style checks against the codebase """ - print("Running PEP code style checks...") - c.run('flake8 .') + print("Running ruff code style checks...") + c.run('ruff check .') @task diff --git a/test/test_api.py b/test/test_api.py index 277c5c1..5549130 100644 --- a/test/test_api.py +++ b/test/test_api.py @@ -8,10 +8,12 @@ sys.path.append(os.path.abspath(os.path.dirname(__file__))) -from inventree import api # noqa: E402 -from inventree import base # noqa: E402 -from inventree import part # noqa: E402 -from inventree import stock # noqa: E402 +from inventree import ( + api, # noqa: E402 + base, # noqa: E402 + part, # noqa: E402 + stock, # noqa: E402 +) SERVER = os.environ.get('INVENTREE_PYTHON_TEST_SERVER', 'http://127.0.0.1:12345') USERNAME = os.environ.get('INVENTREE_PYTHON_TEST_USERNAME', 'testuser') diff --git a/test/test_company.py b/test/test_company.py index db8d4a8..a36e6a4 100644 --- a/test/test_company.py +++ b/test/test_company.py @@ -12,8 +12,8 @@ from test_api import InvenTreeTestCase # noqa: E402 -from inventree.base import Attachment # noqa: E402 from inventree import company # noqa: E402 +from inventree.base import Attachment # noqa: E402 from inventree.part import Part # noqa: E402 diff --git a/test/test_order.py b/test/test_order.py index ce5fcba..b93c0ad 100644 --- a/test/test_order.py +++ b/test/test_order.py @@ -9,10 +9,12 @@ from test_api import InvenTreeTestCase # noqa: E402 -from inventree import company # noqa: E402 -from inventree import order # noqa: E402 -from inventree import part # noqa: E402 -from inventree import stock # noqa: E402 +from inventree import ( + company, # noqa: E402 + order, # noqa: E402 + part, # noqa: E402 + stock, # noqa: E402 +) from inventree.base import Attachment # noqa: E402 diff --git a/test/test_part.py b/test/test_part.py index 4d42a3d..94b6b4c 100644 --- a/test/test_part.py +++ b/test/test_part.py @@ -15,13 +15,18 @@ from test_api import InvenTreeTestCase # noqa: E402 -from inventree.base import (Attachment, Parameter, # noqa: E402 - ParameterTemplate) +from inventree.base import Attachment, Parameter, ParameterTemplate # noqa: E402 from inventree.company import SupplierPart # noqa: E402 -from inventree.part import InternalPrice # noqa: E402 -from inventree.part import (BomItem, Part, PartCategory, # noqa: E402 - PartCategoryParameterTemplate, PartParameter, - PartRelated, PartTestTemplate) +from inventree.part import ( # noqa: E402 + BomItem, + InternalPrice, # noqa: E402 + Part, + PartCategory, + PartCategoryParameterTemplate, + PartParameter, + PartRelated, + PartTestTemplate, +) from inventree.stock import StockItem # noqa: E402 diff --git a/test/test_stock.py b/test/test_stock.py index 253e0a8..f3ca2a0 100644 --- a/test/test_stock.py +++ b/test/test_stock.py @@ -9,8 +9,10 @@ from test_api import InvenTreeTestCase # noqa: E402 -from inventree import company # noqa: E402 -from inventree import part # noqa: E402 +from inventree import ( + company, # noqa: E402 + part, # noqa: E402 +) from inventree.stock import StockItem, StockLocation # noqa: E402