Skip to main content

Lightweight minimalistic Ara framework

Project description

Ara_core

Ara.Core is a lightweight Python framework for building interactive applications with GLFW. It provides an easy way to manage windows, handle input, integrate modules, and run the main loop with logging and error handling out of the box.


Features

Window Management – Create and control an OpenGL context window.

Input Handling – High-level API for keyboard and mouse state:

pressed, down, and up queries for keys and mouse buttons

Cursor locking, movement delta, and scroll tracking

Module System – Plug in custom modules with lifecycle methods

Timing Utilities – Frame delta (dt), elapsed time, and FPS measurement.

Logging – Integrated logging system with configurable levels.

Callbacks – Flexible callback hooks in the main loop.


Quick Start

from ara_core import App

# Create application instance
core = App(title="My First App", width=1280, height=720, log_level="info")

def render(core):
    print("GUI rendering")

def update(core):
    print(f"Frame time: {core.dt()}")

def terminate(core):
    print("Cleanup done!")

# Run with custom callbacks
core.run(render, callback, terminate)

Input API

core.key_pressed("w")      # True while 'W' is held
core.key_down("space")     # True only on the frame space was pressed
core.key_up("escape")      # True only on the frame escape was released

core.mouse_button_pressed("left")
pos = core.get_mouse_pos()
dx, dy = core.get_mouse_delta()
scroll = core.get_mouse_scroll()

Module System

Modules can be classes or instances. They may implement any of the lifecycle methods:

class ExampleModule:
    NAME = "module_example"

    DEPENDENCIES = {
        "update_callback": {
            "before": ["core.update"],
            "after": ["module_example.other_callback"]
        },

        "other_callback": {
            "before": [],
            "after": []
        }
    }

    def __init__(self, core):
        self.core = core

    def init(self):
        print("Module initialized")

    def update_callback(self):
        print("Module updated")

    def other_callback(self):
        print("Module other callback")

    def terminate(self):
        print("Module terminated")

core.add_module(ExampleModule)

Utilities

app.close() – close the window

app.time() – elapsed time since start

app.dt() – delta time of last frame

app.fps() – current frames per second


Requirements

Python 3.8+

GLFW

Ara_log

Install dependencies:

pip install glfw, pyopengl, ara_log


License

MIT License. Feel free to use and modify for your projects.

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

ara_core-1.1.1.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

ara_core-1.1.1-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file ara_core-1.1.1.tar.gz.

File metadata

  • Download URL: ara_core-1.1.1.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for ara_core-1.1.1.tar.gz
Algorithm Hash digest
SHA256 39f2acb09e908f6a2beaf2184be9cfdeef17698f880bf96b56ed0200ec8961ce
MD5 e208e3a31f97ad84f9efb37bf9698aa4
BLAKE2b-256 84df168a5c343fd432fc4f47877531e5d2bd17ca09a28e2718580a27493258a1

See more details on using hashes here.

File details

Details for the file ara_core-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: ara_core-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for ara_core-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 41f32112cacd7ba153cb869bbbe8906215350b1bd7541a6838d5b4442e313086
MD5 19cc3dcacca4f5642af35e9f294a3a3a
BLAKE2b-256 6330a46084bec20f6a0751899b06f0a101884a4e135d1d874f92be11d262f3d6

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