diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index 61c0f88..7aa60c6 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -33,22 +33,26 @@ jobs: pytest: name: Run pytest runs-on: ubuntu-latest + strategy: + matrix: + python-version: + - "3.10" + - "3.11" + - "3.12" + steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - - name: Install Python - uses: actions/setup-python@v5 + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt + - name: Set up Python + run: uv python install - - name: Install openpaygo - run: pip install . - - - name: Install pytest - run: pip install pytest + - name: Install dependencies + run: uv sync - name: Run pytest - run: pytest + run: uv run pytest diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 81c209f..5fd060b 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -16,20 +16,13 @@ jobs: url: https://pypi.org/p/openpaygo steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: 3.x - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools + - name: Install uv + uses: astral-sh/setup-uv@v7 - name: Generate package distribution - run: python3 setup.py sdist + run: uv build - name: Publish package distributions to PyPI uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.gitignore b/.gitignore index 2b65a13..f05a19f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,219 @@ -*.pyc -dist -openpaygo.egg-info -.DS_store \ No newline at end of file +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[codz] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py.cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +# Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +# poetry.lock +# poetry.toml + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. +# https://pdm-project.org/en/latest/usage/project/#working-with-version-control +# pdm.lock +# pdm.toml +.pdm-python +.pdm-build/ + +# pixi +# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control. +# pixi.lock +# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one +# in the .venv directory. It is recommended not to include this directory in version control. +.pixi + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# Redis +*.rdb +*.aof +*.pid + +# RabbitMQ +mnesia/ +rabbitmq/ +rabbitmq-data/ + +# ActiveMQ +activemq-data/ + +# SageMath parsed files +*.sage.py + +# Environments +.env +.envrc +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +# .idea/ + +# Abstra +# Abstra is an AI-powered process automation framework. +# Ignore directories containing user credentials, local state, and settings. +# Learn more at https://abstra.io/docs +.abstra/ + +# Visual Studio Code +# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore +# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore +# and can be added to the global gitignore or merged into this file. However, if you prefer, +# you could uncomment the following to ignore the entire vscode folder +# .vscode/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc + +# Marimo +marimo/_static/ +marimo/_lsp/ +__marimo__/ + +# Streamlit +.streamlit/secrets.toml + +# other +.DS_store diff --git a/README.md b/README.md index 48f2ba7..a8a751b 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,16 @@ The **OpenPAYGO Python library** supports the following features: ## Installing the library -You can install the library by running `pip install openpaygo` or adding `openpaygo` in your requirements.txt file and running `pip install -r requirements.txt`. +### Released version from PyPI + +You can install `OpenPAYGO-python` from [PyPI](https://pypi.org/project/openpaygo/). +For example by running `pip install openpaygo` or adding `openpaygo` as a dependency (`uv add openpaygo`). + +### Development setup + +- Install [`uv`](https://docs.astral.sh/uv/) +- Run `uv install` +- Run `uv tests` ## Getting Started - OpenPAYGO Token diff --git a/pyproject.toml b/pyproject.toml index 862fc93..8638ff9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,65 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "openpaygo" +version = "0.5.5" +description = "OpenPAYGO Python library" +readme = { file = "README.md", content-type = "text/markdown" } +requires-python = ">=3.6" +license = { text = "MIT License" } +keywords = ["paygo"] + +authors = [ + { name = "EnAccess" } +] + +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Operating System :: Unix", + "Operating System :: POSIX", + "Operating System :: MacOS", + "Operating System :: Microsoft :: Windows", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "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", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: Implementation :: CPython", + "Topic :: Utilities", +] + +dependencies = [ + "siphash>=0.0.1", +] + +[dependency-groups] +dev = [ + "pytest>=7.0.1", +] + +[project.urls] +Homepage = "https://enaccess.github.io/OpenPAYGO-docs/" +Documentation = "https://enaccess.github.io/OpenPAYGO-docs/" +Changes = "https://github.com/EnAccess/OpenPAYGO-python/releases" +Source = "https://github.com/EnAccess/OpenPAYGO-python/" +Issues = "https://github.com/EnAccess/OpenPAYGO-python/issues" + +[tool.setuptools] +include-package-data = true +zip-safe = false + +[tool.setuptools.packages.find] +where = ["."] + [tool.ruff] -# Add some rules to ruff's default: +# Add some rules to ruff's default: # - isort: https://docs.astral.sh/ruff/rules/#isort-i # - pep8-naming: https://docs.astral.sh/ruff/rules/#pep8-naming-n select = ["E", "F", "I", "N"] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 25bcba3..0000000 --- a/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -siphash==0.0.1 diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 0bfb521..0000000 --- a/setup.cfg +++ /dev/null @@ -1,43 +0,0 @@ -[metadata] -name = openpaygo -version = 0.5.5 -description = OpenPAYGO Python library -long_description = file: README.md -long_description_content_type = text/markdown -url = https://github.com/EnAccess/OpenPAYGO-python/ -license = MIT License -license_files = LICENSE -project_urls = - Homepage = https://enaccess.github.io/OpenPAYGO-docs/ - Documentation = https://enaccess.github.io/OpenPAYGO-docs/ - Changes = https://github.com/EnAccess/OpenPAYGO-python/releases - Source = https://github.com/EnAccess/OpenPAYGO-python/ - Issues = https://github.com/EnAccess/OpenPAYGO-python/issues -classifiers = - Development Status :: 5 - Production/Stable - Intended Audience :: Developers - License :: OSI Approved :: Apache Software License - Operating System :: Unix - Operating System :: POSIX - Operating System :: MacOS - Operating System :: Microsoft :: Windows - Programming Language :: Python - Programming Language :: Python :: 3 - 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 - Programming Language :: Python :: 3.12 - Programming Language :: Python :: Implementation :: CPython - Topic :: Utilities -keywords = - paygo - -[options] -python_requires = >=3.6 -packages = find: -include_package_data = true -zip_safe = false -install_requires = - siphash >= 0.0.1 diff --git a/setup.py b/setup.py deleted file mode 100644 index 6068493..0000000 --- a/setup.py +++ /dev/null @@ -1,3 +0,0 @@ -from setuptools import setup - -setup()