Changelog¶
2024-12-19: Version 5.4.0:
The package build now includes a universal Python 3 wheel. Contributed by @ymyzk
2024-10-04: Version 5.3.0:
Add support for searching by non-string fields in
pdpyras.APISession.find
2023-12-28: Version 5.2.0:
Expanded use of type hints in place of
:rtype
Sphinx directiveRemove unused dependency
deprecation
Fix bug: path
/tags/{id}/{entity_type}
breaks entity wrapping logic (issue #130)
2023-11-15: Version 5.1.3:
Remove deprecated escape sequences, which were causing downstream linter/unit test errors, from docstrings
Remove references to removed properties from the module reference that were causing Sphinx warnings
2023-09-12: Version 5.1.2:
Address issue #115 by adding default values to
pdpyras.PDSession.retry
for Events and Change Events API client classesUpgrade CI images
Add support for Python 3.11
2023-07-18: Version 5.1.1:
Fix bug: using
iter_all
on an endpoint that supports cursor-based pagination should correctly call out toiter_cursor
(it was making the call but with a removed keyword argument)
2023-06-26: Version 5.1.0:
- New features:
Add the ability to specify a timestamp when submitting a change event by supplying keyword argument
timestamp
toChangeEventsAPISession.submit
Explicitly include the upstream exception as cause when raising due to a non-transient network error
- Breaking Changes:
- Removal of deprecated functions:
pdpyras.tokenize_url_path
pdpyras.resource_envelope
pdpyras.object_type
pdpyras.resource_name
pdpyras.raise_on_error
- Removal of deprecated keyword arguments:
__init__
for all session classes no longer acceptsname
pdpyras.APISession.iter_all
no longer acceptspaginate
pdpyras.APISession.iter_cursor
no longer acceptsattribute
- Removal of deprecated object methods/properties:
pdpyras.APISession.profiler_key
pdpyras.APISession.raise_if_http_error
2023-06-07: Version 5.0.4:
Fix bug:
/users/me
is also ambiguously matched by canonical path/users/{id}
; the solution by @asmith-pd short-circuits if there is an exact match for the URL to a canonical path
2023-05-17: Version 5.0.3:
Incorporate bugfix from #103 by @av1m
Fix the generic issue behind #102 (unsafe mix of string formatting styles)
In HTTP retry exhaustion messages, print only the limit that got reached and not necessarily the per-status HTTP retry
2023-05-01: Version 5.0:
Note: version 5.0.0 has been yanked; patch release v5.0.1 addresses an issue in setup.py
.
- New Features:
Methods that assume entity wrapping like
rget
anditer_all
now support all API endpointsProperty
PDSession.print_debug
enables printing verbose log messages tosys.stderr
- Breaking Changes:
Removal of the deprecated method
PDSession.set_api_key
End support for Python v3.5, which has reached end-of-life.
- Deprecations: the following will be removed in the next minor release, and use of them in v5.0.0 will trigger warnings:
Keyword argument
name
of the session constructor: this previously set the name of the logger; now it has no effect.Keyword argument
paginate
ofAPISession.iter_all
: this previously could be set toFalse
to makeiter_all
stop iteration after the first page of results; now it has no effect.Keyword argument
attribute
ofAPISession.iter_cursor
: this previously could be used to specify the entity wrapper name of results. The wrapper is now determined automatically and this argument has no effect.Function
tokenize_url_path
Function (decorator)
resource_envelope
Function
object_type
Function
raise_on_error
Function
resource_name
Property
APISession.raise_if_http_error
: this previously allowed partial results to be returned fromiter_all
in the case of HTTP errors; now it has no effect.Function
APISession.profiler_key
2022-10-13: Version 4.5.2
The default value for request timeouts is now 60s.
Method
api_key_access
is now implemented as a property in the classAPISession
. Formerly it was implemented in the parent classPDSession
and inherited in classes that did not need it and could not use it.Bug in version 4.5.1 (removed) in package distribution/build fixed
2022-02-22: Version 4.5.0
Add a new API generator
iter_cursor
toAPISession
that yields results from API endpoints that support cursor-based pagination, requesting the next page of results whenever needed.
2022-01-18: Version 4.4.0
Added new error class
PDHTTPError
for strictly application-level errors (i.e. HTTP responses vs. network errors), inherits fromPDClientError
Removed unnecessary dependencies that were hold-outs from Python 2.7 compatibility (deprecated)
Automatically add square brackets to query parameters that are of list type if the user forgets to do so, per the requirement of using set filters
Fix bug: the
PDSession.stagger_cooldown
feature added in version 3.2 only applied to network error/retry; it now applies to all forms of retrialAdd “update” keyword argument to
APISession.persist
that updates any existing resource with the provided values
2021-06-28: Version 4.3.0
Make timeout configurable per-session as an instance variable (based on a suggestion in pull #48 made by @badnetmask)
Drop support for Python 2.7
Improve code samples formatting improvement (@jackton1 / #65)
Replace deprecated escape sequence for the double-splat operator in docstrings (@ashwin153 / #68)
2021-05-13: Version 4.2.1
Implement work-around for issue in response plays API (issue #61)
2021-05-04: Version 4.2.0
Add new change events API client class (@hunner / #56)
2021-03-18: Version 4.1.4
- Fix regression in
EventsAPISession.post
Use case: explicitly-defined body (
json
keyword argument) without arouting_key
parameterThis was previously possible (before version 4.1.3) with the
X-Routing-Key
header (an undocumented API feature)
- Fix regression in
2021-03-10: Version 4.1.3
Use documented method for including the routing key in the request for API V2 (addresses #53)
Add warning for Python 2.7
Configurable timeout: argument to
requests.Session.request
set in default args to backwards-compatible 5 second value that can be set at the module level (@ctrlaltdel / #48)
2020-09-15: Version 4.1.2
- Address issue #37 and add other enhancements to
iter_all
: Stop iteration in
iter_all
if the iteration limit (10000) is encountered, versus erroring out (because exceeding it will elicit a 400 response)Add the ability to set an initial offset via
params
versus always starting fromoffset=0
initer_all
- Address issue #37 and add other enhancements to
Capitalize “constants”
2020-06-26: Version 4.1.1
Define class variable
retry
initially as{}
instead ofNone
(#32)
2020-03-08: Version: 4.1
Added new idempotent resource creator function,
APISession.persist
Added the ability to use resource dictionaries (that have a
self
attribute) in place of URLs.
2020-02-04: Version 4.0
Added support for using OAuth 2 access tokens to authenticate (#23)
Added a property that indicates the access level/scope of a given API credential (#22)
2020-01-10: version 3.2.1
Fixed bug in
APISession.trunc_token
; property name typo causesAttributeError
2019-10-31: version 3.2
The page size (
limit
) parameter can now be set on a per-call basis in any of the*_all
methods (i.e.PDSession.iter_all
) by passing thepage_size
keyword argument. If the argument is not present, the default page size will be used.The
X-Request-Id
header in responses is now captured in log messages to make it easier to identify API calls when communicating with PagerDuty SupportExtended API call metadata is also now logged.
The cooldown time between rate limit responses can optionally be randomized by setting
PDSession.stagger_cooldown
to a positive number.
2019-10-01: version 3.1.2
Fixed regression bug / departure from documentation (#17): the
payload
parameter does not merge with but rather completely replaces the default payload
2019-04-05: version 3.1.1
- Changed behavior of HTTP retry that caused issues with some internal tools: raising
PDClientError
in the event of non-transient HTTP error, in therequest
method, versus returning the request object and logging it. The previous behavior was: Not the intended design
At odds with the documentated behavior
- Changed behavior of HTTP retry that caused issues with some internal tools: raising
2019-04-05: version 3.1:
Introduction of a custom
User-Agent
header to distinguish the API client as such, for the purposes of usage analytics
2019-04-02: version 3.0.2:
Important bug fixes to the custom HTTP retry logic:
Fixed
KeyError
inAPISession.request
Fixed incorrect behavior (retrying more than the specified amount of times) due to faulty comparison logic
2019-03-14: version 3.0.1:
A light Events API client methods refactor:
All keyword arguments specific to sending trigger events have been refactored out of the generic
EventsAPISession.send_event
methodNow, instead,
send_event
and uses a catch-all keyword argument to set event properties.The keyword arguments specific to triggering incidents are in the method EventsAPISession.trigger method.
2019-03-12: version 3.0:
Added new Events API session class that still has most of the same functional features as the REST API session class.
2019-01-28: version 2.4.1:
Fixed bug: unpacking wrapped entities does not work with
/log_entries
2019-01-10: version 2.4:
Whitelisting of endpoints supported by the
r*
/*_all
methods has been rescinded, and documentation has been updated with how to identify endpoints that these methods can be used with.
2019-01-03: version 2.3:
More helpful error messaging when using
r*
/*_all
methods on endpoints they don’t supportResource envelope auto-unpacking no longer validates for the presence of a
type
property in order to support posting to business impact metrics
2018-12-04: version 2.2:
Methods
list_all
anddict_all
turn all results from an index into a list/dict to save a bit of effort
2018-11-28: version 2.1:
Support for performing multi-update actions (i.e. Manage Incidents) via the
rput
method.The default behavior of
iter_all
is now to raise an exception if an error response is received from the API during iteration.
Changelog Started 2018-11-28