* [Commands Module] Better Typehint Support
We now do a lot more with type hints
- No more rexporting d.py commands submodules
- New type aliases for GuildContext & DMContext
- More things are typehinted
Note: Some things are still not typed, others are still incorrectly
typed, This is progress.
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Removes `MAX_BALANCE` from bank, user `bank.get_max_balance()` now
`[p]bankset maxbal` can be used to set the maximum bank balance
Signed-off-by: Guy <guyreis96@gmail.com>
* Initial Commit
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* I need to make sure I keep aika on her toes.
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Fixes a few missing kwargs and case consistency
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Fixes a few missing kwargs and case consistency v2 and typos
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Reset cooldowns + add changelogs
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Add 3 extra file formats.
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* IRDUMB - fix capitalization.
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Fix a silent error, and some incorrect messages.
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Remove unnecessary emojis from queue when they are not needed
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Remove duplicated call in `[p]playlist update`
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Remove duplicated call in `[p]playlist update`
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Resolve conflicts
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Bring all files up to date + Black
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Facepalm
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* *Sigh*
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* *Sigh* 2.0
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Merge branch 'V3/develop' of https://github.com/Cog-Creators/Red-DiscordBot into audio-misc-pt1
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
# Resolve Conflicts:
# redbot/cogs/audio/audio.py
# redbot/cogs/audio/utils.py
* Import missing Typecheck
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Fix Broken docstrings
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Sort Local Tracks
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* 🤦
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Reorder the sorting of local tracks,
`alphanumerical lower then alphanumerical upper`
`a comes before A, but B comes after A`
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black formatting
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Make the local file sorting case insensitive
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Add global blacklist/whitelist + fix some issues with original server based whitelist/blacklist
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Remove the pre-commit yaml
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Nottin to see
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Further improvement to the blacklists
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Further improvement to the blacklists
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Fix the __str__ method on LocalTracks Object
* Rename LocalTracks.to_string_hidden() to LocalTracks.to_string_user() To keep it inline with the Query object
* Remove encoding pragmas + a few typo fixes
* Update some typehints + fix some typos
* Remove this duplicate call
* Black
* fix capitalization
* Address preda's review
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Remove the API from the audio cog
- Is in direct conflict with goals stated in #2804
- Features this was intended to enable can be enabled in other more
appropriate ways later on
* changelog
* Address Aika's review
* Black
* *sigh* dont use github web ui
* Fuck windows Long live linux... *sigh* no lets ensure windows users can still use local tracks
* Merge branch 'V3/develop' of https://github.com/Cog-Creators/Red-DiscordBot into refactoring
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
# Conflicts:
# redbot/cogs/audio/audio.py
* 👀 + chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* facepalm
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* facepalm... again y u h8 me bruh
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fuk this fuk u tube fuck python fuck all
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* awyehfqwajefhnqeffawefqa eqewarfqaesf qwef qaf qwfr
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fuck everything
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* oh lord saviour resus i love you just make this work
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Change logic to be no errors within last 10 seconds... this should be a valid work around discord ratelimits caused by the spam
* Remove auto deletion
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* See I did a ting
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* irdumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Add an is_url attribute to Query objects
* chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black
* Address Aikas review
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Hyperlink Playlist names
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Make shit bold
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* why was this here
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* why was this here
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Initial commit
* Workinnng
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Improve SQL Statements + migrate from SQL Alchemy + Databases to APSW
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* apsw tested and working
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* chose
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Migrate Playlist to DB 3 TODO
1 Migrate Config to Schema 3 without playlists
and update get_playlist methods
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Revert "Migrate Playlist to DB 3 TODO 1 Migrate Config to Schema 3 without playlists and update get_playlist methods"
This reverts commit 4af33cff
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Implement schema migration
* Lets not touch the deps since #3192 is already adding them
* chore
* *sigh* Black
* Follow the existing logic and always default Playlist to guild scope
* wghqjegqf black
* Update usage of last_fetched and last_updated to be Ints... However column migration still pending
* Some bug fixes
* Update usage of last_fetched and last_updated to be Ints... However column migration still pending
* working
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* partial match
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* better partial match
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* I thought i done this before
* Delete 3195.misc.1.rst
Wrong PR
* Thanks Sinbad
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Thanks Sinbad
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Log Errors in init ...
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Update error logs.
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Create index
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* :Drapersweat:
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Revert "Chore"
This reverts commit edcc9a9f
UGHHHH
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Allow removing tracks from queue by URL
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Words matter
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh*
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* arghhh CONFLICTS
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Review sinbads latest comment ..
ToDo.. Nuke existing playlist - check version and set version
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* migrate the DB schema to v3 (to keep in line with the schema visioning of Config
* Add a Todo
* *sigh* conflicts and black
* *sigh* black
* Passively delete playlist deletion mechanism
* Delete Old entries on startup
* Since we are dropping the table mightaware make these into JSON for future proofing
* Don't Dump strings in JSON field ? :think:
* Move some things around to make easier to use 1 connection to the Audio DB
* Move some things around to make easier to use 1 connection to the Audio DB
* *sigh*
* Clean up api
* *sigh* black
* Red + reorder some variables
* 🤦
* how could i forget this .......
* Black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* #automagically
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* FINAFUCKINGLY
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* FINAFUCKINGLY
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Remove unused config default
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Remove the API from the audio Cog (Properly)
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Missed these changes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* ARGHHH
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Some fixes I've noticed while running through the code line by line
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Translation + UX (show playlist author ID if can't find user)
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* missed this one
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* this is no longer needed ....
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* 🤦
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix new lines in error messages
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black
* Sinbads Review
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Sinbads Review
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* copy paste
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* imrpove backups
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Im a fucking idiot
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Fix#3238
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* humans
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* humans
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* add play alias to playlists
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Im dumb ...
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Im dumb ...
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix new line
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix new line
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* show playlist count on playlist picker
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* DJ/Vote system fixes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* DJ/Vote system fixes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* fix currency check
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* show playlist count on playlist picker
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* DJ/Vote system fixes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* DJ/Vote system fixes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* fix currency check
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Fix duplicate messages on timeout
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix SQL Statement logic
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix SQL Statement logic
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Markdown escape
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Markdown escape
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Markdown escape fix
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Markdown escape fix
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* clean up local cache more frequently
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* clean up db more frequently
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Await in hell
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* im dumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* im dumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black cuz I hate red
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black cuz I hate red
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* StringIO to ByteIO
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* StringIO to ByteIO
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* im dumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* :Facepalm: the whole purpose of this is so its offline so this can be backed up without being blocking
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Run write queries on ThreadPoolExecutor
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Backup Audio.db
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* im dumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* blaaaack
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh*
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* formatting
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* remove duplicated string of code
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* ffs awaits
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
Co-authored-by: Michael H <michael@michaelhall.tech>
* do better with loop cleanup
* changelog
* remove redundant line
* Do this a bit better than the initial pass
* Improve windows support
Make some other things coroutines to work with improved design
* Wish we'd have done this right from the start...
* Update deps surrounding this
- see bpo-23057
- neccessary for windows users
- nice for consistent support channel info / feature availability
* dep issue
* Fix tests
* duplication plugin py version
* actually handle this
* Reconfigure some checks with codeclimate, disable pylint for now
* style
* Is my exasperation showing yet?
* handle some stupid stuff
* meh
* dep changelog
* update windows deps instructions
* changelog
* be more explicit that manual dependency handling is an excersice left to the reader
* let's only grab the MSVC C++ stuff here...
* Meh
* update language
* Update install_windows.rst
* it's really that easy
* create
* add the code
* change de logs
* lets remember linux exists
* fix formtting and change wording
* change the wording a bit more... after running `sphinx-build` it def looks like i used bold a lot
god that was a long commit mesage
* review changes
* draper's review (see description)
i have put or worse partially to scare users and partially as there are other possible effects of a downgrade
* review
* clarity
* feat: dispatch `on_red_api_tokens_update` event on api keys update
* docs: add event reference in Shared API Keys docs
* chore(changelog): add tonwcrier entries
* fix: wrap dispatched api tokens in MappingProxyType
* docs: reflect change of type change to read-only Mapping
* feat(downloader): Install cog from specific commit in repo (initial commit)
- Repo and Installable have commit property now
- New class inheriting from Installable -
InstalledCog (old one from converters.py removed)
- New Repo.checkout() method, which is also async ctx manager
ref #2527
* fix(downloader): Keep information about repo's branch in config
- This is needed to make sure that repo can go back from detached state in some rare unexpected
cases
- current branch is determined by `git symbolic-ref` now as this command errors for detached
HEAD
* feat(downloader): Update repo without cogs, update single cog
The most important part of issue #2527 has been added here
- `[p]repo update` command added
- new conf format - nested dictionary repo_name->cog_name->cog_json
installed libraries are now kept in conf too
- `InstalledCog` renamed to `InstalledModule` - installed libraries use this class
- `Downloader.installed_libraries()` and `Downloader.installed_modules()` added
- `Downloader._add_to_installed()` and `Downloader._remove_from_installed()`
now accept list of modules, of both cogs and libraries
- `[p]cog install` tells about fails of copying cog and installing shared libraries
- `[p]cog update` will truly update only chosen cogs (if provided) or cogs that need update
- pinned cogs aren't checked
- before update, repos are updated
- to determine if update is needed `Repo.get_modified_modules()` is used
- `[p]cog pin` and `[p]cog unpin` commands for pinning/unpinning cogs added
- `Repo.checkout()` allows to choose ctx manager exit's checkout revision
- `Repo.install_cog()` returns `InstalledModule` now and raises CopyingError (maybe breaking?)
- `Repo.install_libraries()` returns 2-tuple of installed and failed libraries (maybe breaking?)
- `RepoManager.get_all_cogs()` added, which returns cogs from all repos
- `RepoManager.repos` property added, which contains tuple of `Repo`
* test(downloader): Repo.current_branch() throws an exception, when branch can't be determined
* style(downloader): rename _add_to_installed to _save_to_installed
This method is used for both adding and updating existing modules in Config
* refactor(downloader): add ctx.typing() for few commands
`[p]cog install` is nested hell, can't wait for moving install logic to separate method
* fix(downloader): refactor and fix `set` usage
* perf(downloader): update commits for ALL checked modules to omit diffs next time
This will also disable running git diff for cogs that have the same commit as the latest one
* style(downloader): few style improvements
- use of mutable object in method definition
- make Repo._get_full_sha1() public method
- too long
line
- don't use len to check if sequence is empty
* feat(downloader): add `[p]cog updateallfromrepos` and `[p]cog updatetoversion` commands
- moved cog update logic into `Downloader._cog_update_logic()` (lack of better name)
- splitted
whole cog update process into smaller methods
- might still need some improvements
- added new
methods to `Repo` class:
- `is_on_branch()` to check if repo is currently checked out to branch
- `is_ancestor()` to check if one commit is ancestor of the other
- fix for
`Downloader._available_updates()` behaviour
broken by commit
5755ab08ba67556b3863e907c6f44d80f4f13d88
* feat(downloader): try to find last commit where module is still present
Enhancements:
- `Installable` now has `repo` attribute containing repo object or `None` if repo is
missing
- `Downloader._install_cogs()` and `Downloader._reinstall_libraries()` are able to install
modules from different commits of repo
- `Repo.checkout()` as ctx manager will now exit to commit
which was active before checking out
- unification of `rev` and `hash` terms:
All function
parameters are explicitly called `hash`, if it can only be commit's full sha1 hash or `rev` if it
can be anything that names a commit object, see
[link](https://git-scm.com/docs/git-rev-parse#_specifying_revisions)
- new
`Repo.get_last_module_occurence()` method, which gets module's Installable from last commit in which
it still occurs
* docs(downloader): Add basic description for `InstalledModule`
* fix(downloader): cog ignored during updates if its commit was missing
After config format update, commit string is empty until update and when such cog was checked and it
wasn't available in repo anymore, it was ignored
* refactor(downloader): Installing cogs from specific rev will pin them
* perf(downloader): Don't checkout when current commit equals target hash
- changes to `Repo.checkout()`:
- `exit_to_rev` is now keyword only argument
- added
`force_checkout` to force checkout even if `Repo.commit` value is the same as target hash
* refactor(downloader): Repo._run() stderr is redirected to debug log now
- added two keyword arguments:
- `valid_exit_codes` which specifies valid exit codes, used to
determine if stderr should be sent as debug or error level in logging
- `debug_only` which
specifies if stderr can be sent only as debug level in logging
* style(downloader): stop using `set` as arg name in `_load_repos()`
* feat(downloader): pass multiple cogs to `[p]cog (un)pin`
* refactor(downloader): accept module name instead of instance, fix spelling
* style(downloader): few small style changes
* fix(downloader): add type annotations + fixes based on them
- fix wrong type annotations and add a lot of new ones
- add checks for `Installable.repo` being `None`
- fix wrong return type in `Downloader._install_requirements`
- show repo names correctly when updating all repos
- fix error when some requirement fails to install
BREAKING CHANGE:
- type of `Repo.available_modules` is now consistent (always `tuple`)
* tests: use same event loop policy as in Red's code
* enhance(downloader): fully handle ambiguous revisions
* build(deps): add pytest-mock dependency to tests extra
* fix(downloader): minor fixes
* feat(downloader): add tool for editing Downloader's test repo
This script aims to help update the human-readable version of repo
used for git integration tests in ``redbot/tests/downloader_testrepo.export``
by exporting/importing it in/from provided directory.
Note
----
Editing `downloader_git_test_repo.export` file manually is strongly discouraged,
especially editing any part of commit directives as that causes a change in the commit's hash.
Another problem devs could encounter when trying to manually edit that file
are editors that will use CRLF instead of LF for new line character(s) and therefore break it.
I also used `.gitattributes` to prevent autocrlf from breaking testrepo.
Also, if Git ever changes currently used SHA-1 to SHA-256 we will have to
update old hashes with new ones. But it's a small drawback,
when we can have human-readable version of repo.
Known limitations
-----------------
``git fast-export`` exports commits without GPG signs so this script disables it in repo's config.
This also means devs shouldn't use ``--gpg-sign`` flag in ``git commit`` within the test repo.
* tests(downloader): add git tests and test repo for them
Also added Markdown file that is even more clear than export file
on what the test repo contains.
This is manually created but can be automated on later date.
* test(downloader): add more tests related to RepoManager
These tests use expected output that is already guaranteed by git tests.
* chore(CODEOWNERS): add jack1142 to Downloader's folders
I know this doesn't actually give any benefit to people that don't have
write permission to the repo but I saw other big fella devs doing this,
so I think this might be advisable.
* enhance(downloader): allow easy schema updates in future
* enhance(downloader): more typing fixes, add comments for clarity
* feat(downloader): add python and bot version check to update process
follow-up on #2605, this commit fully fixes#1866
* chore(changelog): add towncrier entries
* fix(downloader): use `*args` instead of `commands.Greedy`
* fix(downloader): hot-reload issue - `InstallableType` now inherits from `IntEnum`
There's desync of `InstallableType` class types due to hot-reload
and `IntEnum` allows for equality check between different types
* enhance(downloader): ensure there's no cog with same name installed
should fix#2927
* fix(downloader): last few changes before marking as ready for review
* Add MS Azure to the list of hosting providers
* Fix some typos, wording, incorrect commands
* towncrier
* Update docs/getting_started.rst
Co-Authored-By: Michael H <michael@michaelhall.tech>
* Use stable instead of dev version
* changelog entry
* Rename 3020.docs.rst to 3021.docs.rst
* update wording in Getting Started
* add note about package layout
* fix some formatting
* spellcheck
* add cookiecutter note
* Update 3021.docs.rst
* docs: change links to d.py docs to use stable version instead of v1.0.1
* chore(changelog): add towncrier entry
* docs: add |DPY_VERSION| substitution and :dpy_docs: role
* chore(changelog): update towncrier entries to reflect new changes