diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd27136..2d5dcd6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,69 +13,71 @@ jobs: name: Build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python 3 - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.12" - name: Install dependencies run: | - python -m pip install --upgrade pip + python -m pip install --upgrade pip pip install build python -m build python -m pip install --upgrade twine python -m twine check dist/* - + - name: 'Upload Artifact' uses: actions/upload-artifact@v4 with: name: dist - path: dist/ + path: dist/ test: - name: Test Coverage + name: Test on Python ${{ matrix.python-version }} needs: build runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11', '3.12', '3.13', '3.14'] steps: - - uses: actions/checkout@v3 - - name: Set up Python 3 - uses: actions/setup-python@v3 + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip - pip install responses - pip install coverage - python ${{ github.workspace }}/setup.py install + pip install responses coverage + pip install . - name: Run Tests run: | python -m coverage run -m unittest python -m coverage xml - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - + if: matrix.python-version == '3.14' + uses: codecov/codecov-action@v4 + publish: if: startsWith(github.ref, 'refs/tags/v') needs: test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Download all workflow run artifacts uses: actions/download-artifact@v4 with: name: dist - path: dist + path: dist - name: Set up Python 3 - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.12" - name: Publish packages to PyPi run: | python -m pip install --upgrade twine set -ex - export VERSION=$(python3 setup.py --version) + export VERSION=$(python3 -c "import re; print(re.search(r'version=[\"\\x27](.*?)[\"\\x27]', open('setup.py').read()).group(1))") python -m twine upload --verbose dist/razorpay-$VERSION-py3-none-any.whl dist/razorpay-$VERSION.tar.gz env: TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }} TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }} - diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml deleted file mode 100644 index e3ea46d..0000000 --- a/.github/workflows/python.yml +++ /dev/null @@ -1,33 +0,0 @@ -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -name: Python Package - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - - -jobs: - deploy: - runs-on: ubuntu-latest # nosemgrep : semgrep.dev/s/swati31196:github_provided_runner - strategy: - max-parallel: 4 - matrix: - python-version: [3, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10] - - steps: - - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v2 - - name: Install dependencies - run: | - pip install setuptools - python -m pip install --upgrade pip - pip install responses - python3 setup.py install - - name: Run Tests - run: python3 -m unittest diff --git a/razorpay/client.py b/razorpay/client.py index 6d80e52..5d4f2db 100644 --- a/razorpay/client.py +++ b/razorpay/client.py @@ -98,30 +98,16 @@ def _update_user_agent_header(self, options): def _get_version(self): version = "" - try: # nosemgrep : gitlab.bandit.B110 - # Try importlib.metadata first (modern approach) - try: - import importlib.metadata - from importlib.metadata import PackageNotFoundError - version = importlib.metadata.version("razorpay") - except ImportError: - # Fall back to pkg_resources - import pkg_resources - from pkg_resources import DistributionNotFound - version = pkg_resources.require("razorpay")[0].version - except (PackageNotFoundError, DistributionNotFound, NameError): # pragma: no cover - # PackageNotFoundError: importlib.metadata couldn't find the package - # DistributionNotFound: pkg_resources couldn't find the package - # NameError: in case the exception classes aren't defined due to import issues - - # If all else fails, use the hardcoded version from the package - version = "1.4.3" - + try: + import importlib.metadata + version = importlib.metadata.version("razorpay") + except importlib.metadata.PackageNotFoundError: # pragma: no cover + version = "2.0.1" warnings.warn( - "Could not detect razorpay package version. Using fallback version." - "This may indicate an installation issue.", - UserWarning, - stacklevel=4 + "Could not detect razorpay package version. Using fallback version. " + "This may indicate an installation issue.", + UserWarning, + stacklevel=4 ) return version diff --git a/setup.py b/setup.py index bc41608..df4c977 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,8 @@ url="https://github.com/razorpay/razorpay-python", author="Team Razorpay", license="MIT", - install_requires=["requests"], + python_requires='>=3.11', + install_requires=["requests>=2.28.0"], include_package_data=True, package_dir={'razorpay': 'razorpay', 'razorpay.resources': 'razorpay/resources'}, packages=['razorpay', 'razorpay.resources'], @@ -21,15 +22,12 @@ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", - - # List of supported Python versions - # Make sure that this is reflected in .github/workflows/python.yml as well "Programming Language :: Python", 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', "Topic :: Software Development :: Libraries :: Python Modules", ] )