Skip to main content

PyBrKarma - Python with Braces Runtime Transformer

Project description

PyBrKarma ๐Ÿโœจ

PyBrKarma is a sophisticated Python runtime transformer that enables developers to write Python code using curly braces ({ and }) instead of traditional colons and indentation. This bridges the syntactic gap between Python and C-style languages while maintaining full Python compatibility and semantics.

๐ŸŽฏ Overview

PyBrKarma transforms brace-delimited Python code into standard Python syntax at runtime, allowing developers familiar with C, Java, JavaScript, or other brace-based languages to write Python with familiar block delimiters. The transformation is transparent and maintains complete Python functionality.

Before (Standard Python)

def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)

After (PyBrKarma Syntax)

def fibonacci(n) {
    if n <= 1 {
        return n
    } else {
        return fibonacci(n-1) + fibonacci(n-2)
    }
}

๐Ÿš€ Key Features

  • ๐Ÿ”„ Runtime Transformation: Seamlessly converts .pybr files to valid Python syntax
  • ๐Ÿ“ฆ Import System Integration: Import .pybr modules directly in Python code
  • ๐Ÿ› ๏ธ CLI Tools: Run and convert .pybr files from the command line
  • ๐ŸŽฏ Complete Language Support: Supports all Python control structures and constructs
  • โšก Zero Dependencies: Lightweight implementation with no external dependencies
  • ๐Ÿ”ง Non-Intrusive: No modifications to the Python interpreter required

Supported Constructs

  • Function definitions (def)
  • Class definitions (class)
  • Conditional statements (if, elif, else)
  • Loop constructs (for, while)
  • Exception handling (try, except, finally)
  • Context managers (with)
  • Pattern matching (match, case) - Python 3.10+
  • Lambda expressions and comprehensions
  • Async/await syntax

๐Ÿ“ฆ Installation

Install PyBrKarma from PyPI using pip:

pip install pybrkarma

Requirements

  • Python 3.6 or higher
  • No external dependencies

๐Ÿ”ง Usage

Command Line Interface

Execute PyBrKarma Files

# Run a .pybr file directly
pybr script.pybr

# Run with arguments
pybr script.pybr arg1 arg2

# Alternative syntax
python -m pybrkarma script.pybr

Convert to Standard Python

# Convert .pybr to .py (outputs to stdout)
pybr script.pybr --convert

# Convert and save to file
pybr script.pybr --convert --output script.py

# Convert with custom output name
pybr input.pybr -c -o output.py

Programmatic Usage

Import Hook Integration

from pybrkarma import enable_pybr_imports

# Enable .pybr file imports
enable_pybr_imports()

# Now you can import .pybr files as regular modules
import my_pybr_module
from my_package import my_pybr_submodule

# Disable when no longer needed
from pybrkarma import disable_pybr_imports
disable_pybr_imports()

Direct Transformation

from pybrkarma import transform_pybr

pybr_code = """
def greet(name) {
    if name {
        print(f"Hello, {name}!")
    } else {
        print("Hello, World!")
    }
}
"""

python_code = transform_pybr(pybr_code)
exec(python_code)

๐Ÿ“ Project Architecture

pybrkarma/
โ”œโ”€โ”€ pybrkarma/
โ”‚   โ”œโ”€โ”€ __init__.py      
โ”‚   โ”œโ”€โ”€ __main__.py      
โ”œโ”€โ”€ setup.py
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ CONTRIBUTING.md
โ””โ”€โ”€ CHANGELOG.md

๐Ÿงช Examples

Basic Function Definition

# fibonacci.pybr
def fibonacci(n) {
    if n <= 1 {
        return n
    }
    return fibonacci(n-1) + fibonacci(n-2)
}

for i in range(10) {
    print(f"fib({i}) = {fibonacci(i)}")
}

Class Definition

# shapes.pybr
class Rectangle {
    def __init__(self, width, height) {
        self.width = width
        self.height = height
    }
    
    def area(self) {
        return self.width * self.height
    }
    
    def perimeter(self) {
        return 2 * (self.width + self.height)
    }
}

rect = Rectangle(5, 3)
print(f"Area: {rect.area()}")
print(f"Perimeter: {rect.perimeter()}")

Exception Handling

# error_handling.pybr
def safe_divide(a, b) {
    try {
        result = a / b
        return result
    } except ZeroDivisionError {
        print("Cannot divide by zero!")
        return None
    } finally {
        print("Division operation completed")
    }
}

๐Ÿ” Advanced Features

Context Managers

# file_operations.pybr
def read_file(filename) {
    try {
        with open(filename, 'r') as f {
            return f.read()
        }
    } except FileNotFoundError {
        print(f"File {filename} not found")
        return None
    }
}

Pattern Matching (Python 3.10+)

# pattern_matching.pybr
def handle_data(data) {
    match data {
        case {'type': 'user', 'name': str(name)} {
            print(f"User: {name}")
        }
        case {'type': 'admin', 'permissions': list(perms)} {
            print(f"Admin with permissions: {perms}")
        }
        case _ {
            print("Unknown data format")
        }
    }
}

๐Ÿงช Testing

Run the test suite:

# Install development dependencies
pip install -e .[dev]

# Run tests
python -m pytest tests/

# Run with coverage
python -m pytest tests/ --cov=pybrkarma

๐Ÿค Contributing

We welcome contributions! Please follow these guidelines:

  1. Fork the repository and create a feature branch
  2. Write tests for new functionality
  3. Follow PEP 8 coding standards
  4. Update documentation as needed
  5. Submit a pull request with a clear description

๐Ÿ“Š Performance

PyBrKarma introduces minimal overhead:

  • Transformation time: ~0.1ms per 1000 lines of code
  • Memory usage: <1MB additional memory per imported module
  • Runtime performance: Identical to standard Python (no runtime overhead)

๐Ÿ› ๏ธ Troubleshooting

Common Issues

Import errors with .pybr files:

# Make sure to enable imports first
from pybrkarma import enable_pybr_imports
enable_pybr_imports()

Syntax errors in transformation:

  • Ensure proper brace matching
  • Check that all control structures use braces
  • Verify Python syntax is otherwise valid

Debug Mode

Enable debug output:

import pybrkarma
pybrkarma.set_debug(True)

๐Ÿ”— Links & Resources

๐Ÿ‘จโ€๐Ÿ’ป Author

Md Abu Salehin

๐Ÿ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Inspired by the need to bridge syntax preferences across programming languages
  • Thanks to the Python community for feedback and contributions
  • Special thanks to all contributors and early adopters

Enjoy writing Python with the familiar comfort of curly braces! ๐Ÿโœจ

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

pybrkarma-1.1.5.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

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

pybrkarma-1.1.5-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file pybrkarma-1.1.5.tar.gz.

File metadata

  • Download URL: pybrkarma-1.1.5.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for pybrkarma-1.1.5.tar.gz
Algorithm Hash digest
SHA256 582764a88d15510ebd141a5d2ed7d0cdc7c6953de5d9a57793a6bcf5e54ac2db
MD5 a0e9dfc60e7f1b2e05a8a6fdae88c829
BLAKE2b-256 ddbc620690543205762abc629574113c88d7b09a7e3fcd759d346d6b78207fcb

See more details on using hashes here.

File details

Details for the file pybrkarma-1.1.5-py3-none-any.whl.

File metadata

  • Download URL: pybrkarma-1.1.5-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for pybrkarma-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 70e8590cfd240828cc1ac9518eb8d1d1f1f262a5e380a829d76e92e069cbfe00
MD5 3bf442dee1c3dc252bbd6bfde99978b8
BLAKE2b-256 dc3b7e066f025883314fe9e8bde883eca34ad178a18e0e2dc8539b8a5d7b261a

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