Skip to content

Add Plugin Mechanism #11435

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

beeankha
Copy link
Member

@beeankha beeankha commented Apr 26, 2022

A conda plugin system was initially implemented by @FFY00 in #11121; this initial PR will remain open for reference until all of the work discussed in Issue #11112 is complete.


This particular PR's purpose is to split out the mechanism/infrastructure parts of that work so that we can merge the new plugins feature via manageable chunks that can be fully tested before implementing specific plugins (e.g., virtual packages, authentication, shell integration, license acceptance, etc).

We will also be adding documentation relevant to the work being implemented in this PR (a simple tutorial, an overview of how the infrastructure portion of the plugins works, etc)

@beeankha beeankha requested a review from a team as a code owner April 26, 2022 21:06
@anaconda-issue-bot anaconda-issue-bot added the cla-signed [bot] added once the contributor has signed the CLA label Apr 26, 2022
@beeankha beeankha added the plugins pertains to a plugin/subcommand label Apr 26, 2022
@beeankha beeankha force-pushed the initial_plugin_implementation branch from e9045cf to 11096ad Compare April 26, 2022 23:23
@beeankha beeankha assigned jezdez and unassigned FFY00 Apr 27, 2022
@beeankha beeankha force-pushed the initial_plugin_implementation branch 8 times, most recently from 7c2a1e6 to 1fd8d2a Compare May 9, 2022 17:58
@beeankha beeankha changed the title [WIP] Add in Plugin Mechanism Add in Plugin Mechanism May 9, 2022
@beeankha beeankha force-pushed the initial_plugin_implementation branch 4 times, most recently from a7a6cf8 to fc952f4 Compare May 12, 2022 18:48
@jezdez jezdez added this to the 4.14.0 milestone May 13, 2022
@beeankha beeankha force-pushed the initial_plugin_implementation branch 7 times, most recently from 3ec444c to 7508c52 Compare May 23, 2022 22:24
beeankha and others added 4 commits August 31, 2022 15:29
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
@beeankha beeankha force-pushed the initial_plugin_implementation branch from 203565c to 23ad3a7 Compare August 31, 2022 19:29
kenodegard
kenodegard previously approved these changes Aug 31, 2022

@conda.plugins.register
def conda_subcommands():
...
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So each hook implementation is supposed to have the same name and number of arguments as a hook spec. So far there is only a "conda_subcommands" hook spec. pluggy only checks the name and number of arguments, and doesn't do any e.g. isinstance or Python annotations checks.

Then pluggy makes it easy to call every registered conda_subcommands function by calling pluginmanager.hook.conda_subcommands(arguments), (in this case no arguments), passes any arguments to all the plugins, and returns a list (in this case a list of lists) of results.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

correct, we have some ideas for making this cleaner/safer but yes that's roughly how pluggy works

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it should be straightforward to e.g. read type annotations off the collected hooks instead of calling them right away, if we wanted to do pluggy++

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe the stdlib doesn't have 'are these two type annotations compatible' functions

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but since this is Python we should also follow duck typing, looks like a plugin, acts like a plugin 🤷🏼‍♂️

@kenodegard kenodegard merged commit 03d65ca into conda:feature/plugins Aug 31, 2022
@beeankha beeankha mentioned this pull request Sep 9, 2022
2 tasks
beeankha added a commit to beeankha/conda that referenced this pull request Sep 9, 2022
Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
beeankha added a commit to beeankha/conda that referenced this pull request Sep 16, 2022
Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
jezdez added a commit that referenced this pull request Oct 13, 2022
Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
travishathaway added a commit to travishathaway/conda that referenced this pull request Oct 18, 2022
Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
travishathaway added a commit that referenced this pull request Oct 19, 2022
* Add `win-arm64` as a recognized platform (#11778)

* Rename `conda.recipe` to `recipe` (#11774)

* Rename conda.recipe to recipe

* Add news

* Update canary-release action version (#11799)

* Updated conda CLI help to be better for users. (#11708)

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>

* 🔄 Synced file(s) with conda/infra (#11827)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Fix pypy win (#11734)

* [pre-commit.ci] pre-commit autoupdate (#11833)

updates:
- [github.com/akaihola/darker: 1.5.0 → 1.5.1](akaihola/darker@1.5.0...1.5.1)
- [github.com/PyCQA/pylint: v2.15.0 → v2.15.2](pylint-dev/pylint@v2.15.0...v2.15.2)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fixes an issue that we are having with carnary builds (#11803)

* Fixes an issue that we are having with carnary builds

See this issue for more information:
conda/conda-build#4572

* undoing upates to cytoolz

* Update CONTRIBUTING.md (#11816)

Change all references to `triaging` to `issue sorting` per conda/infrastructure#575

* Release 22.9.0 (#11844)

* Updated .authors.yml

* Updated .mailmap

* Updated news

* Updated authorship for 22.9.0

* Updated CHANGELOG for 22.9.0

* Added first contributions

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add special announcement to changelog.

* Remove emoji to not freak out rever.

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Expose --mach and --arch to devenv script (#11851)

* [pre-commit.ci] pre-commit autoupdate (#11859)

updates:
- [github.com/PyCQA/pylint: v2.15.2 → v2.15.3](pylint-dev/pylint@v2.15.2...v2.15.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* 🔄 Synced file(s) with conda/infra (#11853)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Require `ruamel.yaml` (#11868)

* Update requirements.txt (#11842)

Updating the flask to address multiple CVEs including ones listed in #11831

* Grammatical correction in docs (#11870)

* Removed allow_other_channels from conda docs. (#11866)

* Use maintained `ruamel.yaml` (#11837)

* Try using maintained ruamel.yaml

The conda specific fork is maintained as a conda package only
in
https://github.com/conda-forge/ruamel_yaml-feedstock/tree/master/recipe.
My understanding of what's being patched there seems to indicate it's
just the __init__.py file. I'm hoping just a rename of the
import will be enough, or at least surface what real problems exist.

Ref #10691

* Only use ruamel.yaml

* Use updated ruamel.yaml API

stringio

* Cache yaml parsers

* TEMP CI CHANGE, REMOVE BEFORE MERGE

* Add ruamel_yaml fallback

* Add news

* Undo CI fixes

* Update news

Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>

* document conda-build: pkg_format: 2 (#11881)

* document conda-build: pkg_format: 2
* Apply suggestions from code review

Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>

* Extract script building into helper functions for `conda init --dev` (#11862)

* 🔄 Synced file(s) with conda/infra (#11896)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Refactor conda init shells as argparse choices (#11897)

* remove encoding pragma (not needed in Python 3) (#11880)

* remove encoding pragma (not needed in Python 3)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fail with a readable error message if PackageCacheRecords are missing (#11591)

* Fail with a readable warning if PackageCacheRecords are missing

* Minor fixes to error message.

This also doesn’t use cont.io for the tests.

* More test fixes and minor code cleanup.

* Update news/11591-readable-error-message-if-packagecacherecords-missing

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Avoid a specific case where `conda env update` hangs. (#11818)

When using an environment.yml that asks pip to clone a git repo and
that path exists, pip will ask for user input. As we are not in a
context to provide such, tell pip what to do so it doesn't hang on
waiting for user input.

* Download packages in parallel (#11841)

* format package_cache_data.py with black
* download packages in threads
* improve test coverage
* Apply suggestions from code review

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Removed ref left behind from removing allow_other_channels docs. (#11908)

* Enable one single test for linux-{aarch64, ppc64le} (#11911)

Run one single fast test per docker+qemu emulated linux platform to test that
test execution is possible there (container+tools+dependencies work). Can be
changed / extended to run specific tests in case there are platform related
things to test. Running more tests is time consuming due to emulation
(factor 2-10x slower).

* Fixed broken URL in conda docs (#11902)

* Replaced bad link.

* Updated release note.

* Update xprocess minio pattern (#11924)

* Updated conda cheatsheet for 4.14.0 release. (#11768)

* Fix for conda update and install issue related to notices (#11852)

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add pyupgrade to pre-commit (#11909)

* [pre-commit.ci] auto fixes from pre-commit.com hooks (#11928)

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Introduce git-blame-ignore-revs file, add pyupgrade commit to it (#11929)

* Update ci-skip workflow. (#11935)

This was forgotten when the 3.10 changes were made.

* Check for conda before calling shell hook (#11374)

* Check conda PS1 hook before calling it
* Check for hook script in fish/xonsh/bash
* Adapt test_init_sh_user_windows

* Removing an outdated piece of documentation (#11943)

* Fix bullet point list formatting (#11945)

* Change `metadata_signature_status`'s default value (#11944)

* Change metadata_signature_status's default value

* Add news

* Fix CI workflows to always run (#11941)

* Get rid of the docs check.

* Use all-greens action to use just one job for branch protection.

* add LD_PRELOAD (#11926)

Co-authored-by: Mahe Iram Khan <maheiramkhan@Mahes-MacBook-Pro.fritz.box>

* restore CondaMultiError from package downloads (#11959)

* restore CondaMultiError from package downloads

* [pre-commit.ci] pre-commit autoupdate (#11947)

updates:
- [github.com/asottile/pyupgrade: v2.38.2 → v3.0.0](asottile/pyupgrade@v2.38.2...v3.0.0)
- [github.com/PyCQA/pylint: v2.15.3 → v2.15.4](pylint-dev/pylint@v2.15.3...v2.15.4)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Update a few actions to reduce warnings. (#11963)

* Changed mentioned conda version (#11810)

* Check for actions updates every week. (#11962)

* Bump conda/actions from 22.2.1 to 22.9.0 (#11965)

Bumps [conda/actions](https://github.com/conda/actions) from 22.2.1 to 22.9.0.
- [Release notes](https://github.com/conda/actions/releases)
- [Commits](conda/actions@v22.2.1...v22.9.0)

---
updated-dependencies:
- dependency-name: conda/actions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Remove toolz accumulate (#11879)

* substitute for toolz.groupby (#11913)

* substitute for toolz.groupby

* Remove custom `argparse` aliases (#11747)

* Remove custom aliasing logic

* Move argument inline into `add_subparsers`

This was added in Python 3.7.

* 🔄 Synced file(s) with conda/infra (#11969)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* UTF 16 and UTF 32 fixes (#9946)

* Use a loop to ensure that prefix is replaced even in utf-16 cases

* Specify little endian and big endian

* Fixup the binary replacement

* keep backward portability

* Add some tests

* Make encoding a string in tests

* Just use a loop

* Match from beginning of prefix

* Add a comment as to why we specify -le and -be

* Attempt minimal changes for binary replacement using a single regex

* Fixup regex

* removing unnecessary

* reverting previous state of some test

* fixing more issues with tests

* updates to enhance code readability

* updating type hint to use Enum

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>

* Replace "experimental solver" with just "solver" (#11889)

* Replace "experimental solver" with just solver

* mock is part of unittest

* add newline for clearer error message

* one more instance

* pre-commit fixes

* PendingDeprecationWarning preferred at this stage

* argparse.Action base class implements __call__ abstractly - do not super()!

* actually, better inherit from _StoreAction

* satisfy pre-commit

* better

* that tiiiny space

* add news

* Update issue template.

* Remove trailing whitespace.

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Add Plugin Mechanism (#11435)

Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Merging latest `main` changes into `feature/plugins` (#11940)

* Add `win-arm64` as a recognized platform (#11778)

* Rename `conda.recipe` to `recipe` (#11774)

* Rename conda.recipe to recipe

* Add news

* Update canary-release action version (#11799)

* Updated conda CLI help to be better for users. (#11708)

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>

* 🔄 Synced file(s) with conda/infra (#11827)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Fix pypy win (#11734)

* [pre-commit.ci] pre-commit autoupdate (#11833)

updates:
- [github.com/akaihola/darker: 1.5.0 → 1.5.1](akaihola/darker@1.5.0...1.5.1)
- [github.com/PyCQA/pylint: v2.15.0 → v2.15.2](pylint-dev/pylint@v2.15.0...v2.15.2)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fixes an issue that we are having with carnary builds (#11803)

* Fixes an issue that we are having with carnary builds

See this issue for more information:
conda/conda-build#4572

* undoing upates to cytoolz

* Update CONTRIBUTING.md (#11816)

Change all references to `triaging` to `issue sorting` per conda/infrastructure#575

* Release 22.9.0 (#11844)

* Updated .authors.yml

* Updated .mailmap

* Updated news

* Updated authorship for 22.9.0

* Updated CHANGELOG for 22.9.0

* Added first contributions

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add special announcement to changelog.

* Remove emoji to not freak out rever.

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Expose --mach and --arch to devenv script (#11851)

* [pre-commit.ci] pre-commit autoupdate (#11859)

updates:
- [github.com/PyCQA/pylint: v2.15.2 → v2.15.3](pylint-dev/pylint@v2.15.2...v2.15.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* 🔄 Synced file(s) with conda/infra (#11853)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Require `ruamel.yaml` (#11868)

* Update requirements.txt (#11842)

Updating the flask to address multiple CVEs including ones listed in #11831

* Grammatical correction in docs (#11870)

* Removed allow_other_channels from conda docs. (#11866)

* Use maintained `ruamel.yaml` (#11837)

* Try using maintained ruamel.yaml

The conda specific fork is maintained as a conda package only
in
https://github.com/conda-forge/ruamel_yaml-feedstock/tree/master/recipe.
My understanding of what's being patched there seems to indicate it's
just the __init__.py file. I'm hoping just a rename of the
import will be enough, or at least surface what real problems exist.

Ref #10691

* Only use ruamel.yaml

* Use updated ruamel.yaml API

stringio

* Cache yaml parsers

* TEMP CI CHANGE, REMOVE BEFORE MERGE

* Add ruamel_yaml fallback

* Add news

* Undo CI fixes

* Update news

Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>

* document conda-build: pkg_format: 2 (#11881)

* document conda-build: pkg_format: 2
* Apply suggestions from code review

Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>

* Extract script building into helper functions for `conda init --dev` (#11862)

* 🔄 Synced file(s) with conda/infra (#11896)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Refactor conda init shells as argparse choices (#11897)

* remove encoding pragma (not needed in Python 3) (#11880)

* remove encoding pragma (not needed in Python 3)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fail with a readable error message if PackageCacheRecords are missing (#11591)

* Fail with a readable warning if PackageCacheRecords are missing

* Minor fixes to error message.

This also doesn’t use cont.io for the tests.

* More test fixes and minor code cleanup.

* Update news/11591-readable-error-message-if-packagecacherecords-missing

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Avoid a specific case where `conda env update` hangs. (#11818)

When using an environment.yml that asks pip to clone a git repo and
that path exists, pip will ask for user input. As we are not in a
context to provide such, tell pip what to do so it doesn't hang on
waiting for user input.

* Download packages in parallel (#11841)

* format package_cache_data.py with black
* download packages in threads
* improve test coverage
* Apply suggestions from code review

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Removed ref left behind from removing allow_other_channels docs. (#11908)

* Enable one single test for linux-{aarch64, ppc64le} (#11911)

Run one single fast test per docker+qemu emulated linux platform to test that
test execution is possible there (container+tools+dependencies work). Can be
changed / extended to run specific tests in case there are platform related
things to test. Running more tests is time consuming due to emulation
(factor 2-10x slower).

* Fixed broken URL in conda docs (#11902)

* Replaced bad link.

* Updated release note.

* Update xprocess minio pattern (#11924)

* Updated conda cheatsheet for 4.14.0 release. (#11768)

* Fix for conda update and install issue related to notices (#11852)

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add pyupgrade to pre-commit (#11909)

* [pre-commit.ci] auto fixes from pre-commit.com hooks (#11928)

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Introduce git-blame-ignore-revs file, add pyupgrade commit to it (#11929)

* Update ci-skip workflow. (#11935)

This was forgotten when the 3.10 changes were made.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: Cheng H. Lee <chenghlee@users.noreply.github.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>
Co-authored-by: Conda Bot <18747875+conda-bot@users.noreply.github.com>
Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>
Co-authored-by: Isuru Fernando <isuruf@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Shaun Walbridge <46331011+scdub@users.noreply.github.com>
Co-authored-by: Nikhil Raverkar <raverkar.nikhil@gmail.com>
Co-authored-by: Satyam Vyas <vyas.satyam.04@gmail.com>
Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>
Co-authored-by: Daniel Holth <dholth@anaconda.com>
Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com>
Co-authored-by: Samson Yeung <samson_gh@onepatchdown.net>
Co-authored-by: Daniel Bast <2790401+dbast@users.noreply.github.com>

* remove unused import; silence typing error (#11951)

* Update feature/plugins branch with current main. (#11961)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Cheng H. Lee <chenghlee@users.noreply.github.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>
Co-authored-by: Conda Bot <18747875+conda-bot@users.noreply.github.com>
Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>
Co-authored-by: Isuru Fernando <isuruf@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Shaun Walbridge <46331011+scdub@users.noreply.github.com>
Co-authored-by: Nikhil Raverkar <raverkar.nikhil@gmail.com>
Co-authored-by: Satyam Vyas <vyas.satyam.04@gmail.com>
Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>
Co-authored-by: Daniel Holth <dholth@anaconda.com>
Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com>
Co-authored-by: Samson Yeung <samson_gh@onepatchdown.net>
Co-authored-by: Daniel Bast <2790401+dbast@users.noreply.github.com>
Co-authored-by: wulmer <wulmer@users.noreply.github.com>
Co-authored-by: Mahe Iram Khan <65779580+ForgottenProgramme@users.noreply.github.com>
Co-authored-by: Mahe Iram Khan <maheiramkhan@Mahes-MacBook-Pro.fritz.box>
Co-authored-by: Arqam Hussain <70997750+arq0017@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Harfouche <mark.harfouche@gmail.com>
Co-authored-by: Jaime Rodríguez-Guerra <jaimergp@users.noreply.github.com>
Co-authored-by: Bianca Henderson <beeankha@gmail.com>
Co-authored-by: Filipe Lains <lains@riseup.net>
travishathaway added a commit to travishathaway/conda that referenced this pull request Oct 20, 2022
Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
travishathaway added a commit to travishathaway/conda that referenced this pull request Oct 20, 2022
* Add `win-arm64` as a recognized platform (conda#11778)

* Rename `conda.recipe` to `recipe` (conda#11774)

* Rename conda.recipe to recipe

* Add news

* Update canary-release action version (conda#11799)

* Updated conda CLI help to be better for users. (conda#11708)

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>

* 🔄 Synced file(s) with conda/infra (conda#11827)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Fix pypy win (conda#11734)

* [pre-commit.ci] pre-commit autoupdate (conda#11833)

updates:
- [github.com/akaihola/darker: 1.5.0 → 1.5.1](akaihola/darker@1.5.0...1.5.1)
- [github.com/PyCQA/pylint: v2.15.0 → v2.15.2](pylint-dev/pylint@v2.15.0...v2.15.2)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fixes an issue that we are having with carnary builds (conda#11803)

* Fixes an issue that we are having with carnary builds

See this issue for more information:
conda/conda-build#4572

* undoing upates to cytoolz

* Update CONTRIBUTING.md (conda#11816)

Change all references to `triaging` to `issue sorting` per conda/infrastructure#575

* Release 22.9.0 (conda#11844)

* Updated .authors.yml

* Updated .mailmap

* Updated news

* Updated authorship for 22.9.0

* Updated CHANGELOG for 22.9.0

* Added first contributions

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add special announcement to changelog.

* Remove emoji to not freak out rever.

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Expose --mach and --arch to devenv script (conda#11851)

* [pre-commit.ci] pre-commit autoupdate (conda#11859)

updates:
- [github.com/PyCQA/pylint: v2.15.2 → v2.15.3](pylint-dev/pylint@v2.15.2...v2.15.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* 🔄 Synced file(s) with conda/infra (conda#11853)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Require `ruamel.yaml` (conda#11868)

* Update requirements.txt (conda#11842)

Updating the flask to address multiple CVEs including ones listed in conda#11831

* Grammatical correction in docs (conda#11870)

* Removed allow_other_channels from conda docs. (conda#11866)

* Use maintained `ruamel.yaml` (conda#11837)

* Try using maintained ruamel.yaml

The conda specific fork is maintained as a conda package only
in
https://github.com/conda-forge/ruamel_yaml-feedstock/tree/master/recipe.
My understanding of what's being patched there seems to indicate it's
just the __init__.py file. I'm hoping just a rename of the
import will be enough, or at least surface what real problems exist.

Ref conda#10691

* Only use ruamel.yaml

* Use updated ruamel.yaml API

stringio

* Cache yaml parsers

* TEMP CI CHANGE, REMOVE BEFORE MERGE

* Add ruamel_yaml fallback

* Add news

* Undo CI fixes

* Update news

Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>

* document conda-build: pkg_format: 2 (conda#11881)

* document conda-build: pkg_format: 2
* Apply suggestions from code review

Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>

* Extract script building into helper functions for `conda init --dev` (conda#11862)

* 🔄 Synced file(s) with conda/infra (conda#11896)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Refactor conda init shells as argparse choices (conda#11897)

* remove encoding pragma (not needed in Python 3) (conda#11880)

* remove encoding pragma (not needed in Python 3)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fail with a readable error message if PackageCacheRecords are missing (conda#11591)

* Fail with a readable warning if PackageCacheRecords are missing

* Minor fixes to error message.

This also doesn’t use cont.io for the tests.

* More test fixes and minor code cleanup.

* Update news/11591-readable-error-message-if-packagecacherecords-missing

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Avoid a specific case where `conda env update` hangs. (conda#11818)

When using an environment.yml that asks pip to clone a git repo and
that path exists, pip will ask for user input. As we are not in a
context to provide such, tell pip what to do so it doesn't hang on
waiting for user input.

* Download packages in parallel (conda#11841)

* format package_cache_data.py with black
* download packages in threads
* improve test coverage
* Apply suggestions from code review

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Removed ref left behind from removing allow_other_channels docs. (conda#11908)

* Enable one single test for linux-{aarch64, ppc64le} (conda#11911)

Run one single fast test per docker+qemu emulated linux platform to test that
test execution is possible there (container+tools+dependencies work). Can be
changed / extended to run specific tests in case there are platform related
things to test. Running more tests is time consuming due to emulation
(factor 2-10x slower).

* Fixed broken URL in conda docs (conda#11902)

* Replaced bad link.

* Updated release note.

* Update xprocess minio pattern (conda#11924)

* Updated conda cheatsheet for 4.14.0 release. (conda#11768)

* Fix for conda update and install issue related to notices (conda#11852)

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add pyupgrade to pre-commit (conda#11909)

* [pre-commit.ci] auto fixes from pre-commit.com hooks (conda#11928)

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Introduce git-blame-ignore-revs file, add pyupgrade commit to it (conda#11929)

* Update ci-skip workflow. (conda#11935)

This was forgotten when the 3.10 changes were made.

* Check for conda before calling shell hook (conda#11374)

* Check conda PS1 hook before calling it
* Check for hook script in fish/xonsh/bash
* Adapt test_init_sh_user_windows

* Removing an outdated piece of documentation (conda#11943)

* Fix bullet point list formatting (conda#11945)

* Change `metadata_signature_status`'s default value (conda#11944)

* Change metadata_signature_status's default value

* Add news

* Fix CI workflows to always run (conda#11941)

* Get rid of the docs check.

* Use all-greens action to use just one job for branch protection.

* add LD_PRELOAD (conda#11926)

Co-authored-by: Mahe Iram Khan <maheiramkhan@Mahes-MacBook-Pro.fritz.box>

* restore CondaMultiError from package downloads (conda#11959)

* restore CondaMultiError from package downloads

* [pre-commit.ci] pre-commit autoupdate (conda#11947)

updates:
- [github.com/asottile/pyupgrade: v2.38.2 → v3.0.0](asottile/pyupgrade@v2.38.2...v3.0.0)
- [github.com/PyCQA/pylint: v2.15.3 → v2.15.4](pylint-dev/pylint@v2.15.3...v2.15.4)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Update a few actions to reduce warnings. (conda#11963)

* Changed mentioned conda version (conda#11810)

* Check for actions updates every week. (conda#11962)

* Bump conda/actions from 22.2.1 to 22.9.0 (conda#11965)

Bumps [conda/actions](https://github.com/conda/actions) from 22.2.1 to 22.9.0.
- [Release notes](https://github.com/conda/actions/releases)
- [Commits](conda/actions@v22.2.1...v22.9.0)

---
updated-dependencies:
- dependency-name: conda/actions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Remove toolz accumulate (conda#11879)

* substitute for toolz.groupby (conda#11913)

* substitute for toolz.groupby

* Remove custom `argparse` aliases (conda#11747)

* Remove custom aliasing logic

* Move argument inline into `add_subparsers`

This was added in Python 3.7.

* 🔄 Synced file(s) with conda/infra (conda#11969)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* UTF 16 and UTF 32 fixes (conda#9946)

* Use a loop to ensure that prefix is replaced even in utf-16 cases

* Specify little endian and big endian

* Fixup the binary replacement

* keep backward portability

* Add some tests

* Make encoding a string in tests

* Just use a loop

* Match from beginning of prefix

* Add a comment as to why we specify -le and -be

* Attempt minimal changes for binary replacement using a single regex

* Fixup regex

* removing unnecessary

* reverting previous state of some test

* fixing more issues with tests

* updates to enhance code readability

* updating type hint to use Enum

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>

* Replace "experimental solver" with just "solver" (conda#11889)

* Replace "experimental solver" with just solver

* mock is part of unittest

* add newline for clearer error message

* one more instance

* pre-commit fixes

* PendingDeprecationWarning preferred at this stage

* argparse.Action base class implements __call__ abstractly - do not super()!

* actually, better inherit from _StoreAction

* satisfy pre-commit

* better

* that tiiiny space

* add news

* Update issue template.

* Remove trailing whitespace.

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Add Plugin Mechanism (conda#11435)

Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Merging latest `main` changes into `feature/plugins` (conda#11940)

* Add `win-arm64` as a recognized platform (conda#11778)

* Rename `conda.recipe` to `recipe` (conda#11774)

* Rename conda.recipe to recipe

* Add news

* Update canary-release action version (conda#11799)

* Updated conda CLI help to be better for users. (conda#11708)

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>

* 🔄 Synced file(s) with conda/infra (conda#11827)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Fix pypy win (conda#11734)

* [pre-commit.ci] pre-commit autoupdate (conda#11833)

updates:
- [github.com/akaihola/darker: 1.5.0 → 1.5.1](akaihola/darker@1.5.0...1.5.1)
- [github.com/PyCQA/pylint: v2.15.0 → v2.15.2](pylint-dev/pylint@v2.15.0...v2.15.2)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fixes an issue that we are having with carnary builds (conda#11803)

* Fixes an issue that we are having with carnary builds

See this issue for more information:
conda/conda-build#4572

* undoing upates to cytoolz

* Update CONTRIBUTING.md (conda#11816)

Change all references to `triaging` to `issue sorting` per conda/infrastructure#575

* Release 22.9.0 (conda#11844)

* Updated .authors.yml

* Updated .mailmap

* Updated news

* Updated authorship for 22.9.0

* Updated CHANGELOG for 22.9.0

* Added first contributions

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add special announcement to changelog.

* Remove emoji to not freak out rever.

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Expose --mach and --arch to devenv script (conda#11851)

* [pre-commit.ci] pre-commit autoupdate (conda#11859)

updates:
- [github.com/PyCQA/pylint: v2.15.2 → v2.15.3](pylint-dev/pylint@v2.15.2...v2.15.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* 🔄 Synced file(s) with conda/infra (conda#11853)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Require `ruamel.yaml` (conda#11868)

* Update requirements.txt (conda#11842)

Updating the flask to address multiple CVEs including ones listed in conda#11831

* Grammatical correction in docs (conda#11870)

* Removed allow_other_channels from conda docs. (conda#11866)

* Use maintained `ruamel.yaml` (conda#11837)

* Try using maintained ruamel.yaml

The conda specific fork is maintained as a conda package only
in
https://github.com/conda-forge/ruamel_yaml-feedstock/tree/master/recipe.
My understanding of what's being patched there seems to indicate it's
just the __init__.py file. I'm hoping just a rename of the
import will be enough, or at least surface what real problems exist.

Ref conda#10691

* Only use ruamel.yaml

* Use updated ruamel.yaml API

stringio

* Cache yaml parsers

* TEMP CI CHANGE, REMOVE BEFORE MERGE

* Add ruamel_yaml fallback

* Add news

* Undo CI fixes

* Update news

Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>

* document conda-build: pkg_format: 2 (conda#11881)

* document conda-build: pkg_format: 2
* Apply suggestions from code review

Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>

* Extract script building into helper functions for `conda init --dev` (conda#11862)

* 🔄 Synced file(s) with conda/infra (conda#11896)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Refactor conda init shells as argparse choices (conda#11897)

* remove encoding pragma (not needed in Python 3) (conda#11880)

* remove encoding pragma (not needed in Python 3)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fail with a readable error message if PackageCacheRecords are missing (conda#11591)

* Fail with a readable warning if PackageCacheRecords are missing

* Minor fixes to error message.

This also doesn’t use cont.io for the tests.

* More test fixes and minor code cleanup.

* Update news/11591-readable-error-message-if-packagecacherecords-missing

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Avoid a specific case where `conda env update` hangs. (conda#11818)

When using an environment.yml that asks pip to clone a git repo and
that path exists, pip will ask for user input. As we are not in a
context to provide such, tell pip what to do so it doesn't hang on
waiting for user input.

* Download packages in parallel (conda#11841)

* format package_cache_data.py with black
* download packages in threads
* improve test coverage
* Apply suggestions from code review

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Removed ref left behind from removing allow_other_channels docs. (conda#11908)

* Enable one single test for linux-{aarch64, ppc64le} (conda#11911)

Run one single fast test per docker+qemu emulated linux platform to test that
test execution is possible there (container+tools+dependencies work). Can be
changed / extended to run specific tests in case there are platform related
things to test. Running more tests is time consuming due to emulation
(factor 2-10x slower).

* Fixed broken URL in conda docs (conda#11902)

* Replaced bad link.

* Updated release note.

* Update xprocess minio pattern (conda#11924)

* Updated conda cheatsheet for 4.14.0 release. (conda#11768)

* Fix for conda update and install issue related to notices (conda#11852)

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add pyupgrade to pre-commit (conda#11909)

* [pre-commit.ci] auto fixes from pre-commit.com hooks (conda#11928)

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Introduce git-blame-ignore-revs file, add pyupgrade commit to it (conda#11929)

* Update ci-skip workflow. (conda#11935)

This was forgotten when the 3.10 changes were made.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: Cheng H. Lee <chenghlee@users.noreply.github.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>
Co-authored-by: Conda Bot <18747875+conda-bot@users.noreply.github.com>
Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>
Co-authored-by: Isuru Fernando <isuruf@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Shaun Walbridge <46331011+scdub@users.noreply.github.com>
Co-authored-by: Nikhil Raverkar <raverkar.nikhil@gmail.com>
Co-authored-by: Satyam Vyas <vyas.satyam.04@gmail.com>
Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>
Co-authored-by: Daniel Holth <dholth@anaconda.com>
Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com>
Co-authored-by: Samson Yeung <samson_gh@onepatchdown.net>
Co-authored-by: Daniel Bast <2790401+dbast@users.noreply.github.com>

* remove unused import; silence typing error (conda#11951)

* Update feature/plugins branch with current main. (conda#11961)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Cheng H. Lee <chenghlee@users.noreply.github.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>
Co-authored-by: Conda Bot <18747875+conda-bot@users.noreply.github.com>
Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>
Co-authored-by: Isuru Fernando <isuruf@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Shaun Walbridge <46331011+scdub@users.noreply.github.com>
Co-authored-by: Nikhil Raverkar <raverkar.nikhil@gmail.com>
Co-authored-by: Satyam Vyas <vyas.satyam.04@gmail.com>
Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>
Co-authored-by: Daniel Holth <dholth@anaconda.com>
Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com>
Co-authored-by: Samson Yeung <samson_gh@onepatchdown.net>
Co-authored-by: Daniel Bast <2790401+dbast@users.noreply.github.com>
Co-authored-by: wulmer <wulmer@users.noreply.github.com>
Co-authored-by: Mahe Iram Khan <65779580+ForgottenProgramme@users.noreply.github.com>
Co-authored-by: Mahe Iram Khan <maheiramkhan@Mahes-MacBook-Pro.fritz.box>
Co-authored-by: Arqam Hussain <70997750+arq0017@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Harfouche <mark.harfouche@gmail.com>
Co-authored-by: Jaime Rodríguez-Guerra <jaimergp@users.noreply.github.com>
Co-authored-by: Bianca Henderson <beeankha@gmail.com>
Co-authored-by: Filipe Lains <lains@riseup.net>
travishathaway added a commit to travishathaway/conda that referenced this pull request Oct 20, 2022
Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
travishathaway added a commit to travishathaway/conda that referenced this pull request Oct 20, 2022
* Add `win-arm64` as a recognized platform (conda#11778)

* Rename `conda.recipe` to `recipe` (conda#11774)

* Rename conda.recipe to recipe

* Add news

* Update canary-release action version (conda#11799)

* Updated conda CLI help to be better for users. (conda#11708)

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>

* 🔄 Synced file(s) with conda/infra (conda#11827)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Fix pypy win (conda#11734)

* [pre-commit.ci] pre-commit autoupdate (conda#11833)

updates:
- [github.com/akaihola/darker: 1.5.0 → 1.5.1](akaihola/darker@1.5.0...1.5.1)
- [github.com/PyCQA/pylint: v2.15.0 → v2.15.2](pylint-dev/pylint@v2.15.0...v2.15.2)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fixes an issue that we are having with carnary builds (conda#11803)

* Fixes an issue that we are having with carnary builds

See this issue for more information:
conda/conda-build#4572

* undoing upates to cytoolz

* Update CONTRIBUTING.md (conda#11816)

Change all references to `triaging` to `issue sorting` per conda/infrastructure#575

* Release 22.9.0 (conda#11844)

* Updated .authors.yml

* Updated .mailmap

* Updated news

* Updated authorship for 22.9.0

* Updated CHANGELOG for 22.9.0

* Added first contributions

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add special announcement to changelog.

* Remove emoji to not freak out rever.

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Expose --mach and --arch to devenv script (conda#11851)

* [pre-commit.ci] pre-commit autoupdate (conda#11859)

updates:
- [github.com/PyCQA/pylint: v2.15.2 → v2.15.3](pylint-dev/pylint@v2.15.2...v2.15.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* 🔄 Synced file(s) with conda/infra (conda#11853)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Require `ruamel.yaml` (conda#11868)

* Update requirements.txt (conda#11842)

Updating the flask to address multiple CVEs including ones listed in conda#11831

* Grammatical correction in docs (conda#11870)

* Removed allow_other_channels from conda docs. (conda#11866)

* Use maintained `ruamel.yaml` (conda#11837)

* Try using maintained ruamel.yaml

The conda specific fork is maintained as a conda package only
in
https://github.com/conda-forge/ruamel_yaml-feedstock/tree/master/recipe.
My understanding of what's being patched there seems to indicate it's
just the __init__.py file. I'm hoping just a rename of the
import will be enough, or at least surface what real problems exist.

Ref conda#10691

* Only use ruamel.yaml

* Use updated ruamel.yaml API

stringio

* Cache yaml parsers

* TEMP CI CHANGE, REMOVE BEFORE MERGE

* Add ruamel_yaml fallback

* Add news

* Undo CI fixes

* Update news

Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>

* document conda-build: pkg_format: 2 (conda#11881)

* document conda-build: pkg_format: 2
* Apply suggestions from code review

Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>

* Extract script building into helper functions for `conda init --dev` (conda#11862)

* 🔄 Synced file(s) with conda/infra (conda#11896)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Refactor conda init shells as argparse choices (conda#11897)

* remove encoding pragma (not needed in Python 3) (conda#11880)

* remove encoding pragma (not needed in Python 3)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fail with a readable error message if PackageCacheRecords are missing (conda#11591)

* Fail with a readable warning if PackageCacheRecords are missing

* Minor fixes to error message.

This also doesn’t use cont.io for the tests.

* More test fixes and minor code cleanup.

* Update news/11591-readable-error-message-if-packagecacherecords-missing

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Avoid a specific case where `conda env update` hangs. (conda#11818)

When using an environment.yml that asks pip to clone a git repo and
that path exists, pip will ask for user input. As we are not in a
context to provide such, tell pip what to do so it doesn't hang on
waiting for user input.

* Download packages in parallel (conda#11841)

* format package_cache_data.py with black
* download packages in threads
* improve test coverage
* Apply suggestions from code review

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Removed ref left behind from removing allow_other_channels docs. (conda#11908)

* Enable one single test for linux-{aarch64, ppc64le} (conda#11911)

Run one single fast test per docker+qemu emulated linux platform to test that
test execution is possible there (container+tools+dependencies work). Can be
changed / extended to run specific tests in case there are platform related
things to test. Running more tests is time consuming due to emulation
(factor 2-10x slower).

* Fixed broken URL in conda docs (conda#11902)

* Replaced bad link.

* Updated release note.

* Update xprocess minio pattern (conda#11924)

* Updated conda cheatsheet for 4.14.0 release. (conda#11768)

* Fix for conda update and install issue related to notices (conda#11852)

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add pyupgrade to pre-commit (conda#11909)

* [pre-commit.ci] auto fixes from pre-commit.com hooks (conda#11928)

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Introduce git-blame-ignore-revs file, add pyupgrade commit to it (conda#11929)

* Update ci-skip workflow. (conda#11935)

This was forgotten when the 3.10 changes were made.

* Check for conda before calling shell hook (conda#11374)

* Check conda PS1 hook before calling it
* Check for hook script in fish/xonsh/bash
* Adapt test_init_sh_user_windows

* Removing an outdated piece of documentation (conda#11943)

* Fix bullet point list formatting (conda#11945)

* Change `metadata_signature_status`'s default value (conda#11944)

* Change metadata_signature_status's default value

* Add news

* Fix CI workflows to always run (conda#11941)

* Get rid of the docs check.

* Use all-greens action to use just one job for branch protection.

* add LD_PRELOAD (conda#11926)

Co-authored-by: Mahe Iram Khan <maheiramkhan@Mahes-MacBook-Pro.fritz.box>

* restore CondaMultiError from package downloads (conda#11959)

* restore CondaMultiError from package downloads

* [pre-commit.ci] pre-commit autoupdate (conda#11947)

updates:
- [github.com/asottile/pyupgrade: v2.38.2 → v3.0.0](asottile/pyupgrade@v2.38.2...v3.0.0)
- [github.com/PyCQA/pylint: v2.15.3 → v2.15.4](pylint-dev/pylint@v2.15.3...v2.15.4)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Update a few actions to reduce warnings. (conda#11963)

* Changed mentioned conda version (conda#11810)

* Check for actions updates every week. (conda#11962)

* Bump conda/actions from 22.2.1 to 22.9.0 (conda#11965)

Bumps [conda/actions](https://github.com/conda/actions) from 22.2.1 to 22.9.0.
- [Release notes](https://github.com/conda/actions/releases)
- [Commits](conda/actions@v22.2.1...v22.9.0)

---
updated-dependencies:
- dependency-name: conda/actions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Remove toolz accumulate (conda#11879)

* substitute for toolz.groupby (conda#11913)

* substitute for toolz.groupby

* Remove custom `argparse` aliases (conda#11747)

* Remove custom aliasing logic

* Move argument inline into `add_subparsers`

This was added in Python 3.7.

* 🔄 Synced file(s) with conda/infra (conda#11969)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* UTF 16 and UTF 32 fixes (conda#9946)

* Use a loop to ensure that prefix is replaced even in utf-16 cases

* Specify little endian and big endian

* Fixup the binary replacement

* keep backward portability

* Add some tests

* Make encoding a string in tests

* Just use a loop

* Match from beginning of prefix

* Add a comment as to why we specify -le and -be

* Attempt minimal changes for binary replacement using a single regex

* Fixup regex

* removing unnecessary

* reverting previous state of some test

* fixing more issues with tests

* updates to enhance code readability

* updating type hint to use Enum

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>

* Replace "experimental solver" with just "solver" (conda#11889)

* Replace "experimental solver" with just solver

* mock is part of unittest

* add newline for clearer error message

* one more instance

* pre-commit fixes

* PendingDeprecationWarning preferred at this stage

* argparse.Action base class implements __call__ abstractly - do not super()!

* actually, better inherit from _StoreAction

* satisfy pre-commit

* better

* that tiiiny space

* add news

* Update issue template.

* Remove trailing whitespace.

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Add Plugin Mechanism (conda#11435)

Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Merging latest `main` changes into `feature/plugins` (conda#11940)

* Add `win-arm64` as a recognized platform (conda#11778)

* Rename `conda.recipe` to `recipe` (conda#11774)

* Rename conda.recipe to recipe

* Add news

* Update canary-release action version (conda#11799)

* Updated conda CLI help to be better for users. (conda#11708)

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>

* 🔄 Synced file(s) with conda/infra (conda#11827)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Fix pypy win (conda#11734)

* [pre-commit.ci] pre-commit autoupdate (conda#11833)

updates:
- [github.com/akaihola/darker: 1.5.0 → 1.5.1](akaihola/darker@1.5.0...1.5.1)
- [github.com/PyCQA/pylint: v2.15.0 → v2.15.2](pylint-dev/pylint@v2.15.0...v2.15.2)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fixes an issue that we are having with carnary builds (conda#11803)

* Fixes an issue that we are having with carnary builds

See this issue for more information:
conda/conda-build#4572

* undoing upates to cytoolz

* Update CONTRIBUTING.md (conda#11816)

Change all references to `triaging` to `issue sorting` per conda/infrastructure#575

* Release 22.9.0 (conda#11844)

* Updated .authors.yml

* Updated .mailmap

* Updated news

* Updated authorship for 22.9.0

* Updated CHANGELOG for 22.9.0

* Added first contributions

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Update CHANGELOG.md

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add special announcement to changelog.

* Remove emoji to not freak out rever.

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Expose --mach and --arch to devenv script (conda#11851)

* [pre-commit.ci] pre-commit autoupdate (conda#11859)

updates:
- [github.com/PyCQA/pylint: v2.15.2 → v2.15.3](pylint-dev/pylint@v2.15.2...v2.15.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* 🔄 Synced file(s) with conda/infra (conda#11853)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Require `ruamel.yaml` (conda#11868)

* Update requirements.txt (conda#11842)

Updating the flask to address multiple CVEs including ones listed in conda#11831

* Grammatical correction in docs (conda#11870)

* Removed allow_other_channels from conda docs. (conda#11866)

* Use maintained `ruamel.yaml` (conda#11837)

* Try using maintained ruamel.yaml

The conda specific fork is maintained as a conda package only
in
https://github.com/conda-forge/ruamel_yaml-feedstock/tree/master/recipe.
My understanding of what's being patched there seems to indicate it's
just the __init__.py file. I'm hoping just a rename of the
import will be enough, or at least surface what real problems exist.

Ref conda#10691

* Only use ruamel.yaml

* Use updated ruamel.yaml API

stringio

* Cache yaml parsers

* TEMP CI CHANGE, REMOVE BEFORE MERGE

* Add ruamel_yaml fallback

* Add news

* Undo CI fixes

* Update news

Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>

* document conda-build: pkg_format: 2 (conda#11881)

* document conda-build: pkg_format: 2
* Apply suggestions from code review

Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>

* Extract script building into helper functions for `conda init --dev` (conda#11862)

* 🔄 Synced file(s) with conda/infra (conda#11896)

Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>

* Refactor conda init shells as argparse choices (conda#11897)

* remove encoding pragma (not needed in Python 3) (conda#11880)

* remove encoding pragma (not needed in Python 3)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fail with a readable error message if PackageCacheRecords are missing (conda#11591)

* Fail with a readable warning if PackageCacheRecords are missing

* Minor fixes to error message.

This also doesn’t use cont.io for the tests.

* More test fixes and minor code cleanup.

* Update news/11591-readable-error-message-if-packagecacherecords-missing

Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Avoid a specific case where `conda env update` hangs. (conda#11818)

When using an environment.yml that asks pip to clone a git repo and
that path exists, pip will ask for user input. As we are not in a
context to provide such, tell pip what to do so it doesn't hang on
waiting for user input.

* Download packages in parallel (conda#11841)

* format package_cache_data.py with black
* download packages in threads
* improve test coverage
* Apply suggestions from code review

Co-authored-by: Jannis Leidel <jannis@leidel.info>

* Removed ref left behind from removing allow_other_channels docs. (conda#11908)

* Enable one single test for linux-{aarch64, ppc64le} (conda#11911)

Run one single fast test per docker+qemu emulated linux platform to test that
test execution is possible there (container+tools+dependencies work). Can be
changed / extended to run specific tests in case there are platform related
things to test. Running more tests is time consuming due to emulation
(factor 2-10x slower).

* Fixed broken URL in conda docs (conda#11902)

* Replaced bad link.

* Updated release note.

* Update xprocess minio pattern (conda#11924)

* Updated conda cheatsheet for 4.14.0 release. (conda#11768)

* Fix for conda update and install issue related to notices (conda#11852)

Co-authored-by: Ken Odegard <kodegard@anaconda.com>

* Add pyupgrade to pre-commit (conda#11909)

* [pre-commit.ci] auto fixes from pre-commit.com hooks (conda#11928)

for more information, see https://pre-commit.ci

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Introduce git-blame-ignore-revs file, add pyupgrade commit to it (conda#11929)

* Update ci-skip workflow. (conda#11935)

This was forgotten when the 3.10 changes were made.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: Cheng H. Lee <chenghlee@users.noreply.github.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>
Co-authored-by: Conda Bot <18747875+conda-bot@users.noreply.github.com>
Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>
Co-authored-by: Isuru Fernando <isuruf@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Shaun Walbridge <46331011+scdub@users.noreply.github.com>
Co-authored-by: Nikhil Raverkar <raverkar.nikhil@gmail.com>
Co-authored-by: Satyam Vyas <vyas.satyam.04@gmail.com>
Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>
Co-authored-by: Daniel Holth <dholth@anaconda.com>
Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com>
Co-authored-by: Samson Yeung <samson_gh@onepatchdown.net>
Co-authored-by: Daniel Bast <2790401+dbast@users.noreply.github.com>

* remove unused import; silence typing error (conda#11951)

* Update feature/plugins branch with current main. (conda#11961)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Cheng H. Lee <chenghlee@users.noreply.github.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>
Co-authored-by: Conda Bot <18747875+conda-bot@users.noreply.github.com>
Co-authored-by: Conda Bot <conda-bot@users.noreply.github.com>
Co-authored-by: Isuru Fernando <isuruf@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Shaun Walbridge <46331011+scdub@users.noreply.github.com>
Co-authored-by: Nikhil Raverkar <raverkar.nikhil@gmail.com>
Co-authored-by: Satyam Vyas <vyas.satyam.04@gmail.com>
Co-authored-by: YuviPanda <yuvipanda@gmail.com>
Co-authored-by: Orion Poplawski <orion@nwra.com>
Co-authored-by: Daniel Holth <dholth@anaconda.com>
Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com>
Co-authored-by: Samson Yeung <samson_gh@onepatchdown.net>
Co-authored-by: Daniel Bast <2790401+dbast@users.noreply.github.com>
Co-authored-by: wulmer <wulmer@users.noreply.github.com>
Co-authored-by: Mahe Iram Khan <65779580+ForgottenProgramme@users.noreply.github.com>
Co-authored-by: Mahe Iram Khan <maheiramkhan@Mahes-MacBook-Pro.fritz.box>
Co-authored-by: Arqam Hussain <70997750+arq0017@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Harfouche <mark.harfouche@gmail.com>
Co-authored-by: Jaime Rodríguez-Guerra <jaimergp@users.noreply.github.com>
Co-authored-by: Bianca Henderson <beeankha@gmail.com>
Co-authored-by: Filipe Lains <lains@riseup.net>
beeankha added a commit that referenced this pull request Oct 28, 2022
* Add Plugin Mechanism (#11435)

Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>
Co-authored-by: Daniel Holth <dholth@anaconda.com>
jezdez added a commit that referenced this pull request Nov 1, 2022
Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
jeskowagner pushed a commit to jeskowagner/conda that referenced this pull request Nov 9, 2022
* Add Plugin Mechanism (conda#11435)

Initial plugin framework implementation. Adds registration decorator `@conda.plugins.register` and hook `conda_subcommands` this allows simple subcommand registration:

```
import conda.plugins

@conda.plugins.register
def conda_subcommands():
    yield conda.plugins.CondaSubcommand(
        name="my-subcommand",
        summary="...",
        action=<function>,
    )
```

Co-authored-by: Filipe Lains <lains@riseup.net>
Co-authored-by: Katherine Kinnaman <kkinnaman@anaconda.com>
Co-authored-by: Jannis Leidel <jannis@leidel.info>
Co-authored-by: Travis Hathaway <travis.j.hathaway@gmail.com>
Co-authored-by: Ken Odegard <kodegard@anaconda.com>
Co-authored-by: Bianca Henderson <bhenderson@anaconda.com>
Co-authored-by: Daniel Holth <dholth@anaconda.com>
@github-actions github-actions bot added the locked [bot] locked due to inactivity label Sep 1, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 1, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla-signed [bot] added once the contributor has signed the CLA locked [bot] locked due to inactivity plugins pertains to a plugin/subcommand source::anaconda created by members of Anaconda, Inc.
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

8 participants