Skip to main content

NaraMotion 🎨🚀

Python Version License JIT Accelerated

Author & Creator: Islam Arifi
Official PyPI Package: naramotion (v0.26.1)

NaraMotion is an ultra-fast 2D/2.5D vector graphics, GIS, motion graphics, and cinematic video engine for Python powered by Blend2D (embedded JIT compiler and SIMD hardware acceleration).


🔑 License Activation & Evaluation Mode

NaraMotion is distributed under a Proprietary Commercial License with an Evaluation Mode. Unlicensed evaluation renders include a subtle semi-transparent "Auras" watermark in the center.

To Activate Full Commercial Version:

Call naramotion.set_license() at the beginning of your program with your commercial key:

import naramotion

# Activate official license (removes all evaluation watermarks)
naramotion.set_license("YOUR_COMMERCIAL_KEY")

Or set the environment variable:

export NARAMOTION_LICENSE_KEY="YOUR_COMMERCIAL_KEY"  # Linux/macOS
set NARAMOTION_LICENSE_KEY="YOUR_COMMERCIAL_KEY"     # Windows

📦 Official Installation

1. From PyPI:

pip install naramotion

2. Optional Speed & Ecosystem Extensions:

pip install "naramotion[numpy,pil]"     # For Zero-Copy NumPy & Pillow integration
pip install "naramotion[all]"           # For GeoPandas, Shapely & full testing

✅ Quick Verification:

import naramotion
print(f"✨ NaraMotion Version: {naramotion.__version__} by {naramotion.__author__}")

🚀 Quickstart

1. Basic Drawing & Context Manager

from naramotion import Image, Context, Format

# Create 800x600 surface in PRGB32 format
img = Image(800, 600, Format.PRGB32)

with Context(img) as ctx:
    # 1. Fill dark cyberpunk canvas background
    ctx.fill_all("#090D16")
    
    # 2. Draw soft glowing circle
    ctx.fill_circle(400, 300, 140, "#38BDF8")
    
    # 3. Add stylish thick border with rounded corners
    ctx.stroke_width = 8.0
    ctx.stroke_round_rect(100, 100, 600, 400, 24.0, style="#F43F5E")

# Save directly to disk
img.save("quickstart_naramotion.png")

2. Cinematic Post-Processing FX & Post-Pipeline

from naramotion import Image, Context, fx

img = Image(1280, 720)
with Context(img) as ctx:
    ctx.fill_all("#060810")
    ctx.fill_circle(640, 360, 180, "#38BDF8")

# Apply chained visual FX (Bloom + Vignette + Film Grain)
fx.FXPipeline().bloom(threshold=0.5, intensity=1.5, radius=12.0).vignette(0.5).film_grain(0.05).apply(img)
img.save("cinematic_naramotion.png")

3. Kinetic Perspective Camera (2.5D 4K Video Flythrough)

from naramotion import Image, Context, Format, CompOp
from naramotion.motion import PerspectiveCamera
from naramotion.video import VideoWriter

WIDTH, HEIGHT = 1920, 1080
img = Image(WIDTH, HEIGHT, Format.PRGB32)
cam = PerspectiveCamera(width=WIDTH, height=HEIGHT, pitch=65.0, distance=900.0)

with VideoWriter("flythrough.mp4", width=WIDTH, height=HEIGHT, fps=60) as vw:
    for frame in range(120):
        cam.target_y = (frame / 119.0) * 1200.0
        with Context(img) as ctx:
            ctx.fill_all("#050811")
            cam.render_fog(ctx, fog_color="#050811", horizon_y_ratio=0.35)
        vw.write_frame(img)

4. High-Performance Geospatial Engine & Shockwave Waves (v0.26.0)

For processing 50,000+ city blocks/parcels at 4K 60FPS:

  • Direct Native Parquet WKB Reader (read_parquet_native) bypassing Python/Shapely object allocations.
  • Structure of Arrays (NativeGeoLayerSoA) & Path Arena: Keeps distances, bounding boxes, and centroids in contiguous CPU cache lines.
  • Dual-Buffer Polygon Pipeline: Flushes fills and strokes in separate SIMD batches.
  • Centroid Spring Pop-In: Elastic spring back-out scale expansion ($\text{Scale}(t) = \text{Easing::back_out}(t)$) per polygon.
from naramotion.shapgeo import GeoCanvas, read_parquet_native
from naramotion.video import VideoWriter

WIDTH, HEIGHT = 3840, 2160
# 1. Pure C++ zero-copy ingest directly into SoA memory arena (< 0.8s for 50k blocks)
layer = read_parquet_native("city_blocks.parquet", return_native_soa=True)

# 2. Precompute radial shockwave wavefront in CPU cache
layer.compute_propagation(epicenters=[(-74.0060, 40.7128)], duration_frames=180.0)

# 3. Stream 4K frames zero-copy
with VideoWriter("shockwave_4k.mp4", width=WIDTH, height=HEIGHT, fps=60) as vw:
    with GeoCanvas(width=WIDTH, height=HEIGHT, bg_color="#050811") as canvas:
        for frame in range(180):
            canvas.clear("#050811")
            # Dual-buffer batch render with spring pop-in physics
            layer.render_popin(canvas, current_frame=frame, fill_color="#00F0FF", stroke_color="#FFFFFF", stroke_width=1.2)
            vw.write_frame(canvas.img)

📚 Complete API Documentation

For the complete 22-section master documentation and AI guidelines, see:

Metadata

Release files for naramotion 0.26.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for naramotion 0.26.1
File Size Uploaded
naramotion-0.26.1.tar.gz 20.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for naramotion 0.26.1
File Interpreter ABI Platform
naramotion-0.26.1-py3-none-any.whl Python 3 none any Details

Total release size: 31.4 MB

Release files / naramotion-0.26.1.tar.gz

Download URL naramotion-0.26.1.tar.gz
Size 20.5 MB
Tags Source
SHA-256 checksum
How to use checksums
42b6c00982a39c3de68ecf1069243602dfc9fff256653d4fff1916eadb9c0907
BLAKE2b-256 checksum
How to use checksums
e30e0c2980aeb6f6fa2f580546773058c760923aceaa32aa647559ddcbd0bf7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.0

Release files / naramotion-0.26.1-py3-none-any.whl

Download URL naramotion-0.26.1-py3-none-any.whl
Size 10.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
63e74cdb8b3042dd63e4031d4d27c2ddd25e01c280f445411f8426ecf162d710
BLAKE2b-256 checksum
How to use checksums
1490368dc410e4a8d603ecc2b75f56c8a5e6b192dbaddcce6a5d8b8169910034
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.0

Release history Release notifications | RSS feed

This release

0.26.1 This release

2 release files

0.25.0

1 release file

0.24.0

2 release files

0.23.0

1 release file

0.22.2

1 release file

0.22.1

1 release file

0.22.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page