Skip to content

Releases: civisanalytics/civis-python

v2.7.1

03 Jul 16:47
a5cd207

Choose a tag to compare

Fixed

  • Fixed civis.APIClient in the stub file for the new user_agent keyword argument. (#522)

v2.7.0

03 Jul 15:27
24a953e

Choose a tag to compare

Added

  • Added the keyword argument user_agent to civis.APIClient. (#521)

v2.6.0

02 Jul 17:09
e515730

Choose a tag to compare

Added

  • Added the keyword argument client to civis.utils.job_logs(). (#518)
  • Implemented ListResponse as a list of civis.Response objects that has "headers"
    information from a Civis API call. (#518)
  • The civis.io.* functions for dataframes support polars in addition to pandas. (#515)
    • For civis.io.read_civis_sql and civis.io.read_civis:
      The new kwarg return_as has been added. It defaults to "list" to maintain
      the same return behavior as civis-python <= v2.5.0.
      To return a dataframe, set return_as to either "pandas" or "polars".
    • For civis.io.dataframe_to_file and civis.io.dataframe_to_civis:
      Either a pandas or polars dataframe can now be directly used as input.
    • For civis.io.file_to_dataframe:
      The new kwarg return_as has been added. It defaults to "pandas" to maintain
      the same return behavior as civis-python <= v2.5.0.
      To return a polars dataframe, set return_as to "polars".
  • Added examples to civis.utils.job_logs() docstring (#510)

Changed

  • Updated Civis parallel backend's internals for refactored joblib's backend. (#513)
  • Updated the Sphinx docs for ListResponse and the Civis API. (#519)

Deprecated

  • The kwarg use_pandas at civis.io.read_civis_sql and civis.io.read_civis
    has been deprecated and will be removed at civis-python v3.0.0 (no release timeline yet).
    Its continued usage is discouraged, and please use the new kwarg return_as instead
    (see notes under the "added" section above).
  • The property feature_flags at a civis.APIClient instance is now deprecated.
    client.users.list_me()["feature_flags"] should be used instead. (#516)

Fixed

  • Switched from a pool to the concurrent.futures API in the file multipart upload
    implementation. (#520)
  • Fixed civis_logger for needing a user-provided __name__ as best practice. (#512)

Security

v2.5.0

24 Feb 18:42
16e418a

Choose a tag to compare

Added

  • Added civis.utils.job_logs() function to return a generator of log messages for a job run (#509)

Changed

  • Revised the CLI commands civis jobs follow-log and civis jobs follow-run-log to not skip log messages for running jobs (#509)

v2.4.3

13 Jan 19:10
d515389

Choose a tag to compare

Fixed

  • Fixed the way array query parameters are passed to a Civis API call,
    so that all items in an array are included in the correctly formatted URL. (#507)

v2.4.2

02 Jan 15:01
55fe7c2

Choose a tag to compare

Changed

  • Refactored docs/ since the docs/source/ subdirectory is no longer needed. (#506)

Fixed

  • Fixed the tool for checking if the upstream Civis API spec has changed. (#505)

Security

  • In docs build, bumped the transitive dependency jinja2's version from 3.1.4 to 3.1.5,
    due to CVE-2024-56326. (#506)

v2.4.1

27 Nov 14:30
2396478

Choose a tag to compare

Changed

  • Updated the Civis API spec in order to refresh the Sphinx docs on the Read The Docs site. (#504)

v2.4.0

11 Nov 21:55
24be84d

Choose a tag to compare

Added

  • The new kwarg retries has been added to civis.APIClient so that
    a tenacity.Retrying instance can be provided to customize retries. (#495)
  • Added civis.workflows.validate_workflow_yaml
    to validate a Civis Platform workflow YAML definition. (#497, #499)
  • The helper I/O functions that create a Civis file
    (i.e., civis.io.file_to_civis, civis.io.dataframe_to_file, and civis.io.json_to_file)
    accept a new description keyword argument for the new description attribute
    of Civis file objects. (#498, #500)
  • Response objects are now fully typed through the attribute syntax. (#501)
  • Both Response and PaginatedResponse are now directly available under the civis namespace. (#501)
  • Added support for Python 3.13. (#501)
  • Added the new property default_database_credential_id at civis.APIClient,
    which is going to replace the existing default_credential. (#502)

Changed

  • When a PaginatedResponse object is returned from an API call,
    a user-specified limit kwarg is now honored to facilitate speeding up the pagination. (#501)

Deprecated

  • The method get_database_credential_id at civis.APIClient has been deprecated
    and will be removed at civis-python v3.0.0. There's no replacement for this method. (#502)
  • The property default_credential at civis.APIClient has been deprecated
    and will be removed at civis-python v3.0.0,
    in favor of the new property default_database_credential_id. (#502)

Removed

  • Dropped support for Python 3.9. (#499)

Fixed

  • The repr form of Response objects is now the dict-based Response({‘spam’: 123})
    instead of the dataclass-based Response(spam=123), since response object keys can
    be invalid Python identifiers. (#501)
  • In Response object instantiation, object keys that originate from environment variables
    are now preserved for their (customarily upper-) case even in the default snake-case setting. (#501)
  • In Response object instantiation, an API response that represents a JSONValue object
    now has its value attribute unmodified as the Python object representation
    of the deserialized JSON form (as opposed to being converted to a Response-based form). (#501)

v2.3.0

14 Jun 16:00
894d2ea

Choose a tag to compare

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 the civis.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 and joblib.format_stack.format_exc,
    as well as the substantial changes to the internals of joblib.Parallel). (#488)
  • Bumped the minimum required version of joblib to v1.3.0,
    which is the version where joblib.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, and ModelFuture) 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 returns False now
    (this previously raised a TypeError). (#493)

Fixed

  • Fixed civis.parallel.make_backend_template_factory so that
    keyword arguments are now accepted and passed to client.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

28 May 20:47
3edbfe5

Choose a tag to compare

Added

  • civis.response.Response has its own "repr" and pretty-print format,
    instead of the previous dict-like representation that would incorrectly suggest immutability. (#487)
  • Added the --version flag to the command line interface. (#487)

Fixed

  • Fixed API response objects' .json() for lists. (#487)
  • Fixed civis_logger for always having the attribute propagate attribute set to False
    so that it can also be used for notebooks and services/apps on Civis Platform. (#487)