Skip to content

Commit 9e78338

Browse files
oligirlingclaude
andcommitted
Add Python 3.14 support, raise minimum to 3.10
- Update Dockerfile to python:3.14-alpine base image - Bump package version to 1.1.0 - Set python_requires>=3.10 and add version classifiers (3.10-3.14) - Fix author_name -> author (correct setuptools field) - Fix unclosed file handle in setup.py (use context manager) - Modernize class syntax (remove redundant object inheritance) - Update CI matrix to test 3.10, 3.12, 3.14 - Update GitHub Actions to checkout@v4 and setup-python@v5 - Update README prerequisites - Add CHANGELOG.md All 36 tests pass with 100% coverage on Python 3.14.3. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 63ffaed commit 9e78338

7 files changed

Lines changed: 47 additions & 13 deletions

File tree

.github/workflows/tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ jobs:
88

99
strategy:
1010
matrix:
11-
python-version: ["3.7", "3.9"]
11+
python-version: ["3.10", "3.12", "3.14"]
1212

1313
steps:
1414
- name: Checkout repository
15-
uses: actions/checkout@v3
15+
uses: actions/checkout@v4
1616

1717
- name: Set up Python ${{ matrix.python-version }}
18-
uses: actions/setup-python@v4
18+
uses: actions/setup-python@v5
1919
with:
2020
python-version: ${{ matrix.python-version }}
2121

@@ -26,4 +26,4 @@ jobs:
2626
run: python -m coverage run -m unittest discover
2727

2828
- name: Upload coverage to Coveralls
29-
uses: coverallsapp/github-action@v2
29+
uses: coverallsapp/github-action@v2

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
## [1.1.0] - 2026-02-13
6+
7+
### Added
8+
- Python 3.14 support
9+
- Python version classifiers in package metadata (3.10-3.14)
10+
- `python_requires` constraint in setup.py
11+
- CHANGELOG.md
12+
13+
### Changed
14+
- Minimum Python version raised from 3.5 to 3.10
15+
- Dockerfile updated to use `python:3.14-alpine` base image
16+
- GitHub Actions CI matrix updated to test Python 3.10, 3.12, and 3.14
17+
- GitHub Actions updated to use `actions/checkout@v4` and `actions/setup-python@v5`
18+
- Modernized class syntax (removed redundant `object` inheritance)
19+
- Fixed `author_name` to `author` in setup.py (correct setuptools field)
20+
- Fixed unclosed file handle in setup.py (now uses context manager)
21+
22+
### Removed
23+
- Support for Python 3.5-3.9 (all EOL)
24+
25+
## [1.0.4] - Previous release
26+
27+
- Initial tracked version

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM python:3-alpine
1+
FROM python:3.14-alpine
22

33
WORKDIR /app
44

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ Alternatively keep reading below.
2929

3030
#### Prerequisites
3131

32-
- Minimum Python version 3.5
33-
- Last tested and working on Python 3.11.5
32+
- Minimum Python version 3.10
33+
- Last tested and working on Python 3.14
3434
- Free or Paid account with CurrencyApi.net
3535

3636
#### Test Coverage

currencyapinet/currency.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from currencyapinet.endpoints.timeframe import Timeframe
55
from currencyapinet.endpoints.currencies import Currencies
66

7-
class Currency(object):
7+
class Currency:
88
def __init__(self, api_key: str):
99
self._api_key = api_key
1010

currencyapinet/endpoints/endpoint.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
DEFAULT_OUTPUT = 'JSON'
77
XML_OUTPUT = 'XML'
88

9-
class Endpoint(object):
9+
class Endpoint:
1010
def __init__(self, api_key: str, endpoint: str):
1111
self.api_key = api_key
1212
self.endpoint = endpoint.lower()

setup.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,33 @@
11
from setuptools import setup, find_packages
22
from os.path import abspath, dirname, join
33

4-
README_MD = open(join(dirname(abspath(__file__)), "README.md")).read()
4+
with open(join(dirname(abspath(__file__)), "README.md")) as f:
5+
README_MD = f.read()
56

67
setup(
78
name="currencyapinet",
8-
version="1.0.4",
9+
version="1.1.0",
910
packages=find_packages(exclude="tests"),
1011
description="Python wrapper for CurrencyApi.net",
1112
long_description=README_MD,
1213
long_description_content_type="text/markdown",
1314
url="https://currencyapi.net/sdk/python",
14-
author_name="Oli Girling",
15+
author="Oli Girling",
1516
author_email="support@currencyapi.net",
17+
python_requires=">=3.10",
1618
classifiers=[
1719
"License :: OSI Approved :: MIT License",
1820
"Intended Audience :: Developers",
1921
"Programming Language :: Python :: 3 :: Only",
22+
"Programming Language :: Python :: 3.10",
23+
"Programming Language :: Python :: 3.11",
24+
"Programming Language :: Python :: 3.12",
25+
"Programming Language :: Python :: 3.13",
26+
"Programming Language :: Python :: 3.14",
2027
"Topic :: Software Development :: Libraries :: Python Modules",
2128
],
2229
install_requires=[
2330
"requests"
2431
],
2532
keywords="currency feed, currency rates, currencyapi, currency",
26-
)
33+
)

0 commit comments

Comments
 (0)