Skip to main content

Nginr - Python Alt syntax with fn keyword and .xg files

Project description

Nginr

Nginr is a Python syntax alternative that allows using the fn keyword instead of def. Nginr is not a new programming language, but rather a preprocessor that converts code with the .xg extension into standard Python code before execution.

Installation

Using pip (easiest way)

pip install nginr

Installation from source

  1. Clone this repository:
git clone https://github.com/nginrsw/nginr.git
cd nginr
  1. Install in development mode:
pip install -e .

Requirements

  • Python 3.6 or newer
  • pip (Python package manager)

Basic Usage

  1. Create a file with .xg extension, for example hello.xg:
# hello.xg
fn hello(name):
    print(f"Hello, {name}!")

hello("World")
  1. Run the file with the command:
nginr hello.xg

How It Works

  1. Nginr reads files with .xg extension
  2. Performs simple preprocessing (replaces fn with def)
  3. Executes the resulting Python code

More Examples

Function with Parameters

fn add(a, b):
    return a + b

result = add(5, 3)
print(f"5 + 3 = {result}")

Loops and Conditionals

fn factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

for i in range(1, 6):
    print(f"{i}! = {factorial(i)}")

Features

  • Full Python Compatibility: Use any Python library or framework
  • Alternative Syntax: fn keyword as an alternative to def
  • Seamless Integration: Works with existing Python code and tools
  • Lightweight: Simple preprocessing with minimal overhead
  • Extensible: Supports all Python 3.7+ features and libraries

Python Library Compatibility

Nginr is 100% compatible with Python libraries. You can use any Python package in your .xg files:

# Using external libraries
fn calculate_stats(data):
    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame(data)
    return {
        'mean': np.mean(df.values),
        'std': np.std(df.values),
        'sum': np.sum(df.values)
    }

# Using standard library
fn get_weather(city):
    import json
    from urllib.request import urlopen
    
    with urlopen(f'https://weather.example.com/api?city={city}') as response:
        return json.load(response)

Installing Dependencies

You can install Python packages using pip as usual:

# Install packages for your Nginr project
pip install numpy pandas requests

Limitations

  • Only performs simple preprocessing (replaces fn with def)
  • No additional features beyond standard Python
  • Lacks full programming language features like type systems or custom compilers
  • Debugging shows the generated Python code, not the original .xg source

Contributing

Contributions are welcome! If you'd like to contribute, please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Lisensi

MIT

Editor Support

Visual Studio Code

  1. Make sure you have the Pyright extension installed
  2. Add the following configuration to .vscode/settings.json:
{
    "files.associations": {
        "*.xg": "python"
    },
    "python.analysis.extraPaths": ["."],
    "python.analysis.typeCheckingMode": "basic"
}

Pyright Support

For better LSP support, use the Nginr Pyright plugin:

  1. Install the plugin:
pip install git+https://github.com/nginrsw/nginr.git#subdirectory=pyright_plugin_nginr
  1. Buat file pyrightconfig.json di root project:
{
    "plugins": ["nginr_pyright"],
    "include": ["**/*.py", "**/*.xg"],
    "exclude": ["**/node_modules", "**/__pycache__"]
}

Support

If you encounter any issues or have questions, please open a new issue in the repository.

License

This project is licensed under the MIT License.

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

nginr-0.1.2.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

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

nginr-0.1.2-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file nginr-0.1.2.tar.gz.

File metadata

  • Download URL: nginr-0.1.2.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for nginr-0.1.2.tar.gz
Algorithm Hash digest
SHA256 19f57e07218a2ad4563fa357291e0427aded89d12aca82802f5f30a3921a026e
MD5 8ba16c748327f3dd95a54b64b3004a3a
BLAKE2b-256 6c54f8c52875e6a7bddd65cfe3ec73ad4dca3090451c3c458fee0c1050c233b2

See more details on using hashes here.

File details

Details for the file nginr-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: nginr-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for nginr-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a3389cd4e67ded05da6a29d111d0966cafe15214fe9baf76a0c44589e43ac7d0
MD5 1c6aaaa62f4605e885f7a05a49e041b6
BLAKE2b-256 54916f7aa035ad9d384ed94fe3d01422cc12b0636d75155d441e6e43fdaea0d5

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