Metadata-Version: 2.1
Name: craft-parts
Version: 1.25.3
Summary: Craft parts tooling
Home-page: https://github.com/canonical/craft-parts
Author: Canonical Ltd.
Author-email: snapcraft@lists.snapcraft.io
License: GNU General Public License v3
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Requires-Python: >=3.7
License-File: LICENSE
Requires-Dist: overrides
Requires-Dist: PyYAML
Requires-Dist: pydantic <2.0.0,>=1.9.0
Requires-Dist: pydantic-yaml[pyyaml] <1.0.0,>=0.11.0
Requires-Dist: pyxdg
Requires-Dist: requests
Requires-Dist: requests-unixsocket2
Provides-Extra: apt
Requires-Dist: python-apt >=2.0.0 ; extra == 'apt'
Provides-Extra: dev
Requires-Dist: autoflake ; extra == 'dev'
Requires-Dist: twine ; extra == 'dev'
Requires-Dist: sphinx ; extra == 'dev'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'dev'
Requires-Dist: sphinx-lint ; extra == 'dev'
Requires-Dist: sphinx-pydantic ; extra == 'dev'
Requires-Dist: sphinx-rtd-theme ; extra == 'dev'
Requires-Dist: sphinxcontrib-details-directive ==0.1.0 ; extra == 'dev'
Requires-Dist: black ; extra == 'dev'
Requires-Dist: codespell ; extra == 'dev'
Requires-Dist: coverage ; extra == 'dev'
Requires-Dist: isort ; extra == 'dev'
Requires-Dist: hypothesis ; extra == 'dev'
Requires-Dist: pydocstyle ; extra == 'dev'
Requires-Dist: pylint <3.0 ; extra == 'dev'
Requires-Dist: pylint-fixme-info ; extra == 'dev'
Requires-Dist: pylint-pytest ; extra == 'dev'
Requires-Dist: pyright ==1.1.327 ; extra == 'dev'
Requires-Dist: pytest <8 ; extra == 'dev'
Requires-Dist: pytest-check ; extra == 'dev'
Requires-Dist: pytest-cov ; extra == 'dev'
Requires-Dist: pytest-mock ; extra == 'dev'
Requires-Dist: requests-mock ; extra == 'dev'
Requires-Dist: ruff ==0.0.239 ; extra == 'dev'
Requires-Dist: tox ; extra == 'dev'
Requires-Dist: yamllint ==1.29.0 ; extra == 'dev'
Requires-Dist: mypy[reports] <1.6.0,>=1.4.1 ; extra == 'dev'
Requires-Dist: types-colorama ; extra == 'dev'
Requires-Dist: types-docutils ; extra == 'dev'
Requires-Dist: types-Pillow ; extra == 'dev'
Requires-Dist: types-Pygments ; extra == 'dev'
Requires-Dist: types-pytz ; extra == 'dev'
Requires-Dist: types-PyYAML ; extra == 'dev'
Requires-Dist: types-requests <2.30 ; extra == 'dev'
Requires-Dist: types-setuptools ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
Requires-Dist: sphinx-lint ; extra == 'docs'
Requires-Dist: sphinx-pydantic ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: sphinxcontrib-details-directive ==0.1.0 ; extra == 'docs'
Provides-Extra: test
Requires-Dist: black ; extra == 'test'
Requires-Dist: codespell ; extra == 'test'
Requires-Dist: coverage ; extra == 'test'
Requires-Dist: isort ; extra == 'test'
Requires-Dist: hypothesis ; extra == 'test'
Requires-Dist: pydocstyle ; extra == 'test'
Requires-Dist: pylint <3.0 ; extra == 'test'
Requires-Dist: pylint-fixme-info ; extra == 'test'
Requires-Dist: pylint-pytest ; extra == 'test'
Requires-Dist: pyright ==1.1.327 ; extra == 'test'
Requires-Dist: pytest <8 ; extra == 'test'
Requires-Dist: pytest-check ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'
Requires-Dist: pytest-mock ; extra == 'test'
Requires-Dist: requests-mock ; extra == 'test'
Requires-Dist: ruff ==0.0.239 ; extra == 'test'
Requires-Dist: tox ; extra == 'test'
Requires-Dist: yamllint ==1.29.0 ; extra == 'test'
Requires-Dist: mypy[reports] <1.6.0,>=1.4.1 ; extra == 'test'
Requires-Dist: types-colorama ; extra == 'test'
Requires-Dist: types-docutils ; extra == 'test'
Requires-Dist: types-Pillow ; extra == 'test'
Requires-Dist: types-Pygments ; extra == 'test'
Requires-Dist: types-pytz ; extra == 'test'
Requires-Dist: types-PyYAML ; extra == 'test'
Requires-Dist: types-requests <2.30 ; extra == 'test'
Requires-Dist: types-setuptools ; extra == 'test'
Provides-Extra: types
Requires-Dist: mypy[reports] <1.6.0,>=1.4.1 ; extra == 'types'
Requires-Dist: types-colorama ; extra == 'types'
Requires-Dist: types-docutils ; extra == 'types'
Requires-Dist: types-Pillow ; extra == 'types'
Requires-Dist: types-Pygments ; extra == 'types'
Requires-Dist: types-pytz ; extra == 'types'
Requires-Dist: types-PyYAML ; extra == 'types'
Requires-Dist: types-requests <2.30 ; extra == 'types'
Requires-Dist: types-setuptools ; extra == 'types'

# Craft Parts

Craft-parts provides a mechanism to obtain data from different sources,
process it in various ways, and prepare a filesystem subtree suitable for
deployment. The components used in its project specification are called
*parts*, which can be independently downloaded, built and installed, and
also depend on each other in order to assemble the subtree containing the
final artifacts.


# License

Free software: GNU Lesser General Public License v3


# Documentation

https://canonical-craft-parts.readthedocs-hosted.com/en/latest/

# Contributing

A `Makefile` is provided for easy interaction with the project. To see
all available options run:

```
make help
```

## Development Environment

In order to develop any `apt` related items, the `python-apt` package is needed.
The `apt` extra will require this package in general.

Apt package prerequisites for this development environment on an Ubuntu system can be installed with:

```bash
sudo apt install libapt-pkg-dev intltool fuse-overlayfs
```

On a Debian or Ubuntu system, the appropriate package can be installed by running

```bash
apt source python-apt
pip install ./python-apt_*
```

or by downloading and installing the appropriate source tarball. On Ubuntu these are:

* focal (20.04): https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/python-apt/2.0.1ubuntu0.20.04.1/python-apt_2.0.1ubuntu0.20.04.1.tar.xz
* jammy (22.04): https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/python-apt/2.4.0ubuntu1/python-apt_2.4.0ubuntu1.tar.xz
* lunar (23.04): https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/python-apt/2.5.3ubuntu1/python-apt_2.5.3ubuntu1.tar.xz

## Running tests

To run all tests in the suite run:

```
make tests
```

## Adding new requirements

If a new dependency is added to the project run:

```
make freeze-requirements
```

## Verifying documentation changes

To locally verify documentation changes run:

```
make 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)
