From 26b9e628c19d83fb6051c7a39a264791b7866708 Mon Sep 17 00:00:00 2001 From: Mario Hernandez Date: Fri, 13 Dec 2024 18:08:22 -0300 Subject: [PATCH] tests --- .github/workflows/tests_coverage.yml | 42 +++- ejemplo/README.md | 35 --- ejemplo/pyproject.toml | 16 -- pyproject.toml | 28 ++- tests/django_settings.py | 14 ++ tests/test_flowprovider.py | 60 ++++- tienda_pruebas/.python-version | 1 + .../__init__.py => tienda_pruebas/README.md | 0 tienda_pruebas/django_payments_chile | 1 + {ejemplo => tienda_pruebas}/manage.py | 0 .../pagos}/__init__.py | 0 {ejemplo => tienda_pruebas}/pagos/admin.py | 0 {ejemplo => tienda_pruebas}/pagos/apps.py | 0 .../pagos/migrations}/__init__.py | 0 {ejemplo => tienda_pruebas}/pagos/models.py | 0 {ejemplo => tienda_pruebas}/pagos/tests.py | 0 {ejemplo => tienda_pruebas}/pagos/views.py | 0 tienda_pruebas/pyproject.toml | 7 + tienda_pruebas/tienda/__init__.py | 0 {ejemplo => tienda_pruebas}/tienda/asgi.py | 0 .../tienda/settings.py | 0 {ejemplo => tienda_pruebas}/tienda/urls.py | 0 {ejemplo => tienda_pruebas}/tienda/wsgi.py | 0 tienda_pruebas/uv.lock | 217 ++++++++++++++++++ tox.ini | 40 ++++ 25 files changed, 388 insertions(+), 73 deletions(-) delete mode 100644 ejemplo/README.md delete mode 100644 ejemplo/pyproject.toml create mode 100644 tienda_pruebas/.python-version rename ejemplo/pagos/__init__.py => tienda_pruebas/README.md (100%) create mode 120000 tienda_pruebas/django_payments_chile rename {ejemplo => tienda_pruebas}/manage.py (100%) rename {ejemplo/pagos/migrations => tienda_pruebas/pagos}/__init__.py (100%) rename {ejemplo => tienda_pruebas}/pagos/admin.py (100%) rename {ejemplo => tienda_pruebas}/pagos/apps.py (100%) rename {ejemplo/tienda => tienda_pruebas/pagos/migrations}/__init__.py (100%) rename {ejemplo => tienda_pruebas}/pagos/models.py (100%) rename {ejemplo => tienda_pruebas}/pagos/tests.py (100%) rename {ejemplo => tienda_pruebas}/pagos/views.py (100%) create mode 100644 tienda_pruebas/pyproject.toml create mode 100644 tienda_pruebas/tienda/__init__.py rename {ejemplo => tienda_pruebas}/tienda/asgi.py (100%) rename {ejemplo => tienda_pruebas}/tienda/settings.py (100%) rename {ejemplo => tienda_pruebas}/tienda/urls.py (100%) rename {ejemplo => tienda_pruebas}/tienda/wsgi.py (100%) create mode 100644 tienda_pruebas/uv.lock create mode 100644 tox.ini diff --git a/.github/workflows/tests_coverage.yml b/.github/workflows/tests_coverage.yml index 898210f..41c3db3 100644 --- a/.github/workflows/tests_coverage.yml +++ b/.github/workflows/tests_coverage.yml @@ -7,14 +7,15 @@ on: branches: ["main"] jobs: - tests: + build: + name: build (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }}) + runs-on: ubuntu-latest strategy: fail-fast: false + max-parallel: 5 matrix: python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] - poetry-version: ["2.0.0.dev0"] - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} + django-version: ["4.2", "5.0", "5.1", "main"] steps: - uses: actions/checkout@v4 @@ -22,16 +23,33 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - - name: Set Up Poetry - uses: abatilo/actions-poetry@v3 + + - name: Get pip cache dir + id: pip-cache + run: | + echo "::set-output name=dir::$(pip cache dir)" + + - name: Cache + uses: actions/cache@v4 with: - poetry-version: ${{ matrix.poetry-version }} - - name: Install django-payments-chile - run: poetry install --with dev - - name: Test - run: poetry run tox + path: ${{ steps.pip-cache.outputs.dir }} + key: ${{ matrix.python-version }}-v1-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/tox.ini') }} + restore-keys: | + ${{ matrix.python-version }}-v1- + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade tox tox-gh-actions + + - name: Tox tests + run: | + tox -v + env: + DJANGO: ${{ matrix.django-version }} + - name: Coverage report (xml) - run: poetry run coverage xml + run: coverage xml - name: Run codacy-coverage-reporter uses: codacy/codacy-coverage-reporter-action@v1 with: diff --git a/ejemplo/README.md b/ejemplo/README.md deleted file mode 100644 index 4ad4c9d..0000000 --- a/ejemplo/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Ejemplo para `django-payments-chile` - -Este repositorio contiene un ejemplo de cómo utilizar `django-payments-chile`, una extensión de `django-payments` que permite la integración de varios proveedores de pago en Chile. - -## Requisitos - -- Python 3.10 o superior -- Poetry (para gestionar dependencias) - -## Instalación - -Sigue los pasos a continuación para poner en marcha el proyecto de ejemplo: - -1. Instala las dependencias utilizando `poetry`: - - ```bash - poetry install -E todo - ``` - -2. Aplica las migraciones para preparar la base de datos: - - ```bash - poetry run python manage.py makemigrations - poetry run python manage.py migrate - ``` - -3. Inicia el servidor de desarrollo: - - ```bash - poetry run python manage.py runserver - ``` - -## Configuración adicional - -Este proyecto ya incluye configuraciones predeterminadas para un entorno local. Asegúrate de modificar cualquier valor en el archivo `settings.py` si es necesario, como el dominio en `PAYMENT_HOST`, y las credenciales de los proveedores de pago en `PAYMENT_VARIANTS`. diff --git a/ejemplo/pyproject.toml b/ejemplo/pyproject.toml deleted file mode 100644 index 2c54bfd..0000000 --- a/ejemplo/pyproject.toml +++ /dev/null @@ -1,16 +0,0 @@ -[tool.poetry] -name = "django-payments-chile-ejemplo" -version = "0.1.0" -description = "" -authors = ["Mario Hernandez "] -readme = "README.md" -package-mode = false - -[tool.poetry.dependencies] -python = "^3.10" -django-payments-chile = "^2024.9.29" - - -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" diff --git a/pyproject.toml b/pyproject.toml index 8370c3b..d55fec8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ classifiers = [ "Operating System :: OS Independent", ] -dependencies = ["django-payments>=2.0, <4.0", "requests"] +dependencies = ["django-payments>=2.0, <4.0", "requests", "pyflowcl"] [project.urls] Homepage = "https://mariofix.github.io/django-payments-chile/" @@ -78,11 +78,7 @@ dev = [ [tool.setuptools.packages.find] -include = ["django_payments_chile", "tests", "ejemplo"] - -[tool.pytest.ini_options] -DJANGO_SETTINGS_MODULE = "tests.django_settings" -addopts = "--cov=django_payments_chile/ --cov-branch --cov-report=term-missing --cov-report=xml" +include = ["django_payments_chile", "tests"] [tool.black] line-length = 119 @@ -93,4 +89,22 @@ profile = "black" line_length = 119 multi_line_output = 5 py_version = 39 -src_paths = ["django_payments_chile", "tests", "ejemplo"] +src_paths = ["django_payments_chile", "tests"] + + +[tool.coverage.report] +exclude_lines = ["if TYPE_CHECKING:"] + +[tool.django-stubs] +django_settings_module = "tests.django_settings" + +[tool.pytest.ini_options] +addopts = [ + "--cov=django_payments_chile", + "--cov-report=term-missing:skip-covered", + "--no-cov-on-fail", + "--color=yes", +] +testpaths = "tests" +DJANGO_SETTINGS_MODULE = "tests.django_settings" +pythonpath = "." diff --git a/tests/django_settings.py b/tests/django_settings.py index e69de29..07ea115 100644 --- a/tests/django_settings.py +++ b/tests/django_settings.py @@ -0,0 +1,14 @@ +import os + +PROJECT_ROOT = os.path.normpath(os.path.join(os.path.dirname(__file__), "tienda_pruebas")) +TEMPLATES = [ + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [os.path.join(PROJECT_ROOT, "templates")], + } +] +USE_TZ = True +SECRET_KEY = "NOTREALLY" +PAYMENT_HOST = "example.com" + +INSTALLED_APPS = ["payments", "django.contrib.sites"] diff --git a/tests/test_flowprovider.py b/tests/test_flowprovider.py index 46ac7f7..ed338de 100644 --- a/tests/test_flowprovider.py +++ b/tests/test_flowprovider.py @@ -1,5 +1,59 @@ -from django_payments_chile.FlowProvider import FlowProvider +from unittest import TestCase +from unittest.mock import Mock +from unittest.mock import patch +from payments import PaymentStatus +from payments import RedirectNeeded -def test_provider_components(): - assert FlowProvider == "2024.9.30" +from django_payments_chile import FlowProvider + +API_KEY = "flow_test_key" +API_SECRET = "flow_test_secret" + + +class payment_attrs: + session = dict + + +class Payment(Mock): + id = 1 + description = "payment" + currency = "CLP" + delivery = 0 + status = PaymentStatus.WAITING + message = None + tax = 0 + total = 5000 + captured_amount = 0 + transaction_id = None + billing_email = "correo@usuario.com" + attrs = payment_attrs() + + def change_status(self, status, message=""): + self.status = status + self.message = message + + def get_failure_url(self): + return "http://mi-app.cl/error" + + def get_process_url(self): + return "http://mi-app.cl/process" + + def get_purchased_items(self): + return [] + + def get_success_url(self): + return "http://mi-app.cl/exito" + + +class TestStripeProviderV3(TestCase): + def test_provider_create_session_success(self): + payment = Payment() + provider = FlowProvider(api_key=API_KEY, api_secret=API_SECRET) + return_value = {"url": "https://flow.cl", "token": "TOKEN_ID", "flowOrder": "ORDER_ID"} + with patch("stripe.checkout.Session.create", return_value=return_value): + with self.assertRaises(RedirectNeeded): + provider.get_form(payment) + self.assertTrue("url" in payment.attrs.session) + self.assertTrue("token" in payment.attrs.session) + self.assertEqual(payment.status, PaymentStatus.WAITING) diff --git a/tienda_pruebas/.python-version b/tienda_pruebas/.python-version new file mode 100644 index 0000000..c8cfe39 --- /dev/null +++ b/tienda_pruebas/.python-version @@ -0,0 +1 @@ +3.10 diff --git a/ejemplo/pagos/__init__.py b/tienda_pruebas/README.md similarity index 100% rename from ejemplo/pagos/__init__.py rename to tienda_pruebas/README.md diff --git a/tienda_pruebas/django_payments_chile b/tienda_pruebas/django_payments_chile new file mode 120000 index 0000000..f0cd0e1 --- /dev/null +++ b/tienda_pruebas/django_payments_chile @@ -0,0 +1 @@ +../django_payments_chile \ No newline at end of file diff --git a/ejemplo/manage.py b/tienda_pruebas/manage.py similarity index 100% rename from ejemplo/manage.py rename to tienda_pruebas/manage.py diff --git a/ejemplo/pagos/migrations/__init__.py b/tienda_pruebas/pagos/__init__.py similarity index 100% rename from ejemplo/pagos/migrations/__init__.py rename to tienda_pruebas/pagos/__init__.py diff --git a/ejemplo/pagos/admin.py b/tienda_pruebas/pagos/admin.py similarity index 100% rename from ejemplo/pagos/admin.py rename to tienda_pruebas/pagos/admin.py diff --git a/ejemplo/pagos/apps.py b/tienda_pruebas/pagos/apps.py similarity index 100% rename from ejemplo/pagos/apps.py rename to tienda_pruebas/pagos/apps.py diff --git a/ejemplo/tienda/__init__.py b/tienda_pruebas/pagos/migrations/__init__.py similarity index 100% rename from ejemplo/tienda/__init__.py rename to tienda_pruebas/pagos/migrations/__init__.py diff --git a/ejemplo/pagos/models.py b/tienda_pruebas/pagos/models.py similarity index 100% rename from ejemplo/pagos/models.py rename to tienda_pruebas/pagos/models.py diff --git a/ejemplo/pagos/tests.py b/tienda_pruebas/pagos/tests.py similarity index 100% rename from ejemplo/pagos/tests.py rename to tienda_pruebas/pagos/tests.py diff --git a/ejemplo/pagos/views.py b/tienda_pruebas/pagos/views.py similarity index 100% rename from ejemplo/pagos/views.py rename to tienda_pruebas/pagos/views.py diff --git a/tienda_pruebas/pyproject.toml b/tienda_pruebas/pyproject.toml new file mode 100644 index 0000000..505a595 --- /dev/null +++ b/tienda_pruebas/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "tienda-pruebas" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.10" +dependencies = ["django-payments>=2.0,<4.0"] diff --git a/tienda_pruebas/tienda/__init__.py b/tienda_pruebas/tienda/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ejemplo/tienda/asgi.py b/tienda_pruebas/tienda/asgi.py similarity index 100% rename from ejemplo/tienda/asgi.py rename to tienda_pruebas/tienda/asgi.py diff --git a/ejemplo/tienda/settings.py b/tienda_pruebas/tienda/settings.py similarity index 100% rename from ejemplo/tienda/settings.py rename to tienda_pruebas/tienda/settings.py diff --git a/ejemplo/tienda/urls.py b/tienda_pruebas/tienda/urls.py similarity index 100% rename from ejemplo/tienda/urls.py rename to tienda_pruebas/tienda/urls.py diff --git a/ejemplo/tienda/wsgi.py b/tienda_pruebas/tienda/wsgi.py similarity index 100% rename from ejemplo/tienda/wsgi.py rename to tienda_pruebas/tienda/wsgi.py diff --git a/tienda_pruebas/uv.lock b/tienda_pruebas/uv.lock new file mode 100644 index 0000000..b71602b --- /dev/null +++ b/tienda_pruebas/uv.lock @@ -0,0 +1,217 @@ +version = 1 +requires-python = ">=3.10" + +[[package]] +name = "asgiref" +version = "3.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/38/b3395cc9ad1b56d2ddac9970bc8f4141312dbaec28bc7c218b0dfafd0f42/asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590", size = 35186 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47", size = 23828 }, +] + +[[package]] +name = "certifi" +version = "2024.8.30" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/8b/825cc84cf13a28bfbcba7c416ec22bf85a9584971be15b21dd8300c65b7f/charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6", size = 196363 }, + { url = "https://files.pythonhosted.org/packages/23/81/d7eef6a99e42c77f444fdd7bc894b0ceca6c3a95c51239e74a722039521c/charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b", size = 125639 }, + { url = "https://files.pythonhosted.org/packages/21/67/b4564d81f48042f520c948abac7079356e94b30cb8ffb22e747532cf469d/charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99", size = 120451 }, + { url = "https://files.pythonhosted.org/packages/c2/72/12a7f0943dd71fb5b4e7b55c41327ac0a1663046a868ee4d0d8e9c369b85/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca", size = 140041 }, + { url = "https://files.pythonhosted.org/packages/67/56/fa28c2c3e31217c4c52158537a2cf5d98a6c1e89d31faf476c89391cd16b/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d", size = 150333 }, + { url = "https://files.pythonhosted.org/packages/f9/d2/466a9be1f32d89eb1554cf84073a5ed9262047acee1ab39cbaefc19635d2/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7", size = 142921 }, + { url = "https://files.pythonhosted.org/packages/f8/01/344ec40cf5d85c1da3c1f57566c59e0c9b56bcc5566c08804a95a6cc8257/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3", size = 144785 }, + { url = "https://files.pythonhosted.org/packages/73/8b/2102692cb6d7e9f03b9a33a710e0164cadfce312872e3efc7cfe22ed26b4/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907", size = 146631 }, + { url = "https://files.pythonhosted.org/packages/d8/96/cc2c1b5d994119ce9f088a9a0c3ebd489d360a2eb058e2c8049f27092847/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b", size = 140867 }, + { url = "https://files.pythonhosted.org/packages/c9/27/cde291783715b8ec30a61c810d0120411844bc4c23b50189b81188b273db/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912", size = 149273 }, + { url = "https://files.pythonhosted.org/packages/3a/a4/8633b0fc1a2d1834d5393dafecce4a1cc56727bfd82b4dc18fc92f0d3cc3/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95", size = 152437 }, + { url = "https://files.pythonhosted.org/packages/64/ea/69af161062166b5975ccbb0961fd2384853190c70786f288684490913bf5/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e", size = 150087 }, + { url = "https://files.pythonhosted.org/packages/3b/fd/e60a9d9fd967f4ad5a92810138192f825d77b4fa2a557990fd575a47695b/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe", size = 145142 }, + { url = "https://files.pythonhosted.org/packages/6d/02/8cb0988a1e49ac9ce2eed1e07b77ff118f2923e9ebd0ede41ba85f2dcb04/charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc", size = 94701 }, + { url = "https://files.pythonhosted.org/packages/d6/20/f1d4670a8a723c46be695dff449d86d6092916f9e99c53051954ee33a1bc/charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749", size = 102191 }, + { url = "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", size = 193339 }, + { url = "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", size = 124366 }, + { url = "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", size = 118874 }, + { url = "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", size = 138243 }, + { url = "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", size = 148676 }, + { url = "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", size = 141289 }, + { url = "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", size = 142585 }, + { url = "https://files.pythonhosted.org/packages/3b/a0/a68980ab8a1f45a36d9745d35049c1af57d27255eff8c907e3add84cf68f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", size = 144408 }, + { url = "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", size = 139076 }, + { url = "https://files.pythonhosted.org/packages/fb/9d/9c13753a5a6e0db4a0a6edb1cef7aee39859177b64e1a1e748a6e3ba62c2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", size = 146874 }, + { url = "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", size = 150871 }, + { url = "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", size = 148546 }, + { url = "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", size = 143048 }, + { url = "https://files.pythonhosted.org/packages/01/f8/38842422988b795220eb8038745d27a675ce066e2ada79516c118f291f07/charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", size = 94389 }, + { url = "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", size = 101752 }, + { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, + { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, + { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, + { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, + { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, + { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, + { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, + { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, + { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, + { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, + { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, + { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, + { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, + { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, + { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, + { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617 }, + { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310 }, + { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126 }, + { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342 }, + { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383 }, + { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214 }, + { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104 }, + { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255 }, + { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251 }, + { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474 }, + { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849 }, + { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781 }, + { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970 }, + { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973 }, + { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308 }, + { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, +] + +[[package]] +name = "django" +version = "5.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "sqlparse" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d3/e8/536555596dbb79f6e77418aeb40bdc1758c26725aba31919ba449e6d5e6a/Django-5.1.4.tar.gz", hash = "sha256:de450c09e91879fa5a307f696e57c851955c910a438a35e6b4c895e86bedc82a", size = 10716397 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/0b/8a4ab2c02982df4ed41e29f28f189459a7eba37899438e6bea7f39db793b/Django-5.1.4-py3-none-any.whl", hash = "sha256:236e023f021f5ce7dee5779de7b286565fdea5f4ab86bae5338e3f7b69896cf0", size = 8276471 }, +] + +[[package]] +name = "django-payments" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, + { name = "django-phonenumber-field", extra = ["phonenumberslite"] }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/ea/8a0cf49b367a2a3b5f173f40d257fb0f147dc5f6681e6589fc716a3a4f70/django_payments-3.0.1.tar.gz", hash = "sha256:008eb91c36b75f926f4d2487d338bb7c569c8524dee306f5f6aab93695570e2e", size = 111269 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/03/ebdd60f71c543e98355999369f11bbc474c08098162f8ba436209df378a7/django_payments-3.0.1-py3-none-any.whl", hash = "sha256:8490a55990371b527302d50a17b9843cdd6ff3ee17780771f026fddb06fbce3d", size = 150622 }, +] + +[[package]] +name = "django-phonenumber-field" +version = "8.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8f/d1/0a2ba41434d98ac9a2669ea7edfc8d1bc75055da450d94894c597913e01c/django_phonenumber_field-8.0.0.tar.gz", hash = "sha256:8a560fe1b01b94c9de8cde22bc373b695f023cc6df4baba00264cb079da9f631", size = 43759 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/ab/4738a40d6f297688ecedd08cf6dc1608ad06c08ba3c03d1fc85b19ac6717/django_phonenumber_field-8.0.0-py3-none-any.whl", hash = "sha256:196c917b70c01a98e327f482eb8a4a4a55a29891db551f99078585397370b3ba", size = 66441 }, +] + +[package.optional-dependencies] +phonenumberslite = [ + { name = "phonenumberslite" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "phonenumberslite" +version = "8.13.52" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/d0/bc170d7955e0e0f5a5655e3999275761a6acacb1b852369b6289cb86f5db/phonenumberslite-8.13.52.tar.gz", hash = "sha256:dfa44a4bae2e46d737ae5301cb96b14cdcbf45063236c74c6ddb08f5fd471b0d", size = 2296536 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/3b/17518a55a9c72ae43b3c3fafd5cd4fb3616d76c72ba84957b0992ce2a279/phonenumberslite-8.13.52-py2.py3-none-any.whl", hash = "sha256:02da5e78c67b213bae95afd6289f40486c93e302e518769911dfa5e7287ddeee", size = 471765 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "sqlparse" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/40/edede8dd6977b0d3da179a342c198ed100dd2aba4be081861ee5911e4da4/sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272", size = 84999 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/5c/bfd6bd0bf979426d405cc6e71eceb8701b148b16c21d2dc3c261efc61c7b/sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca", size = 44415 }, +] + +[[package]] +name = "tienda-ejemplo" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "django-payments" }, +] + +[package.metadata] +requires-dist = [{ name = "django-payments", specifier = ">=2.0,<4.0" }] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "tzdata" +version = "2024.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/34/943888654477a574a86a98e9896bae89c7aa15078ec29f490fef2f1e5384/tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc", size = 193282 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd", size = 346586 }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..a1f84f5 --- /dev/null +++ b/tox.ini @@ -0,0 +1,40 @@ +[tox] +envlist = + py{39,310,311}-dj{42} + py{311,312,313}-dj{50,51} + py{310,311,312,313}-djmain +skip_missing_interpreters = true + +[testenv] +allowlist_externals=pytest,coverage +usedevelop=True +ignore_outcome = + djmain: True +ignore_errors = + djmain: True +deps= + dj42: Django>=4.2,<5.0 + dj50: Django>=5.0,<5.1 + dj51: Django>=5.1,<5.2 + djmain: https://github.com/django/django/archive/main.tar.gz +extras= + transkbank-sdk + django-payments[dev] +commands= + pytest {posargs} + coverage xml + +[gh-actions] +python = + 3.9: py39 + 3.10: py310 + 3.11: py311 + 3.12: py312 + 3.13: py313 + +[gh-actions:env] +DJANGO = + 4.2: dj42 + 5.0: dj50 + 5.1: dj51 + main: djmain