Skip to main content

Neonize is a Python library designed to streamline the automation of tasks on WhatsApp

Project description

๐Ÿš€ Neonize

WhatsApp Automation Made Simple for Python

Python Go License WhatsApp Release

A powerful Python library built on top of Whatsmeow - enabling seamless WhatsApp automation with enterprise-grade performance


Getting Started โ€ข Features โ€ข Examples โ€ข Documentation โ€ข Contributing

Neonize

โœจ 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.

User avatar: Fernando Leon Franco

๐Ÿค 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

Become a Sponsor โ†’

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(ConnectedEv)
def on_connected(client: NewClient, event: ConnectedEv):
    print("๐ŸŽ‰ Bot connected successfully!")

@client.event(MessageEv)
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

client = NewAClient("async_bot")

@client.event(MessageEv)
async def on_message(client: NewAClient, event: MessageEv):
    if event.Message.conversation == "ping":
        await client.reply_message("pong! ๐Ÿ“", event)

async def main():
    await client.connect()
    await client.idle()  # Keep receiving events

asyncio.run(main())

!!! important "Python 3.10+ Event Loop" Neonize uses asyncio.run() as the standard entry point. The event loop is automatically obtained via asyncio.get_running_loop() inside connect(). Do not use the deprecated asyncio.get_event_loop() or loop.run_until_complete() โ€” these raise errors on Python 3.12+.

๐Ÿ’ก 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(ConnectedEv)
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(MessageEv)
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(ReceiptEv)
def on_receipt(client: NewClient, event: ReceiptEv):
    print(f"๐Ÿ“ง Message {event.receipt.type}: {event.message_ids}")

# Handle typing indicators
@client.event(PresenceEv)
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(MessageEv)
def on_poll_vote(client: NewClient, event: MessageEv):
    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

Event System

The event system in Neonize is built around decorators and type-safe events:

# Synchronous event handling
@client.event(MessageEv)
def on_message(client: NewClient, event: MessageEv):
    handle_message(event)

@client.event(ReceiptEv)
def on_receipt(client: NewClient, event: ReceiptEv):
    handle_receipt(event)

# Asynchronous event handling
@async_client.event(MessageEv)
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:

import asyncio
from neonize.aioze.client import ClientFactory, NewAClient
from neonize.aioze.events import MessageEv, ConnectedEv

client_factory = ClientFactory("multisession.db")

# Load existing sessions from database
for device in client_factory.get_all_devices():
    client_factory.new_client(device.JID)

# Register shared event handlers
@client_factory.event(ConnectedEv)
async def on_connected(client: NewAClient, event: ConnectedEv):
    print(f"โšก Client connected")

@client_factory.event(MessageEv)
async def on_message(client: NewAClient, event: MessageEv):
    text = event.Message.conversation
    if text == "ping":
        await client.reply_message("pong!", event)

async def main():
    await client_factory.run()      # connect() all clients
    await client_factory.idle_all()  # keep running

asyncio.run(main())

๐Ÿค Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. 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 contextlib import asynccontextmanager
from fastapi import FastAPI
from neonize.aioze.client import NewAClient
from neonize.aioze.events import MessageEv
from neonize.utils.jid import build_jid

whatsapp_client = NewAClient("fastapi_bot")

@whatsapp_client.event(MessageEv)
async def on_message(client: NewAClient, event: MessageEv):
    if event.Message.conversation == "/api_status":
        await client.reply_message("API is running! โœ…", event)

@asynccontextmanager
async def lifespan(app: FastAPI):
    # connect() automatically picks up the running event loop
    await whatsapp_client.connect()
    yield
    await whatsapp_client.disconnect()

app = FastAPI(lifespan=lifespan)

@app.get("/send-message")
async def send_message(phone: str, message: str):
    jid = build_jid(phone)
    await whatsapp_client.send_message(jid, 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

๐ŸŒŸ Introducing Tryx

Looking for another powerful tool for WhatsApp automation? Check out Tryx โ€” a Rust-powered Python SDK designed for building WhatsApp automations with an async-first API, strong typing, and production-focused performance.

Why Tryx?

  • Async-first architecture for event-driven bots
  • Python-friendly API with namespace-based clients
  • High-performance native core for protocol and transport workloads
  • Typed interfaces for better editor support and safer integrations

Tryx combines the best of:

  • Rust for protocol and runtime-heavy paths
  • PyO3 for Python bindings
  • Tokio for async orchestration
  • Typed Python package distribution (.pyi + py.typed)

Note: This project is an independent developer SDK and is not affiliated with WhatsApp or Meta.

For more details, visit the Tryx repository.


๐ŸŒŸ Related Projects

  • Thundra - High-level bot framework built on Neonize
  • Neonize Dart - Dart/Flutter wrapper for Neonize
  • Whatsmeow - Go WhatsApp Web API library
  • Tryx - Rust-powered Python SDK for WhatsApp automation

Made with โค๏ธ for the Python community

If this project helped you, please consider giving it a โญ on GitHub!

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

neonize-0.4.0.post0.tar.gz (501.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

neonize-0.4.0.post0-py310-none-win_arm64.whl (7.1 MB view details)

Uploaded Python 3.10Windows ARM64

neonize-0.4.0.post0-py310-none-win_amd64.whl (7.9 MB view details)

Uploaded Python 3.10Windows x86-64

neonize-0.4.0.post0-py310-none-win32.whl (7.8 MB view details)

Uploaded Python 3.10Windows x86

neonize-0.4.0.post0-py310-none-manylinux2014_x86_64.whl (8.0 MB view details)

Uploaded Python 3.10

neonize-0.4.0.post0-py310-none-manylinux2014_s390x.whl (8.0 MB view details)

Uploaded Python 3.10

neonize-0.4.0.post0-py310-none-manylinux2014_i686.whl (10.7 MB view details)

Uploaded Python 3.10

neonize-0.4.0.post0-py310-none-macosx_12_0_x86_64.whl (7.7 MB view details)

Uploaded Python 3.10macOS 12.0+ x86-64

neonize-0.4.0.post0-py310-none-macosx_12_0_arm64.whl (7.2 MB view details)

Uploaded Python 3.10macOS 12.0+ ARM64

neonize-0.4.0.post0-py3-none-any.whl (602.7 kB view details)

Uploaded Python 3

File details

Details for the file neonize-0.4.0.post0.tar.gz.

File metadata

  • Download URL: neonize-0.4.0.post0.tar.gz
  • Upload date:
  • Size: 501.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0.tar.gz
Algorithm Hash digest
SHA256 cc8aa412a07405ae2f436705e8654f4c9dc87a98029590893be863927251a02d
MD5 4bb6505fde5c88109fcb34a77361c5cb
BLAKE2b-256 f77cd94385fe787d28a8d1dff2af01b53c4ecdfe699d3d1142977342cbbffece

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-win_arm64.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-win_arm64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: Python 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-win_arm64.whl
Algorithm Hash digest
SHA256 13d47f5699c55b82186c46259594c2c73c588d44966da5774dfb9e81037998c0
MD5 6c3792345072a189a4c38846d6ba87c5
BLAKE2b-256 8c3b09168372b8cdd54b93e0181e781a4aacc4c50fb50862276ff02c0c53584e

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-win_amd64.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-win_amd64.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: Python 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-win_amd64.whl
Algorithm Hash digest
SHA256 6f0498648df824ee7786e036eb28f1b9418145f86bd0d6c06e30bf4d3c410865
MD5 45a588e8334129cadc7ee84327cd5f24
BLAKE2b-256 2531c0f3b5a073dd7683d0c0e52c0c4d7077ccc71a800c86d0048c007d309607

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-win32.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-win32.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: Python 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-win32.whl
Algorithm Hash digest
SHA256 2a512be95d45bcc69b7fe8bf09fd2e90c4f3427bb0c9225af4a30a4f1dbfef7c
MD5 0162e2e0b91d773efa03481c1402ee2e
BLAKE2b-256 7c03693b5e9c4cfceaad6c651237a673397e889e43779ebb6664e9b25f470e69

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-manylinux2014_x86_64.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: Python 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d77bf2e382d10a1d621d5b7ceed7d4c1bddc49e610abe16c30c76b9fcd31f9dd
MD5 58a59b76c9277e8f3671e6c6e0a7e41e
BLAKE2b-256 e834d7e06dbf71aa1ddb5a4bf3a366538bc76810834a6398dd129d3e9621e9c1

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-manylinux2014_s390x.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-manylinux2014_s390x.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: Python 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9175a8a40d4a604354d6b64d9d57b22d8258d552f7106d2b981074e8a663f5ac
MD5 263dfa8401b676a83fcd8442ef440eb1
BLAKE2b-256 b969c8da47688386145c343262d9d04af99b51369a3165d2697308ab546cfd3e

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-manylinux2014_i686.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-manylinux2014_i686.whl
  • Upload date:
  • Size: 10.7 MB
  • Tags: Python 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 77d5c02e22bb304ef550b9d1a8da27512e3a5c4d1396a106eb86f534587fe5c6
MD5 6d1ff07a55b54fe673b44a36508b3bf9
BLAKE2b-256 c75677210e3435937d61df449122b428e1a9a312023079720b9d930428dbc17b

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-manylinux2014_aarch64.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: Python 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c18a8ae37a80f17290231ce87875951e0e4305c368311744111561d68d2e2ffb
MD5 20438e87787bd00c48f590c4581edd6a
BLAKE2b-256 c6fb404b0de9cf23b002e659f7de87033bd3e468932878288657c1522247e449

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-macosx_12_0_x86_64.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-macosx_12_0_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: Python 3.10, macOS 12.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 ca6aadbcbd4b0725152fc0f794850a9ae4817e5a1109bdb02912a6249ecb77b8
MD5 b6b6bda90d94b186224834a148fba433
BLAKE2b-256 15fc8699139218b64602c94a0aa25d6ca9d5abd19245fca81d84324a1602f823

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py310-none-macosx_12_0_arm64.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py310-none-macosx_12_0_arm64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: Python 3.10, macOS 12.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py310-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 0777a32f05b8699844ab11416fbd5c99e85ca32820b2c938855df0cd28442aa1
MD5 91f9b5d20a3948e958bf7ac89b862eb6
BLAKE2b-256 bfd92a6b4a5fe7c7dbcc5f10a28bdd70d4ad74fbdeb98b42e1c5ec15400a00fd

See more details on using hashes here.

File details

Details for the file neonize-0.4.0.post0-py3-none-any.whl.

File metadata

  • Download URL: neonize-0.4.0.post0-py3-none-any.whl
  • Upload date:
  • Size: 602.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.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

Hashes for neonize-0.4.0.post0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd00adf9a57e92a21d97cd02accc0b078787181ad33b755214d47277c9c9ac97
MD5 9165e313f7ba5ed5c4a9915dbd9e927f
BLAKE2b-256 16efb87975c63f5dcc2a5e0c7e7360cc62fcd4b3add5bb88932c8b8c1ffc2707

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page