| Name | kx-publish-pypi JSON |
| Version |
1.0.2
JSON |
| download |
| home_page | None |
| Summary | A friendly CLI tool to check and publish Python packages to TestPyPI/PyPI |
| upload_time | 2025-09-10 21:41:37 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.9 |
| license | None |
| keywords |
publish
cli
pypi
packaging
release
kx
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
<div align="center">
<img src="https://raw.githubusercontent.com/Khader-X/kx-publish-pypi/master/logo/logo-2-1.png" alt="KX-Publish-PyPI Logo" width="200"/>
</div>
<div align="center">
<h1>KX-Publish-PyPI</h1>
<p><em>The Professional CLI Tool for Python Package Publishing</em></p>
</div>
<div align="center">
<a href="https://pypi.org/project/kx_publish_pypi/"><img src="https://badge.fury.io/py/kx_publish_pypi.svg" alt="PyPI version"></a>
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python 3.9+"></a>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
<a href="https://github.com/Khader-X/kx-publish-pypi/actions"><img src="https://img.shields.io/github/actions/workflow/status/Khader-X/kx-publish-pypi/ci.yml" alt="Build Status"></a>
<a href="https://github.com/Khader-X/kx-publish-pypi/stargazers"><img src="https://img.shields.io/github/stars/Khader-X/kx-publish-pypi?style=social" alt="GitHub stars"></a>
</div>
<div align="center">
<h3>โก <strong>Publish Python packages to PyPI in under 30 seconds!</strong> โก</h3>
<p><strong>Version 1.0.1</strong> | <strong>Author: ABUELTAYEF Khader</strong> | <strong>Python 3.9+</strong></p>
</div>
---
## ๐ฏ **Why Choose KX-Publish-PyPI?**
<div align="center">
| Feature | **KX-Publish-PyPI** | Traditional Methods |
|---------|------------------|-------------------|
| **Setup Time** | โก 30 seconds | โฐ 30+ minutes |
| **Security** | ๐ System keyring | ๐ Plain text files |
| **User Experience** | ๐จ Rich CLI + Progress bars | ๐ Basic terminal output |
| **Error Handling** | ๐ก๏ธ Smart validation | โ Manual debugging |
| **Version Management** | ๐ Intelligent bumping | ๐ข Manual editing |
| **Build Backend Support** | ๐ ๏ธ All modern backends | โ๏ธ Limited support |
</div>
---
## ๐ป **Installation**
### โก Quick Install
```bash
pip install kx-publish-pypi
```
### โ
Verify Installation
```bash
kx-publish-pypi --version
```
---
## ๐ป **Account Setup & Token Generation**
<div align="center">
<h3>๐ Get Started with PyPI Publishing</h3>
</div>
### 1. **Create PyPI Account**
1. ๐ Visit [pypi.org](https://pypi.org/)
2. ๐ Click "Register" in the top right
3. โ๏ธ Fill out the registration form
4. โ
Verify your email address
### 2. **Create TestPyPI Account**
1. ๐ Visit [test.pypi.org](https://test.pypi.org/)
2. ๐ Click "Register" in the top right
3. โ๏ธ Fill out the registration form
4. โ
Verify your email address
### 3. **Generate API Tokens**
#### **For PyPI Production:**
1. ๐ Log in to [pypi.org](https://pypi.org/)
2. โ๏ธ Go to **Account Settings** โ **API tokens**
3. โ Click **"Add API token"**
4. ๐ท๏ธ Give it a name (e.g., "kx-publish-pypi")
5. ๐พ **Copy & Save the token** (you won't see it again!)
#### **For TestPyPI:**
1. ๐ Log in to [test.pypi.org](https://test.pypi.org/)
2. โ๏ธ Go to **Account Settings** โ **API tokens**
3. โ Click **"Add API token"**
4. ๐ท๏ธ Give it a name (e.g., "kx-publish-pypi-test")
5. ๐พ Copy & Save the token
### 4. **Store Tokens Securely**
Use the CLI to store your tokens securely:
```bash
kx-publish-pypi setup-tokens
```
This will prompt you to enter your TestPyPI and PyPI tokens, which will be stored in your system's keyring.
๐ก **Pro Tip:** You can also store tokens directly during the guided workflow:
```bash
kx-publish-pypi run
```
---
## ๐ **Quick Start**
<div align="center">
<h3>Choose Your Publishing Journey</h3>
</div>
### ๐ฏ **Option 1: Complete Guided Workflow (Recommended)**
```bash
kx-publish-pypi run
```
<div align="center">
<em>โจ <strong>One command handles everything:</strong> checks, tokens, version bump, build, and publish</em>
</div>
### ๐ ๏ธ **Option 2: Individual Commands**
```bash
# ๐ Pre-flight check your package
kx-publish-pypi check
# ๐ Setup API tokens securely
kx-publish-pypi setup-tokens
# ๐ Bump version (patch/minor/major)
kx-publish-pypi bump patch
# ๐งช Publish to TestPyPI first
kx-publish-pypi publish-test
# ๐ Publish to production PyPI
kx-publish-pypi publish-prod
```
---
## โจ **Key Features**
<div align="center">
| ๐จ **Rich Interface** | Rich, colorful output with progress bars |
|----------------------|------------------------------------------|
| ๐ **Smart Pre-checks** | Validates package structure and configuration |
| ๐ **Secure Token Storage** | Uses system keyring for API tokens |
| ๐ฆ **Enhanced Version Detection** | Supports all modern Python build backends |
| ๐ฅ **Interactive Workflow** | Guided experience from check to publish |
| ๐ **Version Management** | Intelligent version bumping |
| ๐ ๏ธ **Build Integration** | Works with setuptools, flit, hatchling, etc. |
</div>
---
## ๐๏ธ **Supported Build Backends**
<div align="center">
| Backend | Status | Version Detection |
|---------|--------|-------------------|
| setuptools | โ
Full Support | `__version__` files |
| poetry | โ
Full Support | `pyproject.toml` |
| flit | โ
Full Support | `pyproject.toml` |
| hatchling | โ
Full Support | `pyproject.toml` |
| pdm | โ
Full Support | `pyproject.toml` |
| scikit-build | โ
Full Support | Custom detection |
</div>
---
## ๐ **Programmatic API**
```python
from kx_publish_pypi import detect_package_version
from pathlib import Path
# Enhanced version detection
result = detect_package_version(Path("."))
if result.version_info:
print(f"๐ฆ Version: {result.version_info.version}")
print(f"๐ง Method: {result.version_info.method}")
```
---
## ๐ค **Contributing**
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
### ๐ Found a Bug?
- ๐ [Open an Issue](https://github.com/Khader-X/kx-publish-pypi/issues)
- ๐ก [Suggest a Feature](https://github.com/Khader-X/kx-publish-pypi/discussions)
---
## ๐ **License**
<div align="center">
<a href="https://opensource.org/licenses/MIT">
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License">
</a>
</div>
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
<div align="center">
## ๐ **Connect with Us**
**๐ Powered by [KhaderX](https://KhaderX.com/)** |
**๐จโ๐ป Founder: [ABUELTAYEF Khader](https://github.com/KhaderX-com)**
<div align="center">
<a href="https://github.com/Khader-X"><img src="https://img.shields.io/badge/GitHub-Khader--X-blue?style=for-the-badge&logo=github" alt="GitHub"></a>
<a href="https://KhaderX.com/"><img src="https://img.shields.io/badge/Website-KhaderX.com-blue?style=for-the-badge&logo=firefox" alt="Website"></a>
<a href="https://pypi.org/user/KhaderX/"><img src="https://img.shields.io/badge/PyPI-KhaderX-orange?style=for-the-badge&logo=pypi" alt="PyPI"></a>
</div>
<div align="center">
<h3>โญ If you find this tool useful, please star this repo!</h3>
<a href="https://github.com/Khader-X/kx-publish-pypi/stargazers">
<img src="https://img.shields.io/github/stars/Khader-X/kx-publish-pypi?style=social" alt="GitHub stars">
</a>
</div>
</div>
<div align="center">
<img src="https://raw.githubusercontent.com/Khader-X/kx-publish-pypi/master/logo/logo-2-1.png" alt="KX-Publish-PyPI Logo" width="150"/>
</div>
Raw data
{
"_id": null,
"home_page": null,
"name": "kx-publish-pypi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "ABUELTAYEF Khader <abueltayef.khader.main@hotmail.com>",
"keywords": "publish, cli, pypi, packaging, release, kx",
"author": null,
"author_email": "ABUELTAYEF Khader <abueltayef.khader@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/d0/90/45657092f32f198c7727fd1eec49421bf204afcca3404c2fcaa345f36606/kx_publish_pypi-1.0.2.tar.gz",
"platform": null,
"description": "<div align=\"center\">\r\n <img src=\"https://raw.githubusercontent.com/Khader-X/kx-publish-pypi/master/logo/logo-2-1.png\" alt=\"KX-Publish-PyPI Logo\" width=\"200\"/>\r\n</div>\r\n\r\n<div align=\"center\">\r\n <h1>KX-Publish-PyPI</h1>\r\n <p><em>The Professional CLI Tool for Python Package Publishing</em></p>\r\n</div>\r\n\r\n<div align=\"center\">\r\n <a href=\"https://pypi.org/project/kx_publish_pypi/\"><img src=\"https://badge.fury.io/py/kx_publish_pypi.svg\" alt=\"PyPI version\"></a>\r\n <a href=\"https://www.python.org/downloads/\"><img src=\"https://img.shields.io/badge/python-3.9+-blue.svg\" alt=\"Python 3.9+\"></a>\r\n <a href=\"https://opensource.org/licenses/MIT\"><img src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"></a>\r\n <a href=\"https://github.com/Khader-X/kx-publish-pypi/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/Khader-X/kx-publish-pypi/ci.yml\" alt=\"Build Status\"></a>\r\n <a href=\"https://github.com/Khader-X/kx-publish-pypi/stargazers\"><img src=\"https://img.shields.io/github/stars/Khader-X/kx-publish-pypi?style=social\" alt=\"GitHub stars\"></a>\r\n</div>\r\n\r\n<div align=\"center\">\r\n <h3>\u26a1 <strong>Publish Python packages to PyPI in under 30 seconds!</strong> \u26a1</h3>\r\n <p><strong>Version 1.0.1</strong> | <strong>Author: ABUELTAYEF Khader</strong> | <strong>Python 3.9+</strong></p>\r\n</div>\r\n\r\n---\r\n\r\n## \ud83c\udfaf **Why Choose KX-Publish-PyPI?**\r\n\r\n<div align=\"center\">\r\n\r\n| Feature | **KX-Publish-PyPI** | Traditional Methods |\r\n|---------|------------------|-------------------|\r\n| **Setup Time** | \u26a1 30 seconds | \u23f0 30+ minutes |\r\n| **Security** | \ud83d\udd10 System keyring | \ud83d\udcdd Plain text files |\r\n| **User Experience** | \ud83c\udfa8 Rich CLI + Progress bars | \ud83d\udcdf Basic terminal output |\r\n| **Error Handling** | \ud83d\udee1\ufe0f Smart validation | \u274c Manual debugging |\r\n| **Version Management** | \ud83d\udcc8 Intelligent bumping | \ud83d\udd22 Manual editing |\r\n| **Build Backend Support** | \ud83d\udee0\ufe0f All modern backends | \u2699\ufe0f Limited support |\r\n\r\n</div>\r\n\r\n---\r\n\r\n## \ud83d\udcbb **Installation**\r\n\r\n### \u26a1 Quick Install\r\n```bash\r\npip install kx-publish-pypi\r\n```\r\n\r\n### \u2705 Verify Installation\r\n```bash\r\nkx-publish-pypi --version\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udcbb **Account Setup & Token Generation**\r\n\r\n<div align=\"center\">\r\n <h3>\ud83d\udd11 Get Started with PyPI Publishing</h3>\r\n</div>\r\n\r\n### 1. **Create PyPI Account**\r\n1. \ud83c\udf10 Visit [pypi.org](https://pypi.org/)\r\n2. \ud83d\udcdd Click \"Register\" in the top right\r\n3. \u2709\ufe0f Fill out the registration form\r\n4. \u2705 Verify your email address\r\n\r\n### 2. **Create TestPyPI Account**\r\n1. \ud83c\udf10 Visit [test.pypi.org](https://test.pypi.org/)\r\n2. \ud83d\udcdd Click \"Register\" in the top right\r\n3. \u2709\ufe0f Fill out the registration form\r\n4. \u2705 Verify your email address\r\n\r\n### 3. **Generate API Tokens**\r\n\r\n#### **For PyPI Production:**\r\n1. \ud83d\udd11 Log in to [pypi.org](https://pypi.org/)\r\n2. \u2699\ufe0f Go to **Account Settings** \u2192 **API tokens**\r\n3. \u2795 Click **\"Add API token\"**\r\n4. \ud83c\udff7\ufe0f Give it a name (e.g., \"kx-publish-pypi\")\r\n5. \ud83d\udcbe **Copy & Save the token** (you won't see it again!)\r\n\r\n#### **For TestPyPI:**\r\n1. \ud83d\udd11 Log in to [test.pypi.org](https://test.pypi.org/)\r\n2. \u2699\ufe0f Go to **Account Settings** \u2192 **API tokens**\r\n3. \u2795 Click **\"Add API token\"**\r\n4. \ud83c\udff7\ufe0f Give it a name (e.g., \"kx-publish-pypi-test\")\r\n5. \ud83d\udcbe Copy & Save the token\r\n\r\n### 4. **Store Tokens Securely**\r\nUse the CLI to store your tokens securely:\r\n```bash\r\nkx-publish-pypi setup-tokens\r\n```\r\n\r\nThis will prompt you to enter your TestPyPI and PyPI tokens, which will be stored in your system's keyring.\r\n\r\n\ud83d\udca1 **Pro Tip:** You can also store tokens directly during the guided workflow:\r\n```bash\r\nkx-publish-pypi run\r\n```\r\n\r\n---\r\n\r\n## \ud83d\ude80 **Quick Start**\r\n\r\n<div align=\"center\">\r\n <h3>Choose Your Publishing Journey</h3>\r\n</div>\r\n\r\n### \ud83c\udfaf **Option 1: Complete Guided Workflow (Recommended)**\r\n```bash\r\nkx-publish-pypi run\r\n```\r\n<div align=\"center\">\r\n <em>\u2728 <strong>One command handles everything:</strong> checks, tokens, version bump, build, and publish</em>\r\n</div>\r\n\r\n### \ud83d\udee0\ufe0f **Option 2: Individual Commands**\r\n```bash\r\n# \ud83d\udd0d Pre-flight check your package\r\nkx-publish-pypi check\r\n\r\n# \ud83d\udd10 Setup API tokens securely\r\nkx-publish-pypi setup-tokens\r\n\r\n# \ud83d\udcc8 Bump version (patch/minor/major)\r\nkx-publish-pypi bump patch\r\n\r\n# \ud83e\uddea Publish to TestPyPI first\r\nkx-publish-pypi publish-test\r\n\r\n# \ud83d\ude80 Publish to production PyPI\r\nkx-publish-pypi publish-prod\r\n```\r\n\r\n---\r\n\r\n## \u2728 **Key Features**\r\n\r\n<div align=\"center\">\r\n\r\n| \ud83c\udfa8 **Rich Interface** | Rich, colorful output with progress bars |\r\n|----------------------|------------------------------------------|\r\n| \ud83d\udd0d **Smart Pre-checks** | Validates package structure and configuration |\r\n| \ud83d\udd10 **Secure Token Storage** | Uses system keyring for API tokens |\r\n| \ud83d\udce6 **Enhanced Version Detection** | Supports all modern Python build backends |\r\n| \ud83d\udd25 **Interactive Workflow** | Guided experience from check to publish |\r\n| \ud83d\udcc8 **Version Management** | Intelligent version bumping |\r\n| \ud83d\udee0\ufe0f **Build Integration** | Works with setuptools, flit, hatchling, etc. |\r\n\r\n</div>\r\n\r\n---\r\n\r\n## \ud83c\udfd7\ufe0f **Supported Build Backends**\r\n\r\n<div align=\"center\">\r\n\r\n| Backend | Status | Version Detection |\r\n|---------|--------|-------------------|\r\n| setuptools | \u2705 Full Support | `__version__` files |\r\n| poetry | \u2705 Full Support | `pyproject.toml` |\r\n| flit | \u2705 Full Support | `pyproject.toml` |\r\n| hatchling | \u2705 Full Support | `pyproject.toml` |\r\n| pdm | \u2705 Full Support | `pyproject.toml` |\r\n| scikit-build | \u2705 Full Support | Custom detection |\r\n\r\n</div>\r\n\r\n---\r\n\r\n## \ud83d\ude80 **Programmatic API**\r\n\r\n```python\r\nfrom kx_publish_pypi import detect_package_version\r\nfrom pathlib import Path\r\n\r\n# Enhanced version detection\r\nresult = detect_package_version(Path(\".\"))\r\nif result.version_info:\r\n print(f\"\ud83d\udce6 Version: {result.version_info.version}\")\r\n print(f\"\ud83d\udd27 Method: {result.version_info.method}\")\r\n```\r\n\r\n---\r\n\r\n## \ud83e\udd1d **Contributing**\r\n\r\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\r\n\r\n### \ud83d\udc1b Found a Bug?\r\n- \ud83d\udc1b [Open an Issue](https://github.com/Khader-X/kx-publish-pypi/issues)\r\n- \ud83d\udca1 [Suggest a Feature](https://github.com/Khader-X/kx-publish-pypi/discussions)\r\n\r\n---\r\n\r\n## \ud83d\udcc4 **License**\r\n\r\n<div align=\"center\">\r\n <a href=\"https://opensource.org/licenses/MIT\">\r\n <img src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"MIT License\">\r\n </a>\r\n</div>\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n---\r\n\r\n<div align=\"center\">\r\n\r\n## \ud83c\udf10 **Connect with Us**\r\n\r\n**\ud83d\ude80 Powered by [KhaderX](https://KhaderX.com/)** |\r\n**\ud83d\udc68\u200d\ud83d\udcbb Founder: [ABUELTAYEF Khader](https://github.com/KhaderX-com)**\r\n\r\n<div align=\"center\">\r\n <a href=\"https://github.com/Khader-X\"><img src=\"https://img.shields.io/badge/GitHub-Khader--X-blue?style=for-the-badge&logo=github\" alt=\"GitHub\"></a>\r\n <a href=\"https://KhaderX.com/\"><img src=\"https://img.shields.io/badge/Website-KhaderX.com-blue?style=for-the-badge&logo=firefox\" alt=\"Website\"></a>\r\n <a href=\"https://pypi.org/user/KhaderX/\"><img src=\"https://img.shields.io/badge/PyPI-KhaderX-orange?style=for-the-badge&logo=pypi\" alt=\"PyPI\"></a>\r\n</div>\r\n\r\n<div align=\"center\">\r\n <h3>\u2b50 If you find this tool useful, please star this repo!</h3>\r\n <a href=\"https://github.com/Khader-X/kx-publish-pypi/stargazers\">\r\n <img src=\"https://img.shields.io/github/stars/Khader-X/kx-publish-pypi?style=social\" alt=\"GitHub stars\">\r\n </a>\r\n</div>\r\n\r\n</div>\r\n\r\n<div align=\"center\">\r\n <img src=\"https://raw.githubusercontent.com/Khader-X/kx-publish-pypi/master/logo/logo-2-1.png\" alt=\"KX-Publish-PyPI Logo\" width=\"150\"/>\r\n</div>\r\n",
"bugtrack_url": null,
"license": null,
"summary": "A friendly CLI tool to check and publish Python packages to TestPyPI/PyPI",
"version": "1.0.2",
"project_urls": {
"Author": "https://github.com/KhaderX-com",
"Blog": "https://khaderabueltayef.blogspot.com/",
"Bug Tracker": "https://github.com/Khader-X/kx-publish-pypi/issues",
"Gravatar": "https://gravatar.com/voiddevotedlyf473f5471f",
"Homepage": "https://github.com/Khader-X/kx-publish-pypi",
"Organization": "https://github.com/Khader-X",
"PyPI": "https://pypi.org/user/KhaderX/",
"Repository": "https://github.com/Khader-X/kx-publish-pypi",
"Website": "https://KhaderX.com/"
},
"split_keywords": [
"publish",
" cli",
" pypi",
" packaging",
" release",
" kx"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "acb4916428f93aca7d2ca6f51ba4ae06f5c85eac725a25353d1907b4d2e80d33",
"md5": "f7cf4b120d10b62f1e297216376bd21a",
"sha256": "9eb0c226f31ce6fb9edf69b00984b405971b1e4ddef0343b8423b17af29aaea0"
},
"downloads": -1,
"filename": "kx_publish_pypi-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f7cf4b120d10b62f1e297216376bd21a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 26544,
"upload_time": "2025-09-10T21:41:36",
"upload_time_iso_8601": "2025-09-10T21:41:36.734961Z",
"url": "https://files.pythonhosted.org/packages/ac/b4/916428f93aca7d2ca6f51ba4ae06f5c85eac725a25353d1907b4d2e80d33/kx_publish_pypi-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d09045657092f32f198c7727fd1eec49421bf204afcca3404c2fcaa345f36606",
"md5": "9150770e5e0eadc3ed3517a7ead84d54",
"sha256": "115475f2a489659b220460e01af3997a00e54fb01a4a316e8296ca32f4bbef05"
},
"downloads": -1,
"filename": "kx_publish_pypi-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "9150770e5e0eadc3ed3517a7ead84d54",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 26930,
"upload_time": "2025-09-10T21:41:37",
"upload_time_iso_8601": "2025-09-10T21:41:37.704652Z",
"url": "https://files.pythonhosted.org/packages/d0/90/45657092f32f198c7727fd1eec49421bf204afcca3404c2fcaa345f36606/kx_publish_pypi-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-10 21:41:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Khader-X",
"github_project": "kx-publish-pypi",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "kx-publish-pypi"
}