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
pybrkarma script.pybr

# Run with arguments
pybrkarma script.pybr arg1 arg2

# Alternative syntax
python -m pybrkarma script.pybr

Convert to Standard Python

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

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

# Convert with custom output name
pybrkarma 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
โ””โ”€โ”€ 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.2.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.2-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pybrkarma-1.1.2.tar.gz
Algorithm Hash digest
SHA256 bce9d7f7aa3b196a7923a28af1b92b4e448aafd6eb129130ec408bd706dd6490
MD5 358185004feabbcf1ab105477ae42785
BLAKE2b-256 07df033c2c98848e5ff35fdf68082491d0634190abbe560da9bdd496d4af245b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pybrkarma-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for pybrkarma-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3b448b49eb331d81b717666d9fe3a8c162f4f9d3eb8ab72bb42b153880c21776
MD5 1a2a392ed68bccab2d491f7cf25f426a
BLAKE2b-256 8e16e50243e4d23f846ae620ea489a607c63126b2dc90f49b8a0d129a1cbf04a

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