Releases: civisanalytics/civis-python
Releases · civisanalytics/civis-python
v2.3.0
Added
- Added a script for checking if the Civis API spec is up-to-date. (#489)
- Added a new keyword argument
sql_params_arguments
to thecivis.io.*
functions that
accept a SQL query, so that the user can run a parameterized SQL script. (#493)
Changed
- Refactored the
civis.parallel
module and related unit tests due to major changes
of joblib from v1.2.0 to v1.3.0 (API-breaking changes for dropping
joblib.my_exceptions.TransportableException
andjoblib.format_stack.format_exc
,
as well as the substantial changes to the internals ofjoblib.Parallel
). (#488) - Bumped the minimum required version of
joblib
to v1.3.0,
which is the version wherejoblib.parallel_config
was introduced and
joblib.parallel_backend
was deprecated. (#488) - Improved the startup time of
import civis
with a 5x speed boost. (#490, #493) - The downloaded API spec due to the
civis.APIClient
instantiation is now
a time-to-live cache in memory (15 minutes for interactive Python, or 24 hours in scripts). (#491) - Polling at
PollableResult
(and consequently its subclasses as well:CivisFuture
,
ContainerFuture
, andModelFuture
) now defaults to geometrically increased polling
intervals. Short-running jobs'future.result()
can now return faster, while
longer-running jobs have a capped polling interval of 15 seconds. (#492) - Comparing a
Response
object with a non-Response
object returnsFalse
now
(this previously raised aTypeError
). (#493)
Fixed
- Fixed
civis.parallel.make_backend_template_factory
so that
keyword arguments are now accepted and passed toclient.scripts.post_custom
. (#488) - For
Response
objects, their "repr" form shows the class name "Response" for both
top-level and nested response objects. (#493)
Security
- Bumped the minimum required version of
requests
to the latest v2.32.3,
due to a security vulnerability for < v2.32.0
(CVE-2024-35195). (#488)
v2.2.0
v2.1.0
Added
- Added
.json()
atcivis.response.Response
to return the original JSON data from Civis API. (#486)
Changed
- Updated the Civis API spec. (#486)
Fixed
- Fixed
civis.response.Response
so that keys that shouldn't be mutated for casing,
specifically those under"arguments"
, are now kept unchanged. (#486)
v2.0.0
Breaking Changes from v1.x.x to v2.0.0
(Changes documented in this section are not repeated in the following sections.)
- A
civis.response.Response
object is no longer mutable.
More concretely, both the "setitem" (e.g.,response["foo"] = "bar"
)
and "setattr" (e.g.,response.foo = "bar"
) operations
would now raise anCivisImmutableResponseError
exception. (#463) - Instantiating a
civis.response.Response
object no longer
accepts the booleansnake_case
keyword argument;
snake-case keys at aResponse
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 inServiceClient
. (#472) - The
return_type
parameter of acivis.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
andclient.remotehosts
are no longer available.
Only the names with underscores, i.e.,client.match_targets
andclient.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 acivis.APIClient
instance to IDEs. (#479) - Added the
job_url
property toCivisFuture
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 andpytest.mark
calls and mockedtime.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 catchJSONDecodeErrors
inCivisAPIError
(#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
, sincejoblib >= 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
Security
v1.16.1
v1.16.0
Added
- Added documentation around testing code using mocking (#447)
- Added the type of
civis.response.Response
andcivis.response.PaginatedResponse
returned in the API resources documentation (#438) - Added job ID and run ID as custom headers in API calls (#437)
- Added support for Python 3.9 (#436)
- Added job ID and run ID to the exception message of
CivisJobFailure
coming from aCivisFuture
object (#426) - Added the
encoding
parameter to bothcivis.io.read_civis
andcivis.io.read_civis_sql
,
so that these two functions can retrieve non-UTF-8 data whenuse_pandas
isFalse
. (#424) ContainerFuture
propagates error messages from logs (#416)- Added EmptyResultError to
civis.io.read_civis
docs (#412) - Added default values from swagger in client method's signature (#417)
Changed
- Explicitly stated CSV-like civis file format requirement in
civis.io.civis_file_to_table
's docstring (#445) - Called out the fact that
joblib.Parallel
'spre_dispatch
defaults to"2*n_jobs"
in the Sphinx docs (#443) - Updated
civis_api_spec.json
, moved it to undercivis/resources/
, and checked in
a script to facilitate updating it again (#440, #441) - Bumped version numbers for dependencies to allow their latest major releases (#436)
- Switched from TravisCI to CircleCI (#432)
- Moved the changes from #416 for propagating error messages
fromContainerFuture
toCivisFuture
(#426) - Updated the docstrings for
file_to_civis
(forbuf
andexpires_at
),
dataframe_to_file
(forexpires_at
), andjson_to_file
(forexpires_at
). (#427) - Ability to use joblib 1.1.x (#429)
Fixed
- Relaxed SQL type checking in
civis.io.civis_file_to_table
by casting toVARCHAR
when type inconsistency is detected for a given column and at least one input file
hasVARCHAR
(#439) - Updated info about MacOS shell configuration file to be
~/.zshrc
(#444) - Fixed the Sphinx docs to show details of multi-word API endpoints (#442)
- Dropped the buggy/unnecessary
_get_headers
incivis.io.read_civis_sql
(#415) - Clarified the
table_columns
parameter incivis.io.*
functions (#434) - Warned about the
retry_total
parameter ofcivis.APIClient
being inactive and deprecated (#431) - Converted
assert
statements in non-test code into proper error handling (#430, #435) - Handled the index-out-of-bounds error when CSV preprocessing fails in
civis_file_to_table
by raising a more informative exception (#428) - Corrected camel to snake case for "sql_type" in
io
docstrings, and added an input check to catch misspellings in thetable_columns
input (#419).
Removed
- Dropped support for Python 3.6 (#436)
- Removed no-longer-used PubNub code (#425)
- Removed no-longer-supported Python 2 option for notebook creation in the CLI (#421)
Security
- Turned on
safety
andbandit
checks at CircleCI builds (#446)
v1.15.1
v1.15.0
Changed
- Bump minimum pubnub version to
4.1.12
(#397) - In
civis.io.civis_file_to_table
, ensure that data types are detected when table_columns are provided with no sql_types. Additionally, throw an error if some sql_types are provided and not others. (#400) - Retain specific sql types when there are multiple input files and
table_columns
specified incivis.io.civis_file_to_table
(#402) - Removed Python 3.5 support (#404)
- Updated list of base API resources to include
aliases
,git_repos
,json_values
,services
, andstorage_hosts
so that they show up in the sphinx docs (#406) - Update the API spec at
civis/tests/civis_api_spec.json
so that new endpoints are included (e.g.,/exports/files/csv
) (#407) - Refactor file cleaning logic for
civis.io.civis_file_to_table
(#405) - Refactored retry logic to use tenacity package, added random jitter on retries, and retry on POST 429 and 503s. (#401)
Fixed
v1.14.2
Added
- Added support for Python 3.8 (#391)
Fixed
- Fixed a bug in the CLI tool which caused failed commands to exit with a 0 exit status. (#389)
- Fixed some issues that the newly-released flake8 3.8 complained about, including a buggy print statement for logging in run_joblib_func.py. (#394)
- Fixed a bug when cancelling jobs while using the Civis joblib backend. (#395)
Changed
- Added additional detail to
civis.io.dataframe_to_civis
,civis.io.csv_to_civis
, andcivis.io.civis_file_to_table
's docstrings on the primary key parameter. (#388) - Made polling threads for Civis futures be daemon threads so that Python processes will shut down properly in Python 3.8 (#391)
- Removed deprecation warning on the
file_id
parameter ofcivis.io.civis_file_to_table
. The parameter name will be kept in v2. (#360, #393) - Show tables of methods for each set of endpoints in the API Resources pages. (#396)