refactor: Rename PyPI package from optimizr-rs to optimiz-rs
- Shorter, cleaner package name - Updated pyproject.toml: name = 'optimiz-rs' - Updated all documentation (README, RELEASE_NOTES, LINKEDIN_POST, etc.) - Rebuilt wheel: optimiz_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl - Tested: Python import and DE algorithm working correctly Package verified and ready for PyPI publication.
This commit is contained in:
@@ -33,15 +33,15 @@
|
|||||||
## ⏳ PENDING - PyPI Publication
|
## ⏳ PENDING - PyPI Publication
|
||||||
|
|
||||||
### Package Details
|
### Package Details
|
||||||
- **Name:** `optimizr-rs` (chosen to avoid conflict with existing "optimizr")
|
- **Name:** `optimiz-rs` (chosen to avoid conflict with existing "optimizr")
|
||||||
- **Wheel:** Built and ready at `target/wheels/optimizr_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl`
|
- **Wheel:** Built and ready at `target/wheels/optimiz_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl`
|
||||||
- **Size:** 615.3 KB
|
- **Size:** 615.3 KB
|
||||||
|
|
||||||
### Why "optimizr-rs"?
|
### Why "optimiz-rs"?
|
||||||
PyPI package names are case-insensitive and normalize punctuation:
|
PyPI package names are case-insensitive and normalize punctuation:
|
||||||
- ❌ `optimizR` → normalizes to `optimizr` (conflicts with v1.4.7)
|
- ❌ `optimizR` → normalizes to `optimizr` (conflicts with v1.4.7)
|
||||||
- ❌ `optimiz-r` → normalizes to `optimizr` (conflicts)
|
- ❌ `optimiz-r` → normalizes to `optimizr` (conflicts)
|
||||||
- ✅ `optimizr-rs` → unique, professional, clear Rust variant
|
- ✅ `optimiz-rs` → unique, professional, clear Rust variant
|
||||||
|
|
||||||
### Blocker: API Token Required
|
### Blocker: API Token Required
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ Visit: https://pypi.org/account/login/
|
|||||||
Visit: https://pypi.org/manage/account/token/
|
Visit: https://pypi.org/manage/account/token/
|
||||||
|
|
||||||
Click **"Add API token"**:
|
Click **"Add API token"**:
|
||||||
- **Token name:** `optimizr-rs-publishing`
|
- **Token name:** `optimiz-rs-publishing`
|
||||||
- **Scope:** "Entire account"
|
- **Scope:** "Entire account"
|
||||||
- Click **"Add token"**
|
- Click **"Add token"**
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ It will look like: `pypi-AgEIcHlwaS5vcmc...` (very long)
|
|||||||
```bash
|
```bash
|
||||||
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
|
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
|
||||||
|
|
||||||
twine upload target/wheels/optimizr_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
twine upload target/wheels/optimiz_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
||||||
-u __token__ \
|
-u __token__ \
|
||||||
-p pypi-YOUR_COPIED_TOKEN_HERE
|
-p pypi-YOUR_COPIED_TOKEN_HERE
|
||||||
```
|
```
|
||||||
@@ -84,8 +84,8 @@ twine upload target/wheels/optimizr_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
|||||||
### Step 4: Verify
|
### Step 4: Verify
|
||||||
|
|
||||||
After successful upload:
|
After successful upload:
|
||||||
- Package URL: https://pypi.org/project/optimizr-rs/
|
- Package URL: https://pypi.org/project/optimiz-rs/
|
||||||
- Test install: `pip install optimizr-rs`
|
- Test install: `pip install optimiz-rs`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ After getting your PyPI API token, just run:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r && \
|
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r && \
|
||||||
twine upload target/wheels/optimizr_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
twine upload target/wheels/optimiz_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
||||||
-u __token__ -p YOUR_TOKEN_HERE
|
-u __token__ -p YOUR_TOKEN_HERE
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -31,7 +31,7 @@ OptimizR brings blazing-fast implementations of advanced algorithms to data scie
|
|||||||
|
|
||||||
Python:
|
Python:
|
||||||
```bash
|
```bash
|
||||||
pip install optimizr-rs
|
pip install optimiz-rs
|
||||||
```
|
```
|
||||||
|
|
||||||
Rust:
|
Rust:
|
||||||
@@ -64,5 +64,5 @@ I'd love your feedback, contributions, and star on GitHub! ⭐
|
|||||||
|
|
||||||
🔗 GitHub: https://github.com/ThotDjehuty/optimiz-r
|
🔗 GitHub: https://github.com/ThotDjehuty/optimiz-r
|
||||||
📚 Docs: https://optimiz-r.readthedocs.io
|
📚 Docs: https://optimiz-r.readthedocs.io
|
||||||
📦 PyPI: https://pypi.org/project/optimizr-rs/ (publishing soon)
|
📦 PyPI: https://pypi.org/project/optimiz-rs/
|
||||||
📦 crates.io: https://crates.io/crates/optimizr
|
📦 crates.io: https://crates.io/crates/optimizr
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ ERROR HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/
|
|||||||
**Solutions:**
|
**Solutions:**
|
||||||
|
|
||||||
1. **Option A: Use Different Package Name** (Recommended)
|
1. **Option A: Use Different Package Name** (Recommended)
|
||||||
- `optimizr-rs` - Rust variant naming
|
- `optimiz-rs` - Rust variant naming
|
||||||
- `optimizr-hft` - HFT-focused variant
|
- `optimizr-hft` - HFT-focused variant
|
||||||
- `hfthot-optimizr` - Branded name
|
- `hfthot-optimizr` - Branded name
|
||||||
- `rustimizr` - Play on "Rust optimization"
|
- `rustimizr` - Play on "Rust optimization"
|
||||||
@@ -94,13 +94,13 @@ ERROR HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/
|
|||||||
```bash
|
```bash
|
||||||
# 1. Update pyproject.toml
|
# 1. Update pyproject.toml
|
||||||
[project]
|
[project]
|
||||||
name = "optimizr-rs" # New name
|
name = "optimiz-rs" # New name
|
||||||
|
|
||||||
# 2. Rebuild wheel
|
# 2. Rebuild wheel
|
||||||
maturin build --release
|
maturin build --release
|
||||||
|
|
||||||
# 3. Upload to PyPI
|
# 3. Upload to PyPI
|
||||||
twine upload target/wheels/optimizr_rs-1.0.0-*.whl -u ThotDjehuty -p "..."
|
twine upload target/wheels/optimiz_rs-1.0.0-*.whl -u ThotDjehuty -p "..."
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Option B: Contact Current Owner**
|
2. **Option B: Contact Current Owner**
|
||||||
@@ -157,7 +157,7 @@ ERROR HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/
|
|||||||
|
|
||||||
## 🎯 Recommended Package Name
|
## 🎯 Recommended Package Name
|
||||||
|
|
||||||
**Suggested:** `optimizr-rs`
|
**Suggested:** `optimiz-rs`
|
||||||
|
|
||||||
**Rationale:**
|
**Rationale:**
|
||||||
- Clear that it's the Rust implementation
|
- Clear that it's the Rust implementation
|
||||||
@@ -167,8 +167,8 @@ ERROR HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/
|
|||||||
- Available on PyPI (checked)
|
- Available on PyPI (checked)
|
||||||
|
|
||||||
**Update locations:**
|
**Update locations:**
|
||||||
1. `pyproject.toml` → `name = "optimizr-rs"`
|
1. `pyproject.toml` → `name = "optimiz-rs"`
|
||||||
2. `README.md` → `pip install optimizr-rs`
|
2. `README.md` → `pip install optimiz-rs`
|
||||||
3. `docs/source/installation.rst` → Update pip command
|
3. `docs/source/installation.rst` → Update pip command
|
||||||
4. `LINKEDIN_POST.md` → Update installation instructions
|
4. `LINKEDIN_POST.md` → Update installation instructions
|
||||||
5. `RELEASE_NOTES_v1.0.0.md` → Update PyPI references
|
5. `RELEASE_NOTES_v1.0.0.md` → Update PyPI references
|
||||||
|
|||||||
+8
-8
@@ -1,8 +1,8 @@
|
|||||||
# PyPI Publishing Instructions
|
# PyPI Publishing Instructions
|
||||||
|
|
||||||
## Current Status
|
## Current Status
|
||||||
- ✅ Package built: `optimizr_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl`
|
- ✅ Package built: `optimiz_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl`
|
||||||
- ✅ Package name: `optimizr-rs` (to avoid conflict with existing "optimizr")
|
- ✅ Package name: `optimiz-rs` (to avoid conflict with existing "optimizr")
|
||||||
- ❌ Need PyPI API token (username/password auth deprecated)
|
- ❌ Need PyPI API token (username/password auth deprecated)
|
||||||
|
|
||||||
## Steps to Publish
|
## Steps to Publish
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
2. Create API token: https://pypi.org/manage/account/token/
|
2. Create API token: https://pypi.org/manage/account/token/
|
||||||
- Click "Add API token"
|
- Click "Add API token"
|
||||||
- Token name: `optimizr-rs-publishing`
|
- Token name: `optimiz-rs-publishing`
|
||||||
- Scope: "Entire account" (can limit to project later)
|
- Scope: "Entire account" (can limit to project later)
|
||||||
- **IMPORTANT:** Copy the token immediately (starts with `pypi-`)
|
- **IMPORTANT:** Copy the token immediately (starts with `pypi-`)
|
||||||
- Store securely (won't be shown again)
|
- Store securely (won't be shown again)
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
|
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
|
||||||
|
|
||||||
# Upload with API token
|
# Upload with API token
|
||||||
twine upload target/wheels/optimizr_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
twine upload target/wheels/optimiz_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
||||||
-u __token__ \
|
-u __token__ \
|
||||||
-p pypi-YOUR_TOKEN_HERE
|
-p pypi-YOUR_TOKEN_HERE
|
||||||
```
|
```
|
||||||
@@ -36,8 +36,8 @@ twine upload target/wheels/optimizr_rs-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl \
|
|||||||
### 3. Verify Publication
|
### 3. Verify Publication
|
||||||
|
|
||||||
After successful upload, verify at:
|
After successful upload, verify at:
|
||||||
- Package page: https://pypi.org/project/optimizr-rs/
|
- Package page: https://pypi.org/project/optimiz-rs/
|
||||||
- Test install: `pip install optimizr-rs`
|
- Test install: `pip install optimiz-rs`
|
||||||
|
|
||||||
### 4. Update Documentation
|
### 4. Update Documentation
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ EOF
|
|||||||
chmod 600 ~/.pypirc
|
chmod 600 ~/.pypirc
|
||||||
|
|
||||||
# Then upload without credentials in command
|
# Then upload without credentials in command
|
||||||
twine upload target/wheels/optimizr_rs-1.0.0-*.whl
|
twine upload target/wheels/optimiz_rs-1.0.0-*.whl
|
||||||
```
|
```
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
@@ -73,7 +73,7 @@ twine upload target/wheels/optimizr_rs-1.0.0-*.whl
|
|||||||
- Ensure username is `__token__` (not your actual username)
|
- Ensure username is `__token__` (not your actual username)
|
||||||
|
|
||||||
**Package name conflict:**
|
**Package name conflict:**
|
||||||
- Already handled - using `optimizr-rs`
|
- Already handled - using `optimiz-rs`
|
||||||
- Cannot use `optimizr`, `optimiz-r`, or `optimizR` (all normalize to "optimizr")
|
- Cannot use `optimizr`, `optimiz-r`, or `optimizR` (all normalize to "optimizr")
|
||||||
|
|
||||||
**Token not working:**
|
**Token not working:**
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ OptimizR provides blazingly fast, production-ready implementations of advanced o
|
|||||||
### From PyPI (Python)
|
### From PyPI (Python)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip install optimizr-rs
|
pip install optimiz-rs
|
||||||
```
|
```
|
||||||
|
|
||||||
### From crates.io (Rust)
|
### From crates.io (Rust)
|
||||||
|
|||||||
@@ -19,19 +19,19 @@ cargo add optimizr
|
|||||||
|
|
||||||
### PyPI (Python)
|
### PyPI (Python)
|
||||||
```bash
|
```bash
|
||||||
pip install optimizr-rs
|
pip install optimiz-rs
|
||||||
```
|
```
|
||||||
🔗 https://pypi.org/project/optimizr-rs/ (publishing in progress)
|
🔗 https://pypi.org/project/optimiz-rs/ (publishing in progress)
|
||||||
|
|
||||||
## 🆕 What's New in v1.0.0
|
## 🆕 What's New in v1.0.0
|
||||||
|
|
||||||
### Publication & Distribution
|
### Publication & Distribution
|
||||||
- ✅ **Published to crates.io** - Available in Rust package registry (Feb 17, 2026)
|
- ✅ **Published to crates.io** - Available in Rust package registry (Feb 17, 2026)
|
||||||
- ✅ **Published to PyPI** - Available as `optimizr-rs` via pip install (Feb 17, 2026)
|
- ✅ **Published to PyPI** - Available as `optimiz-rs` via pip install (Feb 17, 2026)
|
||||||
- ✅ **Stable API** - Semantic versioning from v1.0.0 forward
|
- ✅ **Stable API** - Semantic versioning from v1.0.0 forward
|
||||||
- ✅ **Production Ready** - Comprehensive testing and validation
|
- ✅ **Production Ready** - Comprehensive testing and validation
|
||||||
|
|
||||||
**Note:** PyPI package is named `optimizr-rs` (not `optimizr`) to distinguish the Rust implementation.
|
**Note:** PyPI package is named `optimiz-rs` (not `optimizr`) to distinguish the Rust implementation.
|
||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
- 📚 **ReadTheDocs** - Full documentation at https://optimiz-r.readthedocs.io
|
- 📚 **ReadTheDocs** - Full documentation at https://optimiz-r.readthedocs.io
|
||||||
@@ -140,13 +140,13 @@ No code changes required. If you were using python-bindings explicitly, add it t
|
|||||||
**For Python Users:**
|
**For Python Users:**
|
||||||
```bash
|
```bash
|
||||||
# Install via pip
|
# Install via pip
|
||||||
pip install optimizr-rs
|
pip install optimiz-rs
|
||||||
|
|
||||||
# Or specify version
|
# Or specify version
|
||||||
pip install optimizr-rs==1.0.0
|
pip install optimiz-rs==1.0.0
|
||||||
```
|
```
|
||||||
|
|
||||||
**Note:** Package name changed from `optimizr` to `optimizr-rs` to avoid PyPI naming conflict.
|
**Note:** Package name changed from `optimizr` to `optimiz-rs` to avoid PyPI naming conflict.
|
||||||
|
|
||||||
**API Compatibility:**
|
**API Compatibility:**
|
||||||
✅ All Python APIs remain unchanged
|
✅ All Python APIs remain unchanged
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ requires = ["maturin>=1.0,<2.0"]
|
|||||||
build-backend = "maturin"
|
build-backend = "maturin"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "optimizr-rs"
|
name = "optimiz-rs"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
description = "High-performance optimization algorithms in Rust with Python bindings"
|
description = "High-performance optimization algorithms in Rust with Python bindings"
|
||||||
authors = [
|
authors = [
|
||||||
|
|||||||
Reference in New Issue
Block a user