Metadata-Version: 2.1
Name: craft-store
Version: 3.0.2
Summary: Store bindings for Snaps and Charms
Author-email: "Canonical Ltd." <snapcraft@lists.snapcraft.io>
Project-URL: Documentation, https://craft-store.readthedocs.io/en/latest/
Project-URL: Source, https://github.com/canonical/craft-store
Project-URL: Issues, https://github.com/canonical/craft-store/issues
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: keyring>=23.0
Requires-Dist: overrides>=7.0.0
Requires-Dist: requests>=2.27.0
Requires-Dist: requests-toolbelt>=1.0.0
Requires-Dist: macaroonbakery!=1.3.3,>=1.3.0
Requires-Dist: pydantic~=2.8
Requires-Dist: pyxdg
Requires-Dist: jaraco-classes>=3.4.0
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: pyyaml>=6.0.0; extra == "dev"
Requires-Dist: coverage[toml]==7.6.1; extra == "dev"
Requires-Dist: pytest==8.3.3; extra == "dev"
Requires-Dist: pytest-cov==5.0.0; extra == "dev"
Requires-Dist: pytest-mock==3.14.0; extra == "dev"
Requires-Dist: pytest-check>=2.0; extra == "dev"
Requires-Dist: pytest-subprocess>=1.5; extra == "dev"
Requires-Dist: pytest-timeout>=2.0; extra == "dev"
Provides-Extra: lint
Requires-Dist: black==24.8.0; extra == "lint"
Requires-Dist: codespell[toml]==2.3.0; extra == "lint"
Requires-Dist: yamllint==1.35.1; extra == "lint"
Provides-Extra: types
Requires-Dist: mypy[reports]==1.11.2; extra == "types"
Requires-Dist: pyright==1.1.381; extra == "types"
Requires-Dist: types-PyYAML; extra == "types"
Requires-Dist: types-Pygments; extra == "types"
Requires-Dist: types-colorama; extra == "types"
Requires-Dist: types-docutils; extra == "types"
Requires-Dist: types-requests; extra == "types"
Requires-Dist: types-setuptools; extra == "types"
Provides-Extra: docs
Requires-Dist: furo==2024.8.6; extra == "docs"
Requires-Dist: lxd-sphinx-extensions==0.0.16; extra == "docs"
Requires-Dist: myst-parser==3.0.1; extra == "docs"
Requires-Dist: pyspelling==2.10; extra == "docs"
Requires-Dist: sphinx==7.4.7; extra == "docs"
Requires-Dist: sphinx-autobuild==2024.9.19; extra == "docs"
Requires-Dist: sphinxcontrib-jquery==4.1; extra == "docs"
Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
Requires-Dist: sphinx-design==0.6.1; extra == "docs"
Requires-Dist: sphinxext-opengraph==0.9.1; extra == "docs"
Requires-Dist: sphinx-lint==0.9.1; extra == "docs"
Requires-Dist: sphinx-notfound-page==1.0.4; extra == "docs"
Requires-Dist: sphinx-reredirects==0.1.5; extra == "docs"
Requires-Dist: sphinx-rtd-theme; extra == "docs"
Requires-Dist: sphinx-tabs==3.4.5; extra == "docs"
Requires-Dist: sphinx-toolbox>=2.5.0; extra == "docs"
Provides-Extra: release
Requires-Dist: twine; extra == "release"
Requires-Dist: wheel; extra == "release"

[![Documentation Status](https://readthedocs.com/projects/canonical-craft-store/badge/?version=latest)](https://canonical-craft-store.readthedocs-hosted.com/en/latest/?badge=latest)

# Craft Store

This project aims to provide python interfaces for communicating with
Canonical Stores, such as Charmhub and the Snap Store.

# License

Free software: GNU Lesser General Public License v3

# Documentation:

https://canonical-craft-store.readthedocs-hosted.com.

# Contributing


## Running tests

To run all tests in the suite run:

```
tox
```

### Integration tests

Some integration tests require collaborator permission on the `craft-store-test-charm`
charm package on the staging craft-store. These can be run by creating a pull request.

Other integration tests simply require a valid login to the staging charmhub store.
These can be run by exporting charmhub staging credentials to the environment
variable `CRAFT_STORE_CHARMCRAFT_CREDENTIALS`. An easy way to do this is to
create a `charmcraft.yaml` file containing the lines:

    charmhub:
      api-url: "https://api.staging.charmhub.io"
      storage-url: "https://storage.staging.snapcraftcontent.com"

and then run `charmcraft login --export cc.cred` to login and
`export CRAFT_STORE_CHARMCRAFT_CREDENTIALS=$(cat cc.cred)` to put the credentials
into the environment variable. Note that if you do not have collaborator permissions
on `craft-store-test-charm`, some tests will fail rather than being skipped.

## Adding new requirements

If a new dependency is added to the project run:

TODO


## Verifying documentation changes

To locally verify documentation changes run:

`tox run -e lint-docs,build-docs`


After running, newly generated documentation shall be available at
`./docs/_build/html/`.

## Committing code

Please follow these guidelines when committing code for this project:

- Use a topic with a colon to start the subject
- Separate subject from body with a blank line
- Limit the subject line to 50 characters
- Do not capitalize the subject line
- Do not end the subject line with a period
- Use the imperative mood in the subject line
- Wrap the body at 72 characters
- Use the body to explain what and why (instead of how)

As an example:


    endpoints: support package attenuations

    Required in order to obtain credentials that apply only to a given package;
    be it charm, snap or bundle.
