(Changes documented in this section are not repeated in the following sections.)
- A `civis.response.Response` object is no longer mutable
(implementationally, it subclassed `dict` before, which is no longer the case).
More concretely, both the "setitem" (e.g., `response["foo"] = "bar"`)
and "setattr" (e.g., `response.foo = "bar"`) operations
would now raise an `CivisImmutableResponseError` exception. (463)
- Instantiating a `civis.response.Response` object no longer
accepts the boolean `snake_case` keyword argument;
snake-case keys at a `Response` object are now always available (and preferred). (463)
- Parameters for various classes/functions that have long been deprecated are removed:
`api_key`, `resources`, `retry_total`, `archive`, `headers`.
Also dropped the deprecated methods in `ServiceClient`. (472)
- The `return_type` parameter of a `civis.response.Response` object
no longer has the `"pandas"` option. (473)
- When `civis.find` uses kwargs as filters, boolean values are now treated in the same
way as other data types for value equality comparison, rather than the presence or
absence of the key in question. (474)
- To access the API endpoints "MatchTargets" and "RemoteHosts" via `client = civis.APIClient()`,
`client.matchtargets` and `client.remotehosts` are no longer available.
Only the names with underscores, i.e., `client.match_targets` and `client.remote_hosts`,
can be used instead. (479)
Added
- Added error handling of file_id with type string passed to `civis.io.civis_file_to_table`. (454)
- Added support for Python 3.10, 3.11, and 3.12 (462, 475)
- A `FutureWarning` is now raised when a deprecated Civis API endpoint method is called. (477)
- Added `civis_logger` for logging in Civis Platform scripts. (478)
- Added the stub file `client.pyi` to surface the API endpoints and their type annotations
at a `civis.APIClient` instance to IDEs. (479)
- Added the `job_url` property to `CivisFuture` objects. (482)
- Added `.readthedocs.yaml` to configure the ReadTheDocs build. (483)
Changed
- Updated references from 'master' to 'main' (460)
- Clarified the usage example for `civis.io.civis_to_multifile_csv`. Updated
CircleCI config so dev-requirements is only used when needed. (452)
- Removed unneeded `time.sleep` calls and `pytest.mark` calls and mocked `time.sleep` calls to optimize tests. (453)
- Refactored tests to remove dependency on the vcr library. (456)
- Fixed typo in "Testing Your Code" example of the User Guide (458)
- Adding `try`-`except` to catch `JSONDecodeErrors` in `CivisAPIError` (459)
- `civis.io.file_id_from_run_output` now works for all job types (461)
- A nested `civis.response.Response` object now supports both snake-case and camel-case
for key access. Previously, only the non-Pythonic camel-case keys were available. (463)
- Pinned the dependency `joblib` at `< 1.3.0`, since `joblib >= 1.3.0` is incompatible
with the current civis-python codebase. (469)
- Changed `civis.io.civis_file_to_table` to not rely on table IDs for determining a table's existence (470)
- Broke out the "API Resources" documentation page into individual endpoint pages (471)
- Switched to `pyproject.toml` for packaging. (475)
- CI builds for Windows switched from AppVeyor to CircleCI. (480)
- Applied the `black` code formatter to the codebase. (481)
Removed
- Dropped support for Python 3.7 and 3.8 (462, 475)
Security
- Added the `pip-audit` check to CI
for potential security vulnerabilities of Python dependencies. (476, 485)