diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml new file mode 100644 index 0000000..c3ec76a --- /dev/null +++ b/.github/workflows/cd.yaml @@ -0,0 +1,96 @@ +name: CD + +on: + push: + tags: + - '*' + +jobs: + build: + name: Build distribution + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install pypa/build + run: >- + python3 -m + pip install + build + --user + - name: Build a binary wheel and a source tarball + run: python3 -m build + - name: Store the distribution packages + uses: actions/upload-artifact@v3 + with: + name: python-package-distributions + path: dist/ + + publish-to-pypi: + name: >- + Publish Python distribution 📦 to PyPI + if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes + needs: + - build + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/wpodnet-pytorch + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + + steps: + - name: Download all the dists + uses: actions/download-artifact@v3 + with: + name: python-package-distributions + path: dist/ + - name: Publish distribution to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + + github-release: + name: >- + Sign the Python distribution with Sigstore + and upload them to GitHub Release + needs: + - publish-to-pypi + runs-on: ubuntu-latest + + permissions: + contents: write # IMPORTANT: mandatory for making GitHub Releases + id-token: write # IMPORTANT: mandatory for sigstore + + steps: + - name: Download all the dists + uses: actions/download-artifact@v3 + with: + name: python-package-distributions + path: dist/ + - name: Sign the dists with Sigstore + uses: sigstore/gh-action-sigstore-python@v1.2.3 + with: + inputs: >- + ./dist/*.tar.gz + ./dist/*.whl + - name: Create GitHub Release + env: + GITHUB_TOKEN: ${{ github.token }} + run: >- + gh release create + '${{ github.ref_name }}' + --repo '${{ github.repository }}' + --notes "" + - name: Upload artifact signatures to GitHub Release + env: + GITHUB_TOKEN: ${{ github.token }} + # Upload to GitHub Release using the `gh` CLI. + # `dist/` contains the built packages, and the + # sigstore-produced signatures and certificates. + run: >- + gh release upload + '${{ github.ref_name }}' dist/** + --repo '${{ github.repository }}' diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..37925aa --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,38 @@ +name: CI + +on: [push] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install dependencies + run: | + pip install --upgrade pip + pip install -r requirements.txt + - name: Lint with Ruff + run: | + pip install ruff + ruff -- --format=github . + continue-on-error: true + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install dependencies + run: | + pip install --upgrade pip + pip install -r requirements.txt + - name: Test with pytest + run: | + pip install pytest pytest-cov pytest-mock + python -m pytest --junitxml=junit/test-results.xml --cov --cov-report=xml --cov-report=html \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..a9b9755 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,58 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + +[project] +name = "wpodnet-pytorch" +dynamic = ["dependencies", "version"] +description = "The implementation of ECCV 2018 paper \"License Plate Detection and Recognition in Unconstrained Scenarios\" in PyTorch" +readme = "README.md" +requires-python = ">=3.7" +keywords = [ + "python", + "ai", + "computer-vision", + "deep-learning", + "torch", + "object-detection", + "license-plate-recognition", + "wpod", + "wpod-net", +] +authors = [{ name = "Pandede" }] +maintainers = [{ name = "Pandede" }] +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: Education", + "Intended Audience :: Science/Research", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Software Development", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Topic :: Scientific/Engineering :: Image Recognition", + "Operating System :: POSIX :: Linux", + "Operating System :: MacOS", + "Operating System :: Microsoft :: Windows", +] + +[tool.setuptools] +packages = { find = { where = ["."], include = ["wpodnet", "wpodnet.*"] } } + +[tool.setuptools.dynamic] +dependencies = { file = "requirements.txt" } +version = { attr = "wpodnet.__version__" } + +[project.optional-dependencies] +dev = [ + "pytest" +] + +[project.urls] +"Source" = "https://github.com/Pandede/WPODNet-Pytorch" diff --git a/requirements.txt b/requirements.txt index ec18478..cd8894f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,4 @@ numpy -Pillow \ No newline at end of file +Pillow +torch +torchvision \ No newline at end of file diff --git a/wpodnet/__init__.py b/wpodnet/__init__.py index e69de29..a085870 100644 --- a/wpodnet/__init__.py +++ b/wpodnet/__init__.py @@ -0,0 +1,7 @@ +__version__ = '1.0.2' + +from .backend import Prediction, Predictor + +__all__ = [ + 'Prediction', 'Predictor' +] \ No newline at end of file