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: FeedMe

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

๐ŸŒŸ 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


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.3.15.post0.tar.gz (461.9 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.3.15.post0-py310-none-win_arm64.whl (6.1 MB view details)

Uploaded Python 3.10Windows ARM64

neonize-0.3.15.post0-py310-none-win_amd64.whl (6.6 MB view details)

Uploaded Python 3.10Windows x86-64

neonize-0.3.15.post0-py310-none-win32.whl (6.5 MB view details)

Uploaded Python 3.10Windows x86

neonize-0.3.15.post0-py310-none-manylinux2014_s390x.whl (6.7 MB view details)

Uploaded Python 3.10

neonize-0.3.15.post0-py310-none-manylinux2014_i686.whl (9.2 MB view details)

Uploaded Python 3.10

neonize-0.3.15.post0-py310-none-macosx_12_0_x86_64.whl (6.4 MB view details)

Uploaded Python 3.10macOS 12.0+ x86-64

neonize-0.3.15.post0-py310-none-macosx_12_0_arm64.whl (6.0 MB view details)

Uploaded Python 3.10macOS 12.0+ ARM64

neonize-0.3.15.post0-py3-none-any.whl (557.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: neonize-0.3.15.post0.tar.gz
  • Upload date:
  • Size: 461.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0.tar.gz
Algorithm Hash digest
SHA256 85495c2667b88ae1dd8c3e292c101e5dcdff0e14c9692a299a2b73eb21239e9c
MD5 f4576ecf67ee0c0fc2e06cf818eaa967
BLAKE2b-256 9ba05e06df362b952fe08381ff10709ab4826640ae2fd86cb3a0ef4bcb5dae03

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.post0-py310-none-win_arm64.whl
  • Upload date:
  • Size: 6.1 MB
  • Tags: Python 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-win_arm64.whl
Algorithm Hash digest
SHA256 6f5406c25de143d590d30f8fc3efb6dc9e94fb78cc26226d49e358c09df9bfd5
MD5 af48b8c842a8f92a099c15aef1ea61e6
BLAKE2b-256 e695c88fe4eee07cae4fb95e62856eca30863183d3c54e5742e156930c206621

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.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.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-win_amd64.whl
Algorithm Hash digest
SHA256 67b5872bf31fe960346022b1c0ab45a818ec5cf842d246319c319dded2350963
MD5 77e46f30234483cde199fd07637dd78b
BLAKE2b-256 fd0b0fa999fae522fd8f36cf34dc22fc05dd88fc436f5be14d33179aab02e7c9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.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.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-win32.whl
Algorithm Hash digest
SHA256 31fe45b2a58c2ed75584200abfa76987ffc9fa8350e860081e2789c774d8cef0
MD5 ac180f156a0e7b633ca61dec0064e490
BLAKE2b-256 94d54599a06d9060e05bdeadb2fee2790e392dac382c502546c2cbb52708bd0e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.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.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 26b40e8208e303fbf612c03d1ba0c31ae938da4f5e1821c06e3385f0d76a28e4
MD5 08e292298ee9ab18911a4901e830e4b1
BLAKE2b-256 f3b5540dcee5ccb884b91b8c2ab023ad8e79ea33c300fcdfb7f1c3f506c2a03a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.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.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f39402898d1f8fd393244813517f87dc9758b9f50ca53aae693a1ba21e1c5585
MD5 3493eac233a0c72021729de054125fd6
BLAKE2b-256 187b26b5ae0e76ff8ce3de91d5a22d1eb638da51b50f8bb9bb94187e67f2ec62

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.post0-py310-none-manylinux2014_i686.whl
  • Upload date:
  • Size: 9.2 MB
  • Tags: Python 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e75a83b5b518ac9029af990aaa7050b9a4f8188d597897640319e223747f3347
MD5 d2016ca94f9a87da2ee9f8aa9ccd97ab
BLAKE2b-256 ab6fe4640ac0f0e7ca9348e83c976448eff13df49dd28783982e2788c790de34

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.post0-py310-none-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: Python 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd4767dfb9656779e1a25d18e0e314b415812d0dec66436115b6b5740677d208
MD5 f7ff9b55dbf1c8446e4f22459b543386
BLAKE2b-256 a0f3290fdf4fd000175eee4ef542737d1e3683183dc262ad57dca009aea5e960

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.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.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 7936f3cc6f837390e70cb9fcdab9611a3c8ce4f38ac6cb6231c43559ae07d13a
MD5 383891298a93e8808815ce9b3a5f7057
BLAKE2b-256 f90c04d23b45547da915e3c320ee2fcf4b43f2821d209d24a7edd82d75c381e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.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.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py310-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 01581bf87add59565e8e69461ba5b244f886ca41a122b68b245a5a146fce74f0
MD5 3b03769034e52e31b583c6160c2d5c77
BLAKE2b-256 f23d139f12a73a8877de4105cb433123eaa521067181ca82ccf2176ba45239f2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: neonize-0.3.15.post0-py3-none-any.whl
  • Upload date:
  • Size: 557.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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.3.15.post0-py3-none-any.whl
Algorithm Hash digest
SHA256 81cc261d8385ca62abed153bca7259780919eec3201be26dc17511da444713ab
MD5 02ecdb78e871cb6553ff92df0f2804b9
BLAKE2b-256 090abc71332742dd7a03a1606b90e49ec8fcf8702cecef478a4447757aff9107

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