diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 53b9328..070eded 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -1,58 +1,55 @@ # This GitHub workflow is only needed for python package releases which are supposed to be published on pypi. - - -# This workflows will upload a Python Package using Twine when a release is created +# This workflow will upload a Python Package using Twine when a release is created # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries -# name: Upload Python Package +name: Upload Python Package -# on: -# release: -# branches: main -# types: [created, edited] +on: + release: + types: [ created, edited ] -# jobs: -# tests: -# if: startsWith(github.ref, 'refs/tags/v') -# runs-on: ${{ matrix.os }} -# strategy: -# matrix: -# python-version: ["3.11"] -# os: [ubuntu-latest] -# steps: -# - uses: actions/checkout@v2 -# - name: Set up Python ${{ matrix.python-version }} -# uses: actions/setup-python@v2 -# with: -# python-version: ${{ matrix.python-version }} -# - name: Install tox -# run: | -# python -m pip install --upgrade pip -# pip install tox -# - name: Run tox -# run: | -# tox +jobs: + tests: + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ${{ matrix.os }} + strategy: + matrix: + python-version: [ "3.11" ] + os: [ ubuntu-latest ] + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install tox + run: | + python -m pip install --upgrade pip + pip install tox + - name: Run tox + run: | + tox -# build-n-publish: -# name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI -# runs-on: ubuntu-latest -# needs: tests -# steps: -# - uses: actions/checkout@v2 -# - name: Set up Python -# uses: actions/setup-python@v2 -# with: -# python-version: ${{ matrix.python-version }} -# - name: Install dependencies -# run: | -# python -m pip install --upgrade pip -# pip install setuptools setuptools-scm wheel twine -# - name: Build a binary wheel and a source tarball -# run: | -# python setup.py sdist bdist_wheel -# - name: Publish distribution 📦 to PyPI -# if: startsWith(github.ref, 'refs/tags/v') -# uses: pypa/gh-action-pypi-publish@release/v1 -# with: -# user: __token__ -# password: ${{ secrets.PYPI_API_TOKEN }} + build-n-publish: + name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI + runs-on: ubuntu-latest + needs: tests + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r dev_requirements/requirements-packaging.txt + - name: Build a binary wheel and a source tarball + run: | + python -m build + - name: Publish distribution 📦 to PyPI + if: startsWith(github.ref, 'refs/tags/v') + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/README.md b/README.md index f08df0d..9cca0cd 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,14 @@ This package provides functionalities to determine the values of generic type va As of now, it only supports two functions: `get_type_vars` and `get_filled_type`. These functions work also with pydantic generic models (only tested with pydantic > v2.3.0). +### Installation +The package is [available on PyPI](https://pypi.org/project/python-generics/): +```bash +pip install python-generics +``` + +### Usage + The `get_type_vars` function returns a tuple of all type variables for a given generic type. The `TypeVar`s are determined by `Generic` if the type is a subclass of `Generic`. Otherwise, they are determined by the indexed supertypes (the order of the returned tuple is the lexicographical in the list of the supertypes).