- Supported Serve API:
v1.4.3
or newer
Added
- Ability to specify output filename by specifying a full path or a relative file name in CLI command
create-device
. - Add the staging privacy certificate (
staging.google.com
) toCdm.staging_privacy_cert
.- Similar to
common_privacy_cert
which would be used on Google's production license server, - Though this one is used on Google's staging license server (a production-ready testing server).
- Similar to
Changed
- Raise an error if a file already exists at the output path in CLI command
create-device
. - Use std-lib xml instead of lxml to reduce dependencies and support ARM (#35).
- Lessen restriction on Python version to any Python version
>=3.7
, but<4.0
.- I was hoping to do
^3.7
, but some dependencies also require<4.0
therefore I cannot, for now.
- I was hoping to do
- Move Key ID parsing to static
PSSH.parse_key_ids()
method. - The
shaka-packager
subprocess call's return code is now returned fromCdm.decrypt()
. - The flags variable of a
Device
now defaults to a dict, even if not set. - Heavily improve initializing of protobuf objects, improving readability, typing, and linting quite a bit.
- Renamed Device's
_Types
enum class toDeviceTypes
.
Removed
- Removed
Device.Types
class variable alias to_Types
enum class as a static linter cannot recognize a class
variable as a type. Instead, the actual_Types
(now namedDeviceTypes
) enum should be imported and used instead.
Fixed
- Ensure output directory exists before creating new
.wvd
files in CLI commandcreate-device
. - Ignore empty Key ID values in v4.0.0.0 PlayReadyHeaders.
- Remove
Cdm.system_id
class variable as it conflicted with thecdm.system_id
class instance variable of the same
name. It's also generally not needed. The same data can be gotten viaCdm.uuid.bytes
. - Casting of
type_
when passed a non-int value inCdm.get_license_challenge()
. - Pass a PSSH object in
test
CLI command instead of a string. - Lower-case and setup
__all__
correctly, add missing__all__
in some of the modules.- For the longest time I thought it was
__ALL__
and an iterable of objects/variables. - However, its actually
__all__
and explicitly a list of Strings...
- For the longest time I thought it was