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.0.tar.gz (7.2 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.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ara_core-1.1.0.tar.gz
  • Upload date:
  • Size: 7.2 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.0.tar.gz
Algorithm Hash digest
SHA256 213a846673c0529a70b0e792993813239c74f8a05e46b769a5109fbc29b6a547
MD5 c8a9aa890f284fec04495dd9040e6f73
BLAKE2b-256 8d818533e2034ff6e06454f5d19e5046270e68e575be318aeb8c462921f7cbb8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ara_core-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4945087417779da52d8697ef04b790ee405235d8f9380464282c638c7af5a121
MD5 e647e7e7489ca17f871ca199c85c3c45
BLAKE2b-256 41be3400354d7e95257f9a16200c75409094eabbb8670cef36614bd092e8291f

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