Since version 1.0, the value passed to
SpaceTrackClient.callback, if set, is from
time.monotonic()but the documentation was not updated to reflect this.
downloadrequest classes for the
Support for Python 3.12
Support for Python 3.7
requests which should have been streamed (e.g.
iter_content=True) were not.
requests which need to follow redirects work again.
asyncextra no longer exists because the
AsyncSpaceTrackClientis available by default.
Support for Python 3.6
The modeldef for the fileshare/download class was deprecated by Space-Track, so the client no longer uses this API.
Support for the car, folder, and satellite classes.
A rush storage backend can be provided to a new
rush_storeargument to coordinate rate limiting across multiple instances.
rush_key_prefixto optionally prefix keys used in the rush storage backend.
parse_typesis used, dates are parsed using an ISO 8601 parser, which fixes the parsing of date formats returned by newer request classes (e.g. gp).
Support for the cdm_public and gp_history classes.
Support for Space-Track’s per-hour rate limit in addition to the per-minute limit.
The per-minute rate limit was increased to 30 as documented by Space-Track.
Require aiohttp 3 for the
AsyncSpaceTrackClientis now an asynchronous context manager. Use
async withinstead of
Support for Python 2.7, 3.4, and 3.5.
Support for the general perturbations (gp) class.
Regression in 0.13 that prevented
spephemeris/downloadfrom working by trying to load a model definition which it doesn’t have.
The ‘text’ predicate type is now understood.
Unknown predicate types issue a warning instead of raising an exception.
base_urlparameter to allow the use of an alternate Space-Track server.
The deprecation warning about importing
asyncextra installs aiohttp 2 because
spacetrackis not yet aiohttp 3 compatible.
Deprecation warnings about invalid escape sequences.
spacetrackcan be installed with setuptools v38.0+, which requires
setup.pyto be ordered.
parse_typesflag to optionally parse types as described by the
maneuver_historyrequest classes for
deleterequest classes for
Predicates with the enum type are parsed correctly. Previously, single-valued enums had
Noneas a second value, and enums with more than two values only had the first and last value due to the regex match not capturing repeated groups. The values aren’t used by
spacetrack, so the bug went unnoticed.
Exception on Python 3.5+ in threads without an
asyncioevent loop (even using the normal
SpaceTrackClient). Fixed by requiring
Require aiohttp >= 2.0 for the
Request controller can be passed explicitly to methods that take a request class, because some request classes are present in more than one controller.
Request controller proxy attribute, e.g.
SpaceTrackClient.fileshare.file(), which is equivalent to
dir(SpaceTrackClient(...))now includes the request controllers and request classes so it’s easier to see what can be called.
/modeldefAPI not queried if no predicates are passed. This allows
spephemeris/downloadto be used, which doesn’t have a model definition.
Calling request class methods uses first request controller that matches. The order is stored in the keys of the
SpaceTrackClient.request_controllersordered dict, currently
spephemeris. Any new request controllers will be added to the end, to preserve lookup order. New request classes that would change the order will accompany a major version bump.
AsyncSpaceTrackClientuses requests’ CA file for same experience with both clients.
Bump ratelimiter version to improve rate limiting for
Documentation included in source distribution.
Some unit tests added for
\nnewline conversion for async chunk iterator.
AsyncSpaceTrackClientcan no longer be imported from the top level
spacetrackmodule, since this would cause an error if optional dependency
aiohttpwas not installed. It must be imported from
downloadrequest classes for
uploadrequest class removed, unable to test.
Rate limit violation HTTP status code 500 handled during predicate information request.
ValueErrorif receiving binary data (currently only possible with
Removed internal method
_get_predicate_fields, set comprehension used inline instead.
Predicateclass now has a