Skip to content

Commit 18fb6e8

Browse files
Merge pull request #326 from OneBusAway/release-please--branches--main--changes--next
release: 1.17.8
2 parents 47cd362 + 38527d7 commit 18fb6e8

25 files changed

Lines changed: 1539 additions & 682 deletions

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "1.17.7"
2+
".": "1.17.8"
33
}

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
# Changelog
22

3+
## 1.17.8 (2026-01-02)
4+
5+
Full Changelog: [v1.17.7...v1.17.8](https://github.com/OneBusAway/python-sdk/compare/v1.17.7...v1.17.8)
6+
7+
### Bug Fixes
8+
9+
* compat with Python 3.14 ([2ebc518](https://github.com/OneBusAway/python-sdk/commit/2ebc5184554db31387b2f683265720d58dd9bb2f))
10+
* **compat:** update signatures of `model_dump` and `model_dump_json` for Pydantic v1 ([37abc5b](https://github.com/OneBusAway/python-sdk/commit/37abc5b808843321a5011b935590c5d3455f0c27))
11+
* ensure streams are always closed ([75f1288](https://github.com/OneBusAway/python-sdk/commit/75f1288ddc3202c2fe6850b8f968720ed88cb470))
12+
* **types:** allow pyright to infer TypedDict types within SequenceNotStr ([f10f373](https://github.com/OneBusAway/python-sdk/commit/f10f3734af08ea934c7b5be9de0cd2af106afaea))
13+
* use async_to_httpx_files in patch method ([bb271d4](https://github.com/OneBusAway/python-sdk/commit/bb271d4d067c06c8848488a5ba050e89b85fd671))
14+
15+
16+
### Chores
17+
18+
* add missing docstrings ([5daefdd](https://github.com/OneBusAway/python-sdk/commit/5daefdde179696d3ade876b33b94fb79f5972155))
19+
* add Python 3.14 classifier and testing ([5ba9679](https://github.com/OneBusAway/python-sdk/commit/5ba9679c37d905d2b994fb3ad033825142ee19e2))
20+
* **deps:** mypy 1.18.1 has a regression, pin to 1.17 ([167648d](https://github.com/OneBusAway/python-sdk/commit/167648d8fb485e522aa49611ee25523190b78c9a))
21+
* **docs:** use environment variables for authentication in code snippets ([a2ac5df](https://github.com/OneBusAway/python-sdk/commit/a2ac5df1da8f164cbe85325385266b5340fd361b))
22+
* **internal/tests:** avoid race condition with implicit client cleanup ([f6c9ee8](https://github.com/OneBusAway/python-sdk/commit/f6c9ee8b1713fee3b65a599c98653d6183d6e162))
23+
* **internal:** add `--fix` argument to lint script ([fecb3ed](https://github.com/OneBusAway/python-sdk/commit/fecb3edeae22300f16eacd4f35da31e2243f17c8))
24+
* **internal:** add missing files argument to base client ([1744224](https://github.com/OneBusAway/python-sdk/commit/17442243ef6d3ca342ac4294de2257e59fdd7da4))
25+
* **internal:** codegen related update ([dc918e3](https://github.com/OneBusAway/python-sdk/commit/dc918e3df35585c12b7a05e433826563faccb086))
26+
* **internal:** grammar fix (it's -> its) ([aa8df91](https://github.com/OneBusAway/python-sdk/commit/aa8df91bb2ba826f49bacf3a2a777579931487d9))
27+
* **package:** drop Python 3.8 support ([b633259](https://github.com/OneBusAway/python-sdk/commit/b633259385cddf32422b425a174a2a7dbe34021c))
28+
* speedup initial import ([d938f66](https://github.com/OneBusAway/python-sdk/commit/d938f6643cf144bb8db22d8c89024785ff5fdd97))
29+
* update lockfile ([4fd805d](https://github.com/OneBusAway/python-sdk/commit/4fd805dfa1c4efe2fd53d7aa46c75e368c97463f))
30+
331
## 1.17.7 (2025-10-30)
432

533
Full Changelog: [v1.17.6...v1.17.7](https://github.com/OneBusAway/python-sdk/compare/v1.17.6...v1.17.7)

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@
186186
same "printed page" as the copyright notice for easier
187187
identification within third-party archives.
188188

189-
Copyright 2025 Onebusaway SDK
189+
Copyright 2026 Onebusaway SDK
190190

191191
Licensed under the Apache License, Version 2.0 (the "License");
192192
you may not use this file except in compliance with the License.

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[![PyPI version](https://img.shields.io/pypi/v/onebusaway.svg?label=pypi%20(stable))](https://pypi.org/project/onebusaway/)
55

66

7-
The Onebusaway SDK Python library provides convenient access to the Onebusaway SDK REST API from any Python 3.8+
7+
The Onebusaway SDK Python library provides convenient access to the Onebusaway SDK REST API from any Python 3.9+
88

99
application. The library includes type definitions for all request params and response fields,
1010
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
@@ -79,14 +79,15 @@ pip install onebusaway[aiohttp]
7979
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
8080

8181
```python
82+
import os
8283
import asyncio
8384
from onebusaway import DefaultAioHttpClient
8485
from onebusaway import AsyncOnebusawaySDK
8586

8687

8788
async def main() -> None:
8889
async with AsyncOnebusawaySDK(
89-
api_key="My API Key",
90+
api_key=os.environ.get("ONEBUSAWAY_API_KEY"), # This is the default and can be omitted
9091
http_client=DefaultAioHttpClient(),
9192
) as client:
9293
current_time = await client.current_time.retrieve()
@@ -355,7 +356,7 @@ print(onebusaway.__version__)
355356

356357
## Requirements
357358

358-
Python 3.8 or higher.
359+
Python 3.9 or higher.
359360

360361
## Contributing
361362

pyproject.toml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,32 @@
11
[project]
22
name = "onebusaway"
3-
version = "1.17.7"
3+
version = "1.17.8"
44
description = "The official Python library for the onebusaway-sdk API"
55
dynamic = ["readme"]
66
license = "Apache-2.0"
77
authors = [
88
{ name = "Onebusaway SDK", email = "info@onebusaway.org" },
99
]
10+
1011
dependencies = [
11-
"httpx>=0.23.0, <1",
12-
"pydantic>=1.9.0, <3",
13-
"typing-extensions>=4.10, <5",
14-
"anyio>=3.5.0, <5",
15-
"distro>=1.7.0, <2",
16-
"sniffio",
12+
"httpx>=0.23.0, <1",
13+
"pydantic>=1.9.0, <3",
14+
"typing-extensions>=4.10, <5",
15+
"anyio>=3.5.0, <5",
16+
"distro>=1.7.0, <2",
17+
"sniffio",
1718
]
18-
requires-python = ">= 3.8"
19+
20+
requires-python = ">= 3.9"
1921
classifiers = [
2022
"Typing :: Typed",
2123
"Intended Audience :: Developers",
22-
"Programming Language :: Python :: 3.8",
2324
"Programming Language :: Python :: 3.9",
2425
"Programming Language :: Python :: 3.10",
2526
"Programming Language :: Python :: 3.11",
2627
"Programming Language :: Python :: 3.12",
2728
"Programming Language :: Python :: 3.13",
29+
"Programming Language :: Python :: 3.14",
2830
"Operating System :: OS Independent",
2931
"Operating System :: POSIX",
3032
"Operating System :: MacOS",
@@ -46,7 +48,7 @@ managed = true
4648
# version pins are in requirements-dev.lock
4749
dev-dependencies = [
4850
"pyright==1.1.399",
49-
"mypy",
51+
"mypy==1.17",
5052
"respx",
5153
"pytest",
5254
"pytest-asyncio",
@@ -141,7 +143,7 @@ filterwarnings = [
141143
# there are a couple of flags that are still disabled by
142144
# default in strict mode as they are experimental and niche.
143145
typeCheckingMode = "strict"
144-
pythonVersion = "3.8"
146+
pythonVersion = "3.9"
145147

146148
exclude = [
147149
"_dev",

requirements-dev.lock

Lines changed: 62 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,45 @@
1212
-e file:.
1313
aiohappyeyeballs==2.6.1
1414
# via aiohttp
15-
aiohttp==3.12.8
15+
aiohttp==3.13.2
1616
# via httpx-aiohttp
1717
# via onebusaway
18-
aiosignal==1.3.2
18+
aiosignal==1.4.0
1919
# via aiohttp
20-
annotated-types==0.6.0
20+
annotated-types==0.7.0
2121
# via pydantic
22-
anyio==4.4.0
22+
anyio==4.12.0
2323
# via httpx
2424
# via onebusaway
25-
argcomplete==3.1.2
25+
argcomplete==3.6.3
2626
# via nox
2727
async-timeout==5.0.1
2828
# via aiohttp
29-
attrs==25.3.0
29+
attrs==25.4.0
3030
# via aiohttp
31-
certifi==2023.7.22
31+
# via nox
32+
backports-asyncio-runner==1.2.0
33+
# via pytest-asyncio
34+
certifi==2025.11.12
3235
# via httpcore
3336
# via httpx
34-
colorlog==6.7.0
37+
colorlog==6.10.1
38+
# via nox
39+
dependency-groups==1.3.1
3540
# via nox
36-
dirty-equals==0.6.0
37-
distlib==0.3.7
41+
dirty-equals==0.11
42+
distlib==0.4.0
3843
# via virtualenv
39-
distro==1.8.0
44+
distro==1.9.0
4045
# via onebusaway
41-
exceptiongroup==1.2.2
46+
exceptiongroup==1.3.1
4247
# via anyio
4348
# via pytest
44-
execnet==2.1.1
49+
execnet==2.1.2
4550
# via pytest-xdist
46-
filelock==3.12.4
51+
filelock==3.19.1
4752
# via virtualenv
48-
frozenlist==1.6.2
53+
frozenlist==1.8.0
4954
# via aiohttp
5055
# via aiosignal
5156
h11==0.16.0
@@ -58,80 +63,87 @@ httpx==0.28.1
5863
# via respx
5964
httpx-aiohttp==0.1.9
6065
# via onebusaway
61-
idna==3.4
66+
humanize==4.13.0
67+
# via nox
68+
idna==3.11
6269
# via anyio
6370
# via httpx
6471
# via yarl
65-
importlib-metadata==7.0.0
66-
iniconfig==2.0.0
72+
importlib-metadata==8.7.0
73+
iniconfig==2.1.0
6774
# via pytest
6875
markdown-it-py==3.0.0
6976
# via rich
7077
mdurl==0.1.2
7178
# via markdown-it-py
72-
multidict==6.4.4
79+
multidict==6.7.0
7380
# via aiohttp
7481
# via yarl
75-
mypy==1.14.1
76-
mypy-extensions==1.0.0
82+
mypy==1.17.0
83+
mypy-extensions==1.1.0
7784
# via mypy
78-
nodeenv==1.8.0
85+
nodeenv==1.9.1
7986
# via pyright
80-
nox==2023.4.22
81-
packaging==23.2
87+
nox==2025.11.12
88+
packaging==25.0
89+
# via dependency-groups
8290
# via nox
8391
# via pytest
84-
platformdirs==3.11.0
92+
pathspec==0.12.1
93+
# via mypy
94+
platformdirs==4.4.0
8595
# via virtualenv
86-
pluggy==1.5.0
96+
pluggy==1.6.0
8797
# via pytest
88-
propcache==0.3.1
98+
propcache==0.4.1
8999
# via aiohttp
90100
# via yarl
91-
pydantic==2.11.9
101+
pydantic==2.12.5
92102
# via onebusaway
93-
pydantic-core==2.33.2
103+
pydantic-core==2.41.5
94104
# via pydantic
95-
pygments==2.18.0
105+
pygments==2.19.2
106+
# via pytest
96107
# via rich
97108
pyright==1.1.399
98-
pytest==8.3.3
109+
pytest==8.4.2
99110
# via pytest-asyncio
100111
# via pytest-xdist
101-
pytest-asyncio==0.24.0
102-
pytest-xdist==3.7.0
103-
python-dateutil==2.8.2
112+
pytest-asyncio==1.2.0
113+
pytest-xdist==3.8.0
114+
python-dateutil==2.9.0.post0
104115
# via time-machine
105-
pytz==2023.3.post1
106-
# via dirty-equals
107116
respx==0.22.0
108-
rich==13.7.1
109-
ruff==0.9.4
110-
setuptools==68.2.2
111-
# via nodeenv
112-
six==1.16.0
117+
rich==14.2.0
118+
ruff==0.14.7
119+
six==1.17.0
113120
# via python-dateutil
114-
sniffio==1.3.0
115-
# via anyio
121+
sniffio==1.3.1
116122
# via onebusaway
117-
time-machine==2.9.0
118-
tomli==2.0.2
123+
time-machine==2.19.0
124+
tomli==2.3.0
125+
# via dependency-groups
119126
# via mypy
127+
# via nox
120128
# via pytest
121-
typing-extensions==4.12.2
129+
typing-extensions==4.15.0
130+
# via aiosignal
122131
# via anyio
132+
# via exceptiongroup
123133
# via multidict
124134
# via mypy
125135
# via onebusaway
126136
# via pydantic
127137
# via pydantic-core
128138
# via pyright
139+
# via pytest-asyncio
129140
# via typing-inspection
130-
typing-inspection==0.4.1
141+
# via virtualenv
142+
typing-inspection==0.4.2
131143
# via pydantic
132-
virtualenv==20.24.5
144+
virtualenv==20.35.4
133145
# via nox
134-
yarl==1.20.0
146+
yarl==1.22.0
135147
# via aiohttp
136-
zipp==3.17.0
148+
zipp==3.23.0
137149
# via importlib-metadata

0 commit comments

Comments
 (0)