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.
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.
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)def fibonacci(n) {
if n <= 1 {
return n
} else {
return fibonacci(n-1) + fibonacci(n-2)
}
}- π Runtime Transformation: Seamlessly converts
.pybrfiles to valid Python syntax - π¦ Import System Integration: Import
.pybrmodules directly in Python code - π οΈ CLI Tools: Run and convert
.pybrfiles 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
- 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
Install PyBrKarma from PyPI using pip:
pip install pybrkarma- Python 3.6 or higher
- No external dependencies
# Run a .pybr file directly
pybr script.pybr
# Run with arguments
pybr script.pybr arg1 arg2
# Alternative syntax
python -m pybrkarma script.pybr# 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.pyfrom 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()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)pybrkarma/
βββ pybrkarma/
β βββ __init__.py
β βββ __main__.py
βββ setup.py
βββ README.md
βββ LICENSE
βββ CONTRIBUTING.md
βββ CHANGELOG.md
# 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)}")
}# 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()}")# 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")
}
}# 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.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")
}
}
}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=pybrkarmaWe welcome contributions! Please follow these guidelines:
- Fork the repository and create a feature branch
- Write tests for new functionality
- Follow PEP 8 coding standards
- Update documentation as needed
- Submit a pull request with a clear description
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)
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
Enable debug output:
import pybrkarma
pybrkarma.set_debug(True)- π¦ PyPI Package: https://pypi.org/project/PyBrKarma/
- π GitHub Repository: https://github.com/Salehin-07/pybrkarma
- π Documentation: https://pybrkarma.readthedocs.io/
- π Issue Tracker: https://github.com/Salehin-07/pybrkarma/issues
- π¬ Discussions: https://github.com/Salehin-07/pybrkarma/discussions
Md Abu Salehin
- π GitHub: @Salehin-07
- π§ Email: mdabusalehin123@gmail.com
- π Website: https://mdsalehin.netlify.app/
This project is licensed under the MIT License. See the LICENSE file for details.
- 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! πβ¨