-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathCHANGELOG.txt
More file actions
302 lines (246 loc) · 11.3 KB
/
Copy pathCHANGELOG.txt
File metadata and controls
302 lines (246 loc) · 11.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Ideas / Not Yet Planned
- Migrate CI fully to GitHub Actions and retire CircleCI. GHA already builds docs and
publishes releases; CircleCI only remains for lint/unit/functional, duplicating config
across two systems.
- Consider generating `CHANGELOG.txt` from per-PR fragments (e.g. `towncrier`) instead of
hand-editing it, now that releases are tag-driven via `setuptools-scm`.
- Bump `paramiko` past the `<4.0.0` ceiling (currently resolves to 3.5.1; latest is 5.0.0) and
`types-paramiko` off `~3.3.0.0` to match. The ceiling was added to dodge a DSSKey removal in
paramiko 4; needs checking what else changed across 4.x/5.x before lifting it.
## [Unreleased]
## [1.5.1] - 2026-08-05
### Fixed
- Breaking regression from https://github.com/octopus-energy/tentaclio/pull/241 which caused
pandas `DataFrame.to_csv()` to fail with `TypeError: write() argument must be str, not bytes`
when supplied with a tentaclio `mode="w"` writer
(https://github.com/octopus-energy/tentaclio/issues/248).
- Some code comment spelling mistakes.
## [1.5.0] - 2026-07-30
### Changed
- Bump the minimum supported Python from 3.9 (EOL) to 3.10; drop the `importlib_metadata`
backport dependency in favour of the stdlib `importlib.metadata.packages_distributions`
(available since 3.10). CircleCI executors bumped from `cimg/python:3.9` to `3.10`
accordingly.
- Upgrade Sphinx from the `~4.5.0` pin (and the five `sphinxcontrib-*` upper-bound pins added
to keep it building) to `sphinx>=8.0`/`myst-parser>=4.0`. Added `myst_heading_anchors = 4`
to `docs/conf.py` so in-page anchor links in `README.md` (e.g. `#credentials-file`) still
resolve when included into the docs build.
- Bump `moto` from `~4.0.0` to `~5.2.0`; `moto.mock_s3()` was replaced with `moto.mock_aws()`
in `tests/conftest.py`.
- Release to PyPI via a GitHub Actions workflow using PyPI Trusted Publishing (OIDC),
instead of a CircleCI job using a long-lived API token. CircleCI still runs lint,
unit, and functional tests.
- Replace `twine` with `uv publish` for building/publishing/checking release artifacts.
- Derive the package version from the git tag at build time via `setuptools-scm`,
instead of a committed `version` field in `pyproject.toml`. Releases no longer
require a version-bump commit before tagging; `scripts/verify_version.py` is
removed since there's no longer a committed version to verify against tags.
`tentaclio.__version__` is now exposed at runtime via `importlib.metadata`.
- Add a GitHub Actions workflow that builds the Sphinx docs on every push/PR touching
`docs/` or `src/`, so a broken build is caught in CI instead of only surfacing on
Read the Docs' own webhook-triggered build. Docs are still hosted on Read the Docs;
`.readthedocs.yaml` is unchanged.
- Fix `make docs` (previously invoked `mkdocs serve`, but this project's docs are
built with Sphinx and `mkdocs` was not even a dependency). It now runs
`docs-build` and serves the built HTML via `python -m http.server`.
### Fixed
- Ship the `py.typed` marker file so the `Typing :: Typed` classifier is accurate for
consumers relying on PEP 561 type information.
- Fix pre-existing `mypy tests` failures (52 errors across 14 files) that had been
silently blocking `make test`/`make lint` from ever reaching `unit`.
- Pin `sphinxcontrib-applehelp`/`devhelp`/`htmlhelp`/`qthelp`/`serializinghtml` to the
last versions compatible with the pinned `sphinx~=4.5.0` (newer releases of these
call `require_sphinx('5.0')` and fail the build outright). This was silently broken
for anyone building docs locally or on Read the Docs with an unpinned resolver.
### Added
- Add `Programming Language :: Python :: 3.13` and `Programming Language :: Python :: 3.14`
classifiers.
- Add more validation for tentaclio secrets YAML files, including checks that the top level of
the YAML file contains key-value pairs, the `secrets:` block is not empty, the `secrets:` block
and subsequent entries are correctly indented, and the `secrets:` block contains key-value
pairs. If any of the validation steps fail, `TentaclioFileError`s with helpful error messages
are raised.
- Add `get_pl()` method to the SQLAlchemy client to fetch a Polars DataFrame.
- Make `polars` an optional dependency accordingly. If `polars` is not available, raise a
`ModuleNotFoundError`.
## [1.4.1] - 2026-01-12
### Fix
- Update paramiko dependency to address security vulnerability.
## [1.4.0] - 2026-01-12
### Addition
- Update repo to use uv for development environment management.
## [1.3.8] - 2025-09-15
### Addition
- Set CircleCI checkout step method to full
## [1.3.7] - 2025-09-15
### Fix
- Fix and improve shell detection in extras/init_tentaclio.sh.
## [1.3.6] - 2025-08-04
### Fix
- Re-lock pipfile to fix release process.
## [1.3.5] - 2025-08-04
### Fix
- Pin Paramiko dependency version to <4.0.0 to avoid DSSKey error (support dropped in newest version).
## [1.3.4] - 2025-07-21
### Added
- Update CircleCI config to use latest convenience image for Python 3.9. and use an API token for publishing to PyPI.
## [1.3.3] - 2025-07-16
### Fix
- Maintain optional input of private key path and private key password to SFTP client.
## [1.3.2] - 2025-07-12
### Added
- Add support for use of private key path and private key password for SFTP using query parameters.
- Not changed: If query parameters are provided in usage url, they overwrite query parameters in credentials url.
- Limitations: Assume connections that use private key (SFTP) would not use query parameters. If needed, this can be
handled in injection.py.
## [1.3.1] - 2024-01-04
### Changed
- Error message when a Tentaclio secret cannot be passed to give more information to user.
## [1.3.0] - 2023-10-25
### Added
- Add support for interpolating environment variables to tentaclio secrets file.
## [1.2.2] - 2023-10-18
### Added
- Add support for connecting to SFTP via private key authentication. Replaces pysftp dependency with paramiko.
## [1.2.1] - 2023-04-20
### Fix
- Issue where URL query parameters were not passed correctly to sqlalchemy for db connections.
## [1.2.0] - 2023-04-06
### Added
- Add support for SQLAlchemy 2.0 by correctly handling `sqlalchemy.engine.url.URL`s, which are now immutable.
Older versions of tentaclio should pin `sqlalchemy < 2.0` to avoid this issue.
## [1.1.0] - 2023-04-05
### Changed
- Credential files error reporting to help users identify the credentials issues
## [1.0.9] - 2023-01-25
### Added
- Add `tentaclio.streams.api.make_empty_safe` to modify the standard behavoir of creating
empty files when no data is written into the stream.
## [1.0.8] - 2022-11-08
### Added
- Make `tentaclio.fs.api.walk` visible outside of the module so it can be used from the root module
## [1.0.6] - 2022-07-04
### Added
- Added snowflake plugin + schema
## [1.0.5] - 2022-05-23
### Changed
- Allow specifying encoding for byte streams
## [1.0.4] - 2022-03-04
### Changed
- Replace sqlalchemy's result.ResultProxy typehint with CursorResult
- Enables sqlalchemy>=1.4
## [1.0.3] - 2022-01-18
### Changed
- Pin databricks plugin to thrift version
- Pin pandas<1.4 to avoid sqlalchemy dependency clash
## [1.0.2] - 2022-01-18
### Changed
- Automatically import plugins
- Enable installing plugins via setuptools extras
## [1.0.1] - 2022-01-18
### Changed
- Re-release v1.0.0 after ensuring necessary tentaclio dependent services
are pinned appropriately
## [1.0.0] - 2021-11-26
### Changed
- Move athena, s3, gs, gdrive, databricks, postgres to seperate packages
## [0.0.15] - 2021-03-23
### Addition
- Add Databricks db client
## [0.0.14] - 2021-03-17
### Fix
- Temporarily pin sqlalchemy to <1.4 due to deprecated ResultProxy interface
## [0.0.13] - 2020-10-30
### Addition
- Update to pandas 1.1.3 by E.on request
## [0.0.12] - 2020-09-24
### Fix
- The token from google might have extra fields that cause the authentication process to fail
## [0.0.11] - 2020-09-23
### Fix
- When we have access to a file in a shared drive but not to the drive itself it
breaks the routine to "mount" the drives, as it can't access the root. Ignore those
drives by the time being and warn the user.
## [0.0.10] - 2020-09-18
### Fix
- Specify PyAthena version to prevent errors from current release
## [0.0.9] - 2020-08-27
### Addition
- Allow filtering credentials by username in the url too. Until now we were relying on scheme,
hostname, and path.
## [0.0.8] - 2020-08-27
### Fix
- Add dataclasses dependency to support python 3.6.
## [0.0.7] - 2020-08-25
### Fix
- Remove upper constraint on `boto3` Python dependency.
## [0.0.6] - 2020-08-25
### Fix
- Windows based system don not have the HOME environment variable set by default.
Fixed by using UserProfile instead.
## [0.0.5] - 2020-08-02
### Fix
- Fix problems with base stream as it needed to make itself as fushable
in order to play nicely with zip files
### Added
- Experimental google drive support
## [0.0.4] - 2020-07-15
### Fix
- Fix problems with base stream as it needed to make itself as seekable
in order to play nicely with zip files
### Changed
- Now the required dev version is python 3.7
## [0.0.3] - 2020-07-02
### Fix
- Fix issue with the application name string for postgres
## [0.0.2] - 2020-07-02
### Added
- TENCACLIO__PG_APPLICATION_NAME overrides the application name for postgres connection string
## [0.0.1] - 2020-06-15
### Added
- support for google cloud storage (thanks to @benjamincerigo)
### Changed
- Improved readme
- Mark release as stable
## [0.0.1-alpha.10] - 2020-05-18
### Added
- `extras/init_tentaclio.sh` for automatically create a secrets file and configure the user's
environment.
### Fixed
- `SQLAlchemyClient.query()` now takes an explicit `params` kwarg consistent with `conn.execute()`
## [0.0.1-alpha.9] - 2020-03-27
### Changed
- Enforce versioning on `pandas` due to compatibility issues with the new I/O API (v1.0.2)
## [0.0.1-alpha.8] - 2020-03-19
### Added
- `PostgresClient.get_df_unsafe()` using COPY for faster Postgres queries
## [0.0.1-alpha.7] - 2020-03-18
### Changed
- Do not check if the resource is a file before retrieval in the ftp client. The method might not
be implemented and the server will complain regardless.
## [0.0.1-alpha.6] - 2020-03-18
### Added
- Allow ftp scandir fallback to dir when mlst is not implemented on the server
## [0.0.1-alpha.5] - 2020-02-12
### Added
- Support deleting resources (ftp and sftp).
## [0.0.1-alpha.4] - 2020-01-21
### Added
- Support deleting resources (S3 and local file system ).
- Support for copying any arbitrary pair of resources.
- Support for copying S3 files using aws boto directly.
### Changed
- Removed a duplication of the main api.
## [0.0.1-alpha.3] - 2019-07-24
### Added
- Support for listing resources (S3, local file system, sftp, and ftp schemes).
- More internal registries for more types of handlers.
### Changed
- URL class no longer contains the stream handlers.
## [0.0.1-alpha.2] - 2019-07-24
### Added
- Athena client.