Metadata-Version: 2.4
Name: pymelos
Version: 0.1.5
Summary: Python monorepo manager
Project-URL: Homepage, https://github.com/y3l1n4ung/pymelos
Project-URL: Repository, https://github.com/y3l1n4ung/pymelos
Project-URL: Issues, https://github.com/y3l1n4ung/pymelos/issues
Author: Ye Lin Aung
License: MIT
License-File: LICENSE
Keywords: env,management,monorepo,python,uv,workspace
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Build Tools
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: questionary>=2.1.1
Requires-Dist: rich>=13.0.0
Requires-Dist: tomli>=2.0.0; python_version < '3.11'
Requires-Dist: typer>=0.15.0
Provides-Extra: dev
Requires-Dist: commitizen>=4.0.0; extra == 'dev'
Requires-Dist: pre-commit>=4.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
Requires-Dist: pytest-cov>=6.0.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: python-dotenv>=1.0.0; extra == 'dev'
Requires-Dist: ruff==0.14.10; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
Description-Content-Type: text/markdown

# Pymelos

[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![ty](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json)](https://github.com/astral-sh/ty)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

**Pymelos** is a monorepo management tool for Python, inspired by [Melos](https://github.com/invertase/melos).

It is designed to manage multiple Python packages efficiently using modern tooling such as **uv** and **Ruff**, while providing fully automated **semantic release** workflows.

## Key Features

- **Fast Dependency Management**: Built on top of **uv** for lightning-fast dependency resolution and installation.
- **Workspace Management**: Leverages **uv workspaces** to handle local package linking and dependencies automatically.
- **Script Execution**: Run scripts across multiple packages with filtering and parallel execution.
- **Versioning & Publishing**: Automated versioning, changelog generation, and publishing inspired by **semantic-release** and [Conventional Commits](https://www.conventionalcommits.org/).
- **Change Detection**: Smartly detect changed packages and their dependents to optimize CI/CD pipelines.

## Why Pymelos?

1.  **Zero-Config Linking**: Leverages **uv workspaces** for instant, automatic package linking.
2.  **Unified Scripts**: Define tasks once in `pymelos.yaml` and run them everywhere.
3.  **Semantic Releases**: Fully automated version bumping, changelogs, and publishing.

## Documentation

Full documentation is available in the [docs/](docs/) directory.

- [Getting Started](docs/getting-started.md)
- [Configuration](docs/configuration.md)
- [CLI Commands](docs/commands/README.md)

## Installation

```bash
# Using uv (recommended)
uv tool install pymelos

# Using pip
pip install pymelos
```

## Quick Start

```bash
# Initialize a new workspace
pymelos init --name my-workspace

# Install dependencies and link local packages
pymelos bootstrap

# List all packages in the workspace
pymelos list

# Run a script across all packages
pymelos run test

# Run on specific packages
pymelos run test --scope my-package

# Run on changed packages since main
pymelos run test --since main

# Execute any command
pymelos exec "pytest -v"

# Show changed packages
pymelos changed main

# Clean build artifacts
pymelos clean

# Semantic release (dry run)
pymelos release --dry-run
```

## Projects using Pymelos

*   [Flash Framework](https://github.com/y3l1n4ung/flash-framework)
*   *Using Pymelos? [Submit a PR](https://github.com/y3l1n4ung/pymelos/pulls) to add your project here!*

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute to Pymelos.

## License

MIT
