🦅 Version Hawk by Andrew A Levin
Project description
🦅 Version Hawk
Version Hawk is a command-line tool for managing and generating version tags for Python packages on PyPI and GitHub repositories. It allows you to retrieve existing version tags from both platforms and generate new version numbers based on your project's release history.
Features
- Retrieve Versions from PyPI: Get all version tags for a specified PyPI package.
- Retrieve Releases from GitHub: Fetch release tags from a GitHub repository.
- Generate New Version Tags: Automatically generate a new version tag based on existing versions.
- Flexible Input: Accepts various input formats including:
- URLs for GitHub repositories (e.g.,
https://github.com/username/repo
) - URLs for PyPI packages (e.g.,
https://pypi.org/project/package
) - GitHub owner/repo format (e.g.,
username/repo
) - Direct package names (e.g.,
package
)
- URLs for GitHub repositories (e.g.,
Installation
To use Version Hawk, you need to have Python 3.6 or higher. You can clone the repository and install the required dependencies using pip
:
git clone https://github.com/yourusername/versionhawk.git
cd versionhawk
pip install -r requirements.txt
Usage
Run the tool from the command line:
python version_hawk.py <input>
Input Options
• GitHub Repository URL:
• Example: https://github.com/psf/requests
• PyPI Package URL:
• Example: https://pypi.org/project/requests/
• Owner/Repo Format:
• Example: psf/requests
• Direct Package Name:
• Example: requests
Listing Versions
To list all versions of a package or releases of a repository, use the --versions flag:
python version_hawk.py <input> --versions
Example
# Get all versions from PyPI for the 'requests' package
python version_hawk.py requests --versions
# Get all releases from GitHub for the 'psf/requests' repository
python version_hawk.py psf/requests --versions
# Generate a new version based on existing tags
python version_hawk.py https://github.com/psf/requests
Testing
You can run the unit tests to ensure that everything is working correctly. Make sure you have unittest available, then execute:
python -m unittest discover tests
Contributing
Contributions are welcome! If you have suggestions for improvements or new features, please open an issue or submit a pull request.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Acknowledgements
• Requests for HTTP requests.
• argparse for command-line argument parsing.
• packaging for version parsing.
Key Sections Explained
- Features: Outlines what the tool can do.
- Installation: Provides steps to set up the project.
- Usage: Explains how to run the tool and its input options.
- Example: Shows practical usage examples.
- Testing: Instructions for running unit tests.
- Contributing: Encourages community contributions.
- License: Mentions the license type.
Feel free to modify any part of the README to better fit your project! If you have additional features or sections to add, let me know!
VersionHawk is a tool for managing the versions of Python packages based on semantic versioning and the current date. It automatically suggests a new version tag if previous ones are already taken and allows you to fetch a list of all existing versions of a package.
✨ Features
• Generate a new version: Suggests a unique version tag based on the current date and time.
• View all versions: Optionally fetches a list of all existing versions of a package on PyPI.
• User-friendly command-line interface: Easily run it from the terminal.
🔧 Installation
You can install VersionHawk using pip:
pip install versionhawk
🚀 Usage
Once installed, you can run VersionHawk through the versionhawk command in your terminal.
🆕 Generate a New Version
To generate a new version for a package on PyPI, use the following command:
versionhawk <package_name>
Example:
versionhawk requests
📄 View All Versions
To fetch a list of all existing versions of a package on PyPI, use the --versions flag:
versionhawk <package_name> --versions
Example:
versionhawk requests --versions
⚙️ How It Works
VersionHawk uses the current date and time to suggest a new version. It checks the following patterns in order:
• Year.Month (e.g., 2024.10)
• Year.Month.Week Number in Month (e.g., 2024.10.3)
• Year.Month.Day (e.g., 2024.10.22)
• Year.Month.Day.Hour (e.g., 2024.10.22.20)
• Year.Month.Day.Hour.Minutes (e.g., 2024.10.22.20.01)
• Year.Month.Day.Hour.Minutes.Seconds (e.g., 2024.10.22.20.01.30)
VersionHawk checks these patterns against existing versions and suggests the first available unique tag.
💡 Example Usage
Let’s say the current date is 2024-10-22 20:01, and the requests package already has versions up to 2024.10.22.20.01. VersionHawk will suggest the next available version, such as 2024.10.22.20.01.30, if earlier versions are taken.
📦 Dependencies
VersionHawk requires the following dependencies to work:
• requests — to fetch version information from PyPI.
• packaging — to correctly sort versions.
These dependencies are automatically installed when you install VersionHawk.
📜 License
This project is licensed under the MIT License. See the LICENSE file for more details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file versionhawk-0.4.tar.gz
.
File metadata
- Download URL: versionhawk-0.4.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b360754aa68572b64d317b10c9c7fcd725d5fbbdd194af7100212e683e0bdf7 |
|
MD5 | aadbf05b1a88072853035e02d79f5634 |
|
BLAKE2b-256 | d1cfb7522e9cc2457fb008bee85a7253608a9a22664173c8c851d03c0d063c5f |
File details
Details for the file versionhawk-0.4-py3-none-any.whl
.
File metadata
- Download URL: versionhawk-0.4-py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c49a9fa6342394e47cdaef3d86335438ad173821d7eee4dbe6b53c7312cd36e |
|
MD5 | ed12a0036042881ce81567a358fc9604 |
|
BLAKE2b-256 | 1d3ad2be6b21026358264d8ef315c23b894fd413312571e16cabe9356338e364 |