Neonize is a Python library designed to streamline the automation of tasks on WhatsApp
Project description
๐ Neonize
WhatsApp Automation Made Simple for Python
A powerful Python library built on top of Whatsmeow - enabling seamless WhatsApp automation with enterprise-grade performance
Getting Started โข Features โข Examples โข Documentation โข Contributing
โจ What is Neonize?
Neonize is a cutting-edge Python library that transforms WhatsApp automation from complex to simple. Built on top of the robust Whatsmeow Go library, it delivers enterprise-grade performance with Python's ease of use and developer-friendly API.
๐ฏ Why Choose Neonize?
- ๐ฅ High Performance - Built with Go backend for maximum speed and efficiency
- ๐ Python Native - Seamless integration with your existing Python ecosystem
- ๐ก๏ธ Enterprise Ready - Production-tested with robust error handling and reliability
- โก Real-time - Handle messages, media, and events in real-time with async support
- ๐ง Easy Integration - Simple, intuitive API design for rapid development
- ๐ Well Documented - Comprehensive documentation with practical examples
๐ Features
Core Messaging
- โ Send and receive text messages
- โ Handle media files (images, videos, documents, audio)
- โ Group management and operations
- โ Real-time message events
- โ Message receipts and status tracking
Advanced Capabilities
- ๐ End-to-end encryption support
- ๐ฏ Contact and user information retrieval
- ๐ Call event handling
- ๐ Presence and typing indicators
- ๐ Polls and interactive messages
- ๐ซ Blocklist management
Developer Experience
- ๐ Event-driven architecture
- ๐ Built-in logging and debugging
- ๐๏ธ SQLite and PostgreSQL database support
- โก Both synchronous and asynchronous APIs
- ๐งช Comprehensive examples and documentation
๐ Sponsors
We are grateful to our sponsors who help make Neonize possible. Their support enables us to continue developing and maintaining this open-source project for the community.
๐ค Become a Sponsor
Your sponsorship helps us:
- โก Maintain and improve Neonize
- ๐ Fix bugs and add new features
- ๐ Create better documentation
- ๐ง Provide community support
- ๐ Keep the project free and open-source
Thank you to all our sponsors for believing in Neonize and supporting open-source development! ๐
๐ Getting Started
Prerequisites
- Python 3.8 or higher
- Go 1.19+ (for building from source)
Installation
pip install neonize
Quick Start
from neonize.client import NewClient
from neonize.events import MessageEv, ConnectedEv, event
# Initialize client
client = NewClient("your_bot_name")
@client.event
def on_connected(client: NewClient, event: ConnectedEv):
print("๐ Bot connected successfully!")
@client.event
def on_message(client: NewClient, event: MessageEv):
if event.message.conversation == "hi":
client.reply_message("Hello! ๐", event.message)
# Start the bot
client.connect()
event.wait() # Keep running
Async Version
import asyncio
from neonize.aioze.client import NewAClient
from neonize.aioze.events import MessageEv, ConnectedEv
async def main():
client = NewAClient("async_bot")
@client.event
async def on_message(client: NewAClient, event: MessageEv):
if event.message.conversation == "ping":
await client.reply_message("pong! ๐", event.message)
await client.connect()
asyncio.run(main())
๐ก Examples
๐ฑ Basic Client Setup
from neonize.client import NewClient
from neonize.events import MessageEv, ConnectedEv, event
import logging
# Enable logging for debugging
logging.basicConfig(level=logging.INFO)
# Initialize the WhatsApp client
client = NewClient(
name="my-whatsapp-bot",
database="./neonize.db"
)
# Handle successful connection
@client.event
def on_connected(client: NewClient, event: ConnectedEv):
print("๐ Successfully connected to WhatsApp!")
print(f"๐ฑ Device: {event.device}")
# Start the client
client.connect()
event.wait()
๐ฌ Sending Messages
from neonize.utils import build_jid
# Send simple text message
jid = build_jid("1234567890")
client.send_message(jid, text="Hello from Neonize! ๐")
# Send image with caption
with open("image.jpg", "rb") as f:
image_data = f.read()
image_msg = client.build_image_message(
image_data,
caption="Check out this amazing image! ๐ธ",
mime_type="image/jpeg"
)
client.send_message(jid, message=image_msg)
# Send document file
with open("document.pdf", "rb") as f:
doc_data = f.read()
doc_msg = client.build_document_message(
doc_data,
filename="document.pdf",
caption="Here is the document you requested",
mime_type="application/pdf"
)
client.send_message(jid, message=doc_msg)
๐ญ Message Event Handling
from neonize.events import MessageEv, ReceiptEv, PresenceEv
from datetime import datetime
# Handle incoming text messages
@client.event
def on_message(client: NewClient, event: MessageEv):
message_text = event.message.conversation
sender_jid = event.info.message_source.sender
chat_jid = event.info.message_source.chat
print(f"๐จ Received from {sender_jid}: {message_text}")
# Auto-reply functionality
if message_text and message_text.lower() == "hello":
client.send_message(chat_jid, text="Hello there! ๐")
elif message_text and message_text.lower() == "help":
help_text = """
๐ค *Bot Commands:*
โข hello - Get a greeting
โข help - Show this help message
โข time - Get current time
โข joke - Get a random joke
"""
client.send_message(chat_jid, text=help_text)
elif message_text and message_text.lower() == "time":
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
client.send_message(chat_jid, text=f"๐ Current time: {current_time}")
# Handle message receipts (delivery status)
@client.event
def on_receipt(client: NewClient, event: ReceiptEv):
print(f"๐ง Message {event.receipt.type}: {event.message_ids}")
# Handle typing indicators
@client.event
def on_presence(client: NewClient, event: PresenceEv):
chat = event.message_source.chat
participant = event.message_source.sender
print(f"๐ฌ {participant} is {event.presence} in {chat}")
๐ฅ Group Management
from neonize.utils import build_jid
# Create a new group
participants = [
build_jid("1234567890"),
build_jid("0987654321"),
]
group_info = client.create_group(
"My Awesome Group ๐",
participants
)
print(f"๐ Group created: {group_info.jid}")
# Get group information
group_info = client.get_group_info(group_jid)
print(f"๐ Group Name: {group_info.group_name}")
print(f"๐ Description: {group_info.group_desc}")
print(f"๐ฅ Participants: {len(group_info.participants)}")
# Add participants to group
client.update_group_participants(
group_jid,
[user_jid],
"add"
)
# Remove participants from group
client.update_group_participants(
group_jid,
[user_jid],
"remove"
)
# Update group name
client.update_group_name(
group_jid,
"New Group Name ๐ฏ"
)
# Update group description
client.update_group_description(
group_jid,
"This is our updated group description"
)
๐ Contact & Profile Management
# Get user profile information
profile = client.get_profile_picture(
user_jid,
full_resolution=True
)
print(f"๐ค Profile picture URL: {profile.url}")
print(f"๐ Profile ID: {profile.id}")
# Update your own status
client.set_presence("available")
print("โ
Status updated to available")
# Check if contacts are on WhatsApp
contacts = ["1234567890", "0987654321", "1122334455"]
registered_contacts = client.is_on_whatsapp(contacts)
for contact in registered_contacts:
if contact.is_in:
print(f"โ
{contact.jid} is on WhatsApp")
else:
print(f"โ {contact.query} is not on WhatsApp")
๐ Polls & Interactive Messages
from neonize.utils.enum import VoteType
# Create a poll
poll_msg = client.build_poll_vote_creation(
"What's your favorite programming language?",
["Python ๐", "Go ๐", "JavaScript ๐", "Rust ๐ฆ"],
VoteType.SINGLE_SELECT
)
client.send_message(chat_jid, message=poll_msg)
# Handle poll responses
@client.event
def on_poll_vote(client: NewClient, event):
voter = event.info.message_source.sender
selected_options = event.message.poll_update_message.vote.selected_options
print(f"๐ {voter} voted for: {selected_options}")
๐๏ธ Project Structure
neonize/
โโโ examples/
โ โโโ async_basic.py
โ โโโ basic.py
โ โโโ multisession_async.py
โ โโโ multisession.py
โ โโโ paircode.py
โโโ goneonize/
โ โโโ build_python_proto.py
โ โโโ chat_settings_store.go
โ โโโ contact_store.go
โ โโโ go.mod
โ โโโ go.sum
โ โโโ main.go
โ โโโ defproto/
โโโ neonize/
โ โโโ __init__.py
โ โโโ client.py
โ โโโ events.py
โ โโโ types.py
โ โโโ aioze/ # Async client
โ โโโ proto/ # Protocol buffers
โ โโโ utils/ # Helper utilities
โโโ docs/
โ โโโ conf.py
โ โโโ index.rst
โ โโโ getstarted.rst
โโโ tools/ # Build and development tools
๐ Documentation
Core Classes
NewClient- Main synchronous WhatsApp clientNewAClient- Asynchronous WhatsApp client- Event System - Event handling and types
- Protocol Buffers - WhatsApp message definitions
- Utilities - Helper functions and enums
Event System
The event system in Neonize is built around decorators and type-safe events:
# Synchronous event handling
@client.event
def on_message(client: NewClient, event: MessageEv):
handle_message(event)
@client.event
def on_receipt(client: NewClient, event: ReceiptEv):
handle_receipt(event)
# Asynchronous event handling
@async_client.event
async def on_message(client: NewAClient, event: MessageEv):
await handle_message_async(event)
Database Support
Neonize supports multiple database backends for storing session data:
# SQLite (default)
client = NewClient("bot_name", database="./app.db")
# PostgreSQL (recommended for production)
client = NewClient("bot_name", database="postgres://user:pass@localhost/dbname")
# In-memory (for testing)
client = NewClient("bot_name", database=":memory:")
Multi-Session Support
Handle multiple WhatsApp accounts simultaneously:
from neonize.client import NewClient
import threading
# Create multiple clients
clients = []
for i in range(3):
client = NewClient(f"bot_{i}", database=f"./bot_{i}.db")
clients.append(client)
# Start all clients in separate threads
threads = []
for client in clients:
thread = threading.Thread(target=client.connect)
thread.start()
threads.append(thread)
# Wait for all threads
for thread in threads:
thread.join()
๐ค Contributing
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Development Setup
# Clone the repository
git clone https://github.com/krypton-byte/neonize.git
cd neonize
# Install dependencies with Poetry
poetry install --with dev
# Or install with pip in development mode
pip install -e .
# Run the basic example
python examples/basic.py
# Run tests
python -m pytest
# Build documentation
cd docs && make html
Code Standards
- Follow PEP 8 for Python code style
- Use type hints for better code documentation
- Write comprehensive tests for new features
- Update documentation for API changes
- Ensure backward compatibility when possible
๐๏ธ Database Configuration
SQLite (Default)
Perfect for development and small-scale deployments:
client = NewClient("my_bot", database="./whatsapp.db")
PostgreSQL (Production Recommended)
For high-performance and scalable applications:
# Basic connection
client = NewClient("my_bot", database="postgres://username:password@localhost:5432/dbname")
# With SSL disabled
client = NewClient("my_bot", database="postgres://username:password@localhost:5432/dbname?sslmode=disable")
# With SSL required
client = NewClient("my_bot", database="postgres://username:password@localhost:5432/dbname?sslmode=require")
Connection Pool Settings
For production applications, configure connection pooling:
database_url = "postgres://user:pass@localhost:5432/neonize?pool_min_conns=5&pool_max_conns=20"
client = NewClient("production_bot", database=database_url)
๐ Quick Integration
With FastAPI
from fastapi import FastAPI
from neonize.aioze.client import NewAClient
from neonize.aioze.events import MessageEv
app = FastAPI()
whatsapp_client = NewAClient("fastapi_bot")
@app.on_event("startup")
async def startup_event():
await whatsapp_client.connect()
@whatsapp_client.event
async def on_message(client: NewAClient, event: MessageEv):
# Handle WhatsApp messages in your FastAPI app
if event.message.conversation == "/api_status":
await client.reply_message("API is running! โ
", event.message)
@app.get("/send-message")
async def send_message(phone: str, message: str):
jid = build_jid(phone)
await whatsapp_client.send_message(jid, text=message)
return {"status": "sent"}
With Django
# apps.py
from django.apps import AppConfig
from neonize.client import NewClient
import threading
class WhatsAppConfig(AppConfig):
name = 'whatsapp_integration'
def ready(self):
self.whatsapp_client = NewClient("django_bot")
thread = threading.Thread(target=self.whatsapp_client.connect)
thread.daemon = True
thread.start()
With Flask
from flask import Flask, request, jsonify
from neonize.client import NewClient
import threading
app = Flask(__name__)
whatsapp_client = NewClient("flask_bot")
@app.route('/webhook', methods=['POST'])
def webhook():
data = request.json
phone = data.get('phone')
message = data.get('message')
if phone and message:
jid = build_jid(phone)
whatsapp_client.send_message(jid, text=message)
return jsonify({"status": "success"})
return jsonify({"status": "error"}), 400
if __name__ == '__main__':
# Start WhatsApp client in background
thread = threading.Thread(target=whatsapp_client.connect)
thread.daemon = True
thread.start()
app.run(debug=True)
๐ License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
๐ Acknowledgments
- Whatsmeow - The powerful Go library that powers Neonize
- Thundra - Companion library for easy bot creation
- Python Community - For the amazing ecosystem and support
- Contributors - All the developers who have contributed to this project
๐ Support
- ๐ง Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ Documentation: Full Documentation
- ๐ Related Projects: Thundra Framework
๐ Related Projects
- Thundra - High-level bot framework built on Neonize
- Neonize Dart - Dart/Flutter wrapper for Neonize
- Whatsmeow - Go WhatsApp Web API library
Made with โค๏ธ for the Python community
If this project helped you, please consider giving it a โญ on GitHub!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file neonize-0.3.14.post0.tar.gz.
File metadata
- Download URL: neonize-0.3.14.post0.tar.gz
- Upload date:
- Size: 416.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28d68e25f5705bca03c904a1c0abab493a8b86ed62c16749eb9d8b31efc261f6
|
|
| MD5 |
be7b25fed6bb01aa422ce3a0ff0c8998
|
|
| BLAKE2b-256 |
0b2fa1dd3e118b51f7baff22f67870f40a1e4adfed10d24d64513869d8161fb4
|
File details
Details for the file neonize-0.3.14.post0-py310-none-win_arm64.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-win_arm64.whl
- Upload date:
- Size: 6.0 MB
- Tags: Python 3.10, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99fc955c1276a406cef56e1d2a02a1ca8e547a319db2bd7342fd2ea2ad0cfafb
|
|
| MD5 |
fdee52bd70d1b2918a847d05316cccfb
|
|
| BLAKE2b-256 |
78f1330e39f1e19623727ff734c2005b438484b92a33f32cc1ace0173e9a5187
|
File details
Details for the file neonize-0.3.14.post0-py310-none-win_amd64.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-win_amd64.whl
- Upload date:
- Size: 6.6 MB
- Tags: Python 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bbe49b111c924ad3042b8b59cde4a52fd79f74b46497de6d237e00ed1dbf3a7
|
|
| MD5 |
11867e21e1ddb04511fe16d5393f729a
|
|
| BLAKE2b-256 |
f3638d22d79a5df84f1de0aaea77933df5020e5779edceb171216c13d2ec9de0
|
File details
Details for the file neonize-0.3.14.post0-py310-none-win32.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-win32.whl
- Upload date:
- Size: 6.5 MB
- Tags: Python 3.10, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e041f2553488d3dab098b662c99aa498681150e6eb0ca01ceb6d3ca0d8ef0b65
|
|
| MD5 |
00eb084d49fc09cf39b6e87826456d06
|
|
| BLAKE2b-256 |
45576ed240d61d9f4d9272f45b1b121accb546b23edeea6d7a7b303d9e1195e8
|
File details
Details for the file neonize-0.3.14.post0-py310-none-manylinux2014_x86_64.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-manylinux2014_x86_64.whl
- Upload date:
- Size: 6.7 MB
- Tags: Python 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a6ebe18c8203cf8c1b2288f2dc8341a1a39aeda95d7a3c9f19984bd04f74c0d
|
|
| MD5 |
d21ba2440268f225190825a3d938c3ea
|
|
| BLAKE2b-256 |
776d4c6a520f0ed52125d90e375f5865cf3437191988e08c6636d404e6f0a008
|
File details
Details for the file neonize-0.3.14.post0-py310-none-manylinux2014_s390x.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-manylinux2014_s390x.whl
- Upload date:
- Size: 6.7 MB
- Tags: Python 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a29d6e9ef514d5a67081b42a5596d2e33831c77ef7809988273b1214446f037
|
|
| MD5 |
8b12a5d2064ab07a67c44bd5a929384c
|
|
| BLAKE2b-256 |
8a4c19c2095c98d456902a01daae3ecb51f696a26b64f378601ef22371c482f3
|
File details
Details for the file neonize-0.3.14.post0-py310-none-manylinux2014_i686.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-manylinux2014_i686.whl
- Upload date:
- Size: 9.1 MB
- Tags: Python 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf8b89b5a2b7d36b6f8897967ba602c6cbd20662cb4990e8bffca1db34cd3230
|
|
| MD5 |
6654be162dbb84ff42d06aa9963a0f9b
|
|
| BLAKE2b-256 |
a45be56a601d3717eed4acc4ce78ab5c2f8571eb314c97a2a2c23762f501e734
|
File details
Details for the file neonize-0.3.14.post0-py310-none-manylinux2014_aarch64.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-manylinux2014_aarch64.whl
- Upload date:
- Size: 6.2 MB
- Tags: Python 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3ca6115044c7b8e4b754033417bcafb47da6d027e2135f67e9da8c264faebb8
|
|
| MD5 |
59aef7fe82b03d68daeb310e4a3105c2
|
|
| BLAKE2b-256 |
0d0db43cb840262b2a46d574fabd7d11103137af6a997bf2139a5c85c1bd8787
|
File details
Details for the file neonize-0.3.14.post0-py310-none-macosx_12_0_x86_64.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-macosx_12_0_x86_64.whl
- Upload date:
- Size: 6.4 MB
- Tags: Python 3.10, macOS 12.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a649cd8977694f8b133fd03a3d9e24681fceed288ea2894cedeef512357f9b19
|
|
| MD5 |
c6efa128c1005e6f06694c3d5afd290b
|
|
| BLAKE2b-256 |
f8fabc05903a6c7010b8dd9499845ab17d8f5bb3874cb152f6be498b75efec35
|
File details
Details for the file neonize-0.3.14.post0-py310-none-macosx_12_0_arm64.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py310-none-macosx_12_0_arm64.whl
- Upload date:
- Size: 6.0 MB
- Tags: Python 3.10, macOS 12.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa6c50ca8939db2ee3a6f8623b1ef8b5f2f9826329a50c98d953d3d6e274c05a
|
|
| MD5 |
d271d592d822a4bf5b8613cb4f025a91
|
|
| BLAKE2b-256 |
b64be483682c9369994e846eb5aea42bd9e59c84ec319e18113152d9e7f97524
|
File details
Details for the file neonize-0.3.14.post0-py3-none-any.whl.
File metadata
- Download URL: neonize-0.3.14.post0-py3-none-any.whl
- Upload date:
- Size: 509.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97ab510a24ac96ef9aaf214613eefa9c51665e712c739077e7596150d99e0412
|
|
| MD5 |
7bbce8ee0b472b924e3c2c6aee01a73e
|
|
| BLAKE2b-256 |
90ea7bd2bf394a3e025c7787caa1edb0ec3c3c4583de97c6163ff9bd285306ac
|