Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gregorybchris/myxa
Compatibility-aware package manager
https://github.com/gregorybchris/myxa
compatibility dependency management manager package repository update upgrade
Last synced: 3 days ago
JSON representation
Compatibility-aware package manager
- Host: GitHub
- URL: https://github.com/gregorybchris/myxa
- Owner: gregorybchris
- Created: 2024-12-27T01:42:51.000Z (11 days ago)
- Default Branch: main
- Last Pushed: 2024-12-31T03:09:30.000Z (7 days ago)
- Last Synced: 2024-12-31T04:20:02.145Z (7 days ago)
- Topics: compatibility, dependency, management, manager, package, repository, update, upgrade
- Language: Python
- Homepage:
- Size: 266 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Myxa
Compatibility-aware package manager
## About
Myxa has two goals:
1. Enable package maintainers to safely publish packages without breaks
2. Enable package users to easily upgrade to the latest versions of packages without breaks### How it works
Along with package dependencies, Myxa also tracks the type signatures of each function in a package. When a breaking change is detected in a type signature, `myxa publish` will require a major version bump.
For large packages, most of the time breaking changes only affect a small proportion of users. If a user depends on feature X in their project, but only feature Y breaks, then `myxa update` will safely auto-upgrade, even across major version boundaries.
## Installation
Install using [uv](https://docs.astral.sh/uv)
```bash
uv sync
```## Usage
First, set an environment variable to an index.json file, which will track your published packages locally.
```bash
export MYXA_INDEX="path/to/index.json"
```Then just use Myxa like most modern package managers!
```bash
# Initialize a new package
mx init ""# Show package info
mx info# Show package info for a specific version
mx info --version# Add a package dependency
mx add# Add a package dependency with a specific version
mx add --version# Remove a package dependency
mx remove# Lock the package dependencies
mx lock# Update all package dependencies to the highest compatible versions
mx update# Check whether there are breaking changes
mx check# Publish to the index
mx publish# Show index info
mx index
```### Unsupported features
- Integration with Python code
- Integration with PyPI
- Support for optional params
- Support for List, Dict, Tuple in functions
- Support for dev dependencies/groups/extras
- Support for upper bounds on dependencies
- Support for specifying preferred indexes in package metadata## Package name
Myxa is named after the slime mold _Myxogastria_, the Ancient Greek word μύξα (_myxa_), meaning "mucus".