* Initial implementation
* Expose various rich methods to fetch the new models
* Add localize parameters and remove useless payment_source parameters from front-facing fetch methods
* Implement fetching and (partially) redeeming gifts
* Slot remaining models
* Correctly document Gift.redeem() channel parameter
* Implement some stuffs, fix more stuffs, add creating/editing skus/store listings
* Various context properties fixes
* Fix various types, expose SubscriptionPlan
* (Partially) implement purchasing SKUs and gift flags
* Finish and clean-up store/applications API implementations
* Implement build uls, missing sub plan params, purchase sku ret
* Fix upload_files() warning
* Formatter pass
* Normalize include_x to with_x, add various small missing things
* Update sub on manual invoice payment instead of returning new object
* Black pass
* Implement missing integrations/applications API shit
* Implement Application.store_listing_sku_id
* Expose richer subscription metadata guild info
* Implement SKU.system_requirements localization and modification
* Black pass
* Implement premium usage
* Implement application whitelist
* Implement active developer program enrollment
* Readd new team members to cache
* Polishing
* Implement leaving active developer program
* Type everything
* Expose everything
* Implement relationship activity statistics, improve model
* Black pass
* Document everything
* Add crunchyroll connection type (#426)
* Fix type-checking error in PrivateChannel ABC (#427)
* Update required property fetching to new domain
* Pin black to v22.6
* Get pyright to shut up
* Black pass
* Get pyright to shut up
Segments where readability was hampered were fixed by appropriate
format skipping directives. New code should hopefully be black
compatible. The moment they remove the -S option is probably the moment
I stop using black though.
This is a breaking change.
This does the following transformations, assuming `asset` represents
an asset type.
Object.is_asset_animated() => Object.asset.is_animated()
Object.asset => Object.asset.key
Object.asset_url => Object.asset_url
Object.asset_url_as => Object.asset.replace(...)
Since the asset type now requires a key (or hash, if you will),
Emoji had to be flattened similar to how Attachment was done since
these assets are keyed solely ID.
Emoji.url (Asset) => Emoji.url (str)
Emoji.url_as => removed
Emoji.url.read => Emoji.read
Emoji.url.save => Emoji.save
This transformation was also done to PartialEmoji.
Most assets now return a new class named `Asset`. This allows for the
assets to be consistently saved via a `save` method instead of special
casing for `Attachment`.
`AppInfo` is no longer a namedtuple it is a fully documented dataclass,
as well as having the state attached to it.
Fixes#1997