Skip to main content

Blazing fast reactive server-side rendering for Django, powered by Rust

Project description

๐Ÿš€ djust

Blazing fast reactive server-side rendering for Django, powered by Rust

djust brings Phoenix LiveView-style reactive components to Django, with performance that feels native. Write server-side Python code with automatic, instant client updatesโ€”no JavaScript bundling, no build step, no complexity.

๐ŸŒ djust.org | ๐Ÿš€ Quick Start | ๐Ÿ“ Examples

MIT License Python 3.8+ Django 3.2+

โœจ Features

  • โšก 10-100x Faster - Rust-powered template engine and Virtual DOM diffing
  • ๐Ÿ”„ Reactive Components - Phoenix LiveView-style server-side reactivity
  • ๐Ÿ”Œ Django Compatible - Works with existing Django templates and components
  • ๐Ÿ“ฆ Zero Build Step - Just ~5KB of client JavaScript, no bundling needed
  • ๐ŸŒ WebSocket Updates - Real-time DOM patches over WebSocket (with HTTP fallback)
  • ๐ŸŽฏ Minimal Client Code - Smart diffing sends only what changed
  • ๐Ÿ”’ Type Safe - Rust guarantees for core performance-critical code
  • ๐Ÿž Developer Debug Panel - Interactive debugging with event history and VDOM inspection
  • ๐Ÿ’ค Lazy Hydration - Defer WebSocket connections for below-fold content (20-40% memory savings)
  • ๐Ÿš€ TurboNav Compatible - Works seamlessly with Turbo-style client-side navigation

๐ŸŽฏ Quick Example

from djust import LiveView

class CounterView(LiveView):
    template_string = """
    <div>
        <h1>Count: {{ count }}</h1>
        <button dj-click="increment">+</button>
        <button dj-click="decrement">-</button>
    </div>
    """

    def mount(self, request, **kwargs):
        self.count = 0

    def increment(self):
        self.count += 1  # Automatically updates client!

    def decrement(self):
        self.count -= 1

That's it! No JavaScript needed. State changes automatically trigger minimal DOM updates.

๐Ÿ“Š Performance

Benchmarked on M1 MacBook Pro (2021):

Operation Django djust Speedup
Template Rendering (100 items) 2.5 ms 0.15 ms 16.7x
Large List (10k items) 450 ms 12 ms 37.5x
Virtual DOM Diff N/A 0.08 ms Sub-ms
Round-trip Update 50 ms 5 ms 10x

Run benchmarks yourself:

cd benchmarks
python benchmark.py

๐Ÿš€ Installation

Prerequisites

  • Python 3.8+
  • Rust 1.70+ (for building from source)
  • Django 3.2+

Install from PyPI (when published)

pip install djust

Build from Source

Using Make (Easiest - Recommended for Development)

# Clone the repository
git clone https://github.com/djust-org/djust.git
cd djust

# Install Rust (if needed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Install everything and build
make install

# Start the development server
make start

# See all available commands
make help

Common Make Commands:

  • make start - Start development server with hot reload
  • make stop - Stop the development server
  • make status - Check if server is running
  • make test - Run all tests
  • make clean - Clean build artifacts
  • make help - Show all available commands

Using uv (Fast)

# Clone the repository
git clone https://github.com/djust-org/djust.git
cd djust

# Install Rust (if needed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Install uv (if needed)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install maturin and build
uv pip install maturin
maturin develop --release

Using pip

# Clone the repository
git clone https://github.com/djust-org/djust.git
cd djust

# Install Rust (if needed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install maturin
pip install maturin

# Build and install
maturin develop --release

# Or build wheel
maturin build --release
pip install target/wheels/djust-*.whl

๐Ÿ“– Documentation

Setup

  1. Add to INSTALLED_APPS:
INSTALLED_APPS = [
    # ...
    'channels',  # Required for WebSocket support
    'djust',
    # ...
]
  1. Configure ASGI application (asgi.py):
import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
from djust.websocket import LiveViewConsumer
from django.urls import path

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    "websocket": AuthMiddlewareStack(
        URLRouter([
            path('ws/live/', LiveViewConsumer.as_asgi()),
        ])
    ),
})
  1. Add to settings.py:
ASGI_APPLICATION = 'myproject.asgi.application'

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels.layers.InMemoryChannelLayer'
    }
}

Creating LiveViews

Class-Based LiveView

from djust import LiveView

class TodoListView(LiveView):
    template_name = 'todos.html'  # Or use template_string

    def mount(self, request, **kwargs):
        """Called when view is first loaded"""
        self.todos = []

    def add_todo(self, text):
        """Event handler - called from client"""
        self.todos.append({'text': text, 'done': False})

    def toggle_todo(self, index):
        self.todos[index]['done'] = not self.todos[index]['done']

Function-Based LiveView

from djust import live_view

@live_view(template_name='counter.html')
def counter_view(request):
    count = 0

    def increment():
        nonlocal count
        count += 1

    return locals()  # Returns all local variables as context

Template Syntax

djust supports Django template syntax with event binding:

<!-- Variables -->
<h1>{{ title }}</h1>

<!-- Filters -->
<p>{{ text|upper }}</p>
<a href="?q={{ query|urlencode }}">Search</a>

<!-- Control flow -->
{% if show %}
    <div>Visible</div>
{% endif %}

{% if count > 10 %}
    <div>Many items!</div>
{% endif %}

{% for item in items %}
    <li>{{ item }}</li>
{% endfor %}

<!-- URL resolution -->
<a href="{% url 'myapp:detail' pk=item.id %}">View</a>

<!-- Template includes -->
{% include "partials/header.html" %}

<!-- Event binding -->
<button dj-click="increment">Click me</button>
<input dj-input="on_search" type="text" />
<form dj-submit="submit_form">
    <input name="email" />
    <button type="submit">Submit</button>
</form>

Supported Events

  • dj-click - Click events
  • dj-input - Input events (passes value)
  • dj-change - Change events (passes value)
  • dj-submit - Form submission (passes form data as dict)

Reusable Components

djust provides a powerful component system with automatic state management and stable component IDs.

Basic Component Example

from djust.components import AlertComponent

class MyView(LiveView):
    def mount(self, request):
        # Components get automatic IDs based on attribute names
        self.alert_success = AlertComponent(
            message="Operation successful!",
            type="success",
            dismissible=True
        )
        # component_id automatically becomes "alert_success"

Component ID Management

Components automatically receive a stable component_id based on their attribute name in your view. This eliminates manual ID management:

# When you write:
self.alert_success = AlertComponent(message="Success!")

# The framework automatically:
# 1. Sets component.component_id = "alert_success"
# 2. Persists this ID across renders and events
# 3. Uses it in HTML: data-component-id="alert_success"
# 4. Routes events back to the correct component

Why it works:

  • The attribute name (alert_success) is already unique within your view
  • It's stable across re-renders and WebSocket reconnections
  • Event handlers can reference components by their attribute names
  • No manual ID strings to keep in sync

Event Routing Example:

class MyView(LiveView):
    def mount(self, request):
        self.alert_warning = AlertComponent(
            message="Warning message",
            dismissible=True
        )

    def dismiss(self, component_id: str = None):
        """Handle dismissal - automatically routes to correct component"""
        if component_id and hasattr(self, component_id):
            component = getattr(self, component_id)
            if hasattr(component, 'dismiss'):
                component.dismiss()  # component_id="alert_warning"

When the dismiss button is clicked, the client sends component_id="alert_warning", and the handler uses getattr(self, "alert_warning") to find the component.

Creating Custom Components

from djust import Component, register_component

@register_component('my-button')
class Button(Component):
    template = '<button dj-click="on_click">{{ label }}</button>'

    def __init__(self, label="Click"):
        super().__init__()
        self.label = label
        self.clicks = 0

    def on_click(self):
        self.clicks += 1
        print(f"Clicked {self.clicks} times!")

Decorators

from djust import LiveView, event_handler, reactive

class MyView(LiveView):
    @event_handler
    def handle_click(self):
        """Marks method as event handler"""
        pass

    @reactive
    def count(self):
        """Reactive property - auto-triggers updates"""
        return self._count

    @count.setter
    def count(self, value):
        self._count = value

Configuration

Configure djust in your Django settings.py:

LIVEVIEW_CONFIG = {
    # Transport mode
    'use_websocket': True,  # Set to False for HTTP-only mode (no WebSocket dependency)

    # Debug settings
    'debug_vdom': False,  # Enable detailed VDOM patch logging (for troubleshooting)

    # CSS Framework
    'css_framework': 'bootstrap5',  # Options: 'bootstrap5', 'tailwind', None
}

Common Configuration Options:

Option Default Description
use_websocket True Use WebSocket transport (requires Django Channels)
debug_vdom False Enable detailed VDOM debugging logs
css_framework 'bootstrap5' CSS framework for components

Debug Mode:

When troubleshooting VDOM issues, enable debug logging:

# In settings.py
LIVEVIEW_CONFIG = {
    'debug_vdom': True,
}

# Or programmatically
from djust.config import config
config.set('debug_vdom', True)

This will log:

  • Server-side: Patch generation details (stderr)
  • Client-side: Patch application and DOM traversal (browser console)

State Management

djust provides Python-only state management decorators that eliminate the need for manual JavaScript.

๐Ÿš€ Quick Start (5 minutes)

Build a debounced search in 8 lines of Python (no JavaScript):

from djust import LiveView
from djust.decorators import debounce

class ProductSearchView(LiveView):
    template_string = """
    <input dj-input="search" placeholder="Search products..." />
    <div>{% for p in results %}<div>{{ p.name }}</div>{% endfor %}</div>
    """

    def mount(self, request):
        self.results = []

    @debounce(wait=0.5)  # Wait 500ms after typing stops
    def search(self, query: str = "", **kwargs):
        self.results = Product.objects.filter(name__icontains=query)[:10]

That's it! Server only queries after you stop typing. Add @optimistic for instant UI updates, @cache(ttl=300) to cache responses for 5 minutes.

๐Ÿ‘‰ Full Quick Start Guide (5 min)


Key Features

  • โœ… Zero JavaScript Required - Common patterns work without writing any JS
  • โœ… 87% Code Reduction - Decorators replace hundreds of lines of manual JavaScript
  • โœ… Smallest Bundle - 7.1 KB client.js (vs Phoenix ~30KB, Livewire ~50KB)
  • โœ… Competitive DX - Matches Phoenix LiveView and Laravel Livewire developer experience

Available Decorators

Decorator Use When Example
@debounce(wait) User is typing Search, autosave
@throttle(interval) Rapid events Scroll, resize
@optimistic Instant feedback Counter, toggle
@cache(ttl, key_params) Repeated queries Autocomplete
@client_state(keys) Multi-component Dashboard filters
DraftModeMixin Auto-save forms Contact form

Quick Decision Matrix:

  • Typing in input? โ†’ @debounce(0.5)
  • Scrolling/resizing? โ†’ @throttle(0.1)
  • Need instant UI update? โ†’ @optimistic
  • Same query multiple times? โ†’ @cache(ttl)
  • Multiple components? โ†’ @client_state([keys])
  • Auto-save forms? โ†’ DraftModeMixin

Learn More

Developer Tooling

Debug Panel

Interactive debugging tool for LiveView development (DEBUG mode only):

# In settings.py
DEBUG = True  # Debug panel automatically enabled

Open: Press Ctrl+Shift+D (Windows/Linux) or Cmd+Shift+D (Mac), or click the ๐Ÿž floating button

Features:

  • ๐Ÿ” Event Handlers - Discover all handlers with parameters, types, and descriptions
  • ๐Ÿ“Š Event History - Real-time log with timing metrics (e.g., search โ€ข 45.2ms)
  • โšก VDOM Patches - Monitor DOM updates with sub-millisecond precision
  • ๐Ÿ”ฌ Variables - Inspect current view state

Learn More:

Event Handlers

Always use @event_handler decorator for auto-discovery and validation:

from djust.decorators import event_handler

@event_handler()
def search(self, value: str = "", **kwargs):
    """Search handler - description shown in debug panel"""
    self.search_query = value

Parameter Convention: Use value for form inputs (dj-input, dj-change events):

# โœ… Correct - matches what form events send
@event_handler()
def search(self, value: str = "", **kwargs):
    self.search_query = value

# โŒ Wrong - won't receive input value
@event_handler()
def search(self, query: str = "", **kwargs):
    self.search_query = query  # Always "" (default)

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Browser                                    โ”‚
โ”‚  โ”œโ”€โ”€ Client.js (5KB) - Event & DOM patches โ”‚
โ”‚  โ””โ”€โ”€ WebSocket Connection                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ†•๏ธ WebSocket (Binary/JSON)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Django + Channels (Python)                 โ”‚
โ”‚  โ”œโ”€โ”€ LiveView Classes                       โ”‚
โ”‚  โ”œโ”€โ”€ Event Handlers                         โ”‚
โ”‚  โ””โ”€โ”€ State Management                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
           โ†•๏ธ Python/Rust FFI (PyO3)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Rust Core (Native Speed)                   โ”‚
โ”‚  โ”œโ”€โ”€ Template Engine (<1ms)                โ”‚
โ”‚  โ”œโ”€โ”€ Virtual DOM Diffing (<100ฮผs)          โ”‚
โ”‚  โ”œโ”€โ”€ HTML Parser                            โ”‚
โ”‚  โ””โ”€โ”€ Binary Serialization (MessagePack)    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽจ Examples

See the examples/demo_project directory for complete working examples:

  • Counter - Simple reactive counter
  • Todo List - CRUD operations with lists
  • Chat - Real-time messaging

Run the demo:

cd examples/demo_project
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver

Visit http://localhost:8000

๐Ÿ”ง Development

Project Structure

djust/
โ”œโ”€โ”€ crates/
โ”‚   โ”œโ”€โ”€ djust_core/      # Core types & utilities
โ”‚   โ”œโ”€โ”€ djust_templates/ # Template engine
โ”‚   โ”œโ”€โ”€ djust_vdom/      # Virtual DOM & diffing
โ”‚   โ””โ”€โ”€ djust_live/      # Main PyO3 bindings
โ”œโ”€โ”€ python/
โ”‚   โ””โ”€โ”€ djust/      # Python package
โ”‚       โ”œโ”€โ”€ live_view.py       # LiveView base class
โ”‚       โ”œโ”€โ”€ component.py       # Component system
โ”‚       โ”œโ”€โ”€ websocket.py       # WebSocket consumer
โ”‚       โ””โ”€โ”€ static/
โ”‚           โ””โ”€โ”€ client.js      # Client runtime
โ”œโ”€โ”€ examples/                  # Example projects
โ”œโ”€โ”€ benchmarks/               # Performance benchmarks
โ””โ”€โ”€ tests/                    # Tests

Running Tests

# Rust tests
cargo test

# Python tests
pytest

# Integration tests
cd examples/demo_project
python manage.py test

Building Documentation

cargo doc --open

๐Ÿ’ฐ Supporting djust

djust is open source (MIT licensed) and free forever. If you're using djust in production or want to support development:

  • โญ Star this repo - Help others discover djust
  • ๐Ÿ’œ GitHub Sponsors - Monthly support from $5/month

Your support helps us maintain and improve djust for everyone!

๐Ÿค Contributing

Contributions welcome! Please read CONTRIBUTING.md first.

Areas we'd love help with:

  • Additional Django template filters/tags
  • More example applications
  • Performance optimizations
  • Documentation improvements
  • Browser compatibility testing

๐Ÿ“ Roadmap

  • Template inheritance ({% extends %})
  • {% url %} and {% include %} tags
  • Comparison operators in {% if %} tags
  • More Django template filters (urlencode)
  • File upload handling
  • Server-sent events (SSE) fallback
  • React/Vue component compatibility
  • TypeScript definitions
  • Redis-backed session storage
  • Horizontal scaling support

๐Ÿ”’ Security

  • CSRF protection via Django middleware
  • XSS protection via automatic template escaping
  • WebSocket authentication via Django sessions
  • Rate limiting support

Report security issues to: security@djust.org

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Inspired by Phoenix LiveView
  • Built with PyO3 for Python/Rust interop
  • Uses html5ever for HTML parsing
  • Powered by the amazing Rust and Django communities

๐Ÿ’ฌ Community & Support


djust.org โ€” Made with โค๏ธ by the djust community

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

djust-0.2.2rc1.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

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

djust-0.2.2rc1-cp312-cp312-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.12Windows x86-64

djust-0.2.2rc1-cp312-cp312-manylinux_2_34_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

djust-0.2.2rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

djust-0.2.2rc1-cp312-cp312-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

djust-0.2.2rc1-cp312-cp312-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

djust-0.2.2rc1-cp311-cp311-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.11Windows x86-64

djust-0.2.2rc1-cp311-cp311-manylinux_2_34_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

djust-0.2.2rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

djust-0.2.2rc1-cp311-cp311-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

djust-0.2.2rc1-cp311-cp311-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

djust-0.2.2rc1-cp310-cp310-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.10Windows x86-64

djust-0.2.2rc1-cp310-cp310-manylinux_2_34_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

djust-0.2.2rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

djust-0.2.2rc1-cp310-cp310-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

djust-0.2.2rc1-cp39-cp39-manylinux_2_34_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ x86-64

djust-0.2.2rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

djust-0.2.2rc1-cp39-cp39-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

djust-0.2.2rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

djust-0.2.2rc1-cp38-cp38-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file djust-0.2.2rc1.tar.gz.

File metadata

  • Download URL: djust-0.2.2rc1.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for djust-0.2.2rc1.tar.gz
Algorithm Hash digest
SHA256 fea15350b882c4eca2f6be76d9fc333c9806012dcbfdc5ccc330fd39eaf96d5d
MD5 418e05a315260aedd8d5942c3ba2e31b
BLAKE2b-256 6f02ecc2de702f7c8f950d063dde80591240f4a0e17db8d8de8f32ce30f271e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1.tar.gz:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: djust-0.2.2rc1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for djust-0.2.2rc1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1ab590ac57c1bbdefaa37aa3baf9434dfae7704150188ccc9cb7ca6460dc3565
MD5 07985158ebda6105d878bc297a77d866
BLAKE2b-256 3b50435a926e3c28a8156ce4267736b003cc0ada1f462dca231993d05d927df4

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp312-cp312-win_amd64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0c63f50a4c3c3b8cda899da31d43e7c6f6554215e788ccbe23dc032217ff567c
MD5 079e21ec66de2747d9556ec8cc0fdb8b
BLAKE2b-256 56f8b844359e84558a07891da41df8254a825bc32d69a93268bcf703ad974769

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b35f324ddf33087f6190201f4b9e33eec49dd8866e3b59586369eefa5ad4d314
MD5 1cd5c8112c8ffc6e58b15861e7c93def
BLAKE2b-256 1998f45846852c708657d3557d3d216f5dc923e253b4dc10abd5504867f806d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45f17f2c6d930a6aeb3cfe3eea89ffe03d0aca04599f15250550863519f48fd4
MD5 d23da1bf70de7838a2b1d3773361f95a
BLAKE2b-256 35e004dca57d5bb8e2f5c04335d54a5efe5cf0c4afefc6ae28cd9afb59d60eba

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 065e0d34832ef306e56dbbb1d30ad23f8b3d562e955dfb2735b611a2b16d6cb6
MD5 f7e6e74f187aae5d6c70a89a6668d59e
BLAKE2b-256 0177313b9edc961c220ff5c5382d4155bd3ff4ab747d166a398f0c5331bdcbe6

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: djust-0.2.2rc1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for djust-0.2.2rc1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2905cbc2e4c33a14d1635b4d165e36bc2e202ecc0f73819ae48fe3f6e192d93d
MD5 6d0b4366aeb7cefa3120acb2d2b8c14e
BLAKE2b-256 4689e8c1c8ee422c51f77b4c93d34d4ac7513fb6f1bfc35e15a166d824fb2733

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp311-cp311-win_amd64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f75f73a6909f3c74a2513b789773526a1107d39f2b0af6b6d98bac6dbd600441
MD5 744250c97baa3d17aa826aa0937c2773
BLAKE2b-256 35d9e0b2a9444c6f3df08ccfb4c1d724639e29f22a2d45b664dfb36d0cd9a3e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 794da7c49a0c80095179c3ce472db6e49f0d2ee4308217299a38415e239e27b7
MD5 dafe1414cb6b5fbdc25c2e9f044afad0
BLAKE2b-256 2ab500a7a11ae5972545db782dd66a89d6a3cdd2abcd496fa560c67a49ccdc04

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 275149cb78720b13096284d8c676885bbcb7cfa18732b9f45ae070e1d3364ef8
MD5 d9e4d81cc87665c4bbd752c6728b6afc
BLAKE2b-256 12ab5fc90f236cba1cbf407e37048bae2d82fa8ba803bd2b1839b4ad18d94a00

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1017fc32179b3420b54fc43abaa92beb88d7ddd93f96dd0128717e59d20eed03
MD5 84556aab6c4b5ffaf0fa030b0afa0cb0
BLAKE2b-256 979ee0b817aa925b48ae2ef8611a44091decc1fc35e4b248e7c052aa9e34e18d

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: djust-0.2.2rc1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for djust-0.2.2rc1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 27562f00918e45129e4652800d3aaa6a3e7a89219a62e08e060611a5b8b9b026
MD5 c8804537adb5af5975a1129bfcaa21bc
BLAKE2b-256 daa1ff463db1fc26ead516afa884a9bf65b5537a10141d6e997f1ff431cb299d

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 37c5c1f4e40609014de7be94f1668c3df998237cede8aba3816049a9432675e4
MD5 22b91efe2bf6fb3d7b049e4eef354b2f
BLAKE2b-256 dfa59546027442b7b33e036f13cb2166bf1e53d6812c452b13c0de54a9567daf

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8e19b484e4b80b262c2ba53dff48fa6110238d3cbf3b218d53d267012e2657f0
MD5 d364901638ee99111e073628c47f5087
BLAKE2b-256 2f55ad2f513fe114cc9e7a10ee6b74f50269df3dcaf020154ffb7f9d094628b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e0fce46e2d0725405dd13547fc7d642c6139153d1e2a8996753b559aef78b8d
MD5 077e384d104eb9264209e3f8a86f9f82
BLAKE2b-256 033c2c7bc25b010c9b30d60a195104e0ee5c69e963a2380015ac175c46fa7287

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6bbe079d339b3aa05126201ed31f42007a51c2c3270e2a4c8311761a084e323d
MD5 93bfd02e96b02e4bbc84c1604775137c
BLAKE2b-256 531908a931a5bff2f0f072af65e74da99611056a36898fbde5acb552ef3c721e

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp39-cp39-manylinux_2_34_x86_64.whl:

Publisher: release.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e1a2ecccb35aa3b29eaca2828f6be965171ac5ce17ecc0159fc73eb834bc6d16
MD5 6f0b7f2b941331ad626f9289784ceed3
BLAKE2b-256 1cc934ef840a2ede34bac0cf9c8542c34e515ef52588239010ca4fe7e14a0962

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6355c931963927cff434afd2a142dad0d21ea267842d8aac07234871ca994e79
MD5 81373be84d7b62666c01fddc991b5d49
BLAKE2b-256 4bd028fcbbf6752a0ba96cf744da5cdbfcc284610dfe8a0d9fce7c9520859d89

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f713eb57372afcd0f85c2461d0baac06d3337c68168bd3bb7ae4b597216bd864
MD5 f1b0f971a7ab43743ca61cea7f060d9c
BLAKE2b-256 6d8ee128c39631382bf369af4d2f71b552ca6bdf32752dcfaa99ff4175623c68

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djust-0.2.2rc1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for djust-0.2.2rc1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f85b70dfbdde0fc8cda48de08a087dc6ce2e0e12dd7723516477160ef29cff05
MD5 a52a11a3037bb70f1c9cd43e67d96dc5
BLAKE2b-256 9725476448b2d1a9b43ae87df08004f6f7802cbdaca3c144c453bbad79e3aae6

See more details on using hashes here.

Provenance

The following attestation bundles were made for djust-0.2.2rc1-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: publish.yml on djust-org/djust

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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