/Oneliner-Py

Convert python scripts into oneliner expression.

Primary LanguagePythonMIT LicenseMIT

oneliner-py

PyPI - Python Version PyPI - License Coverage Tests

Ruff Code style: black Imports: isort

Convert python scripts into oneliner expression.

Usage

python3 -m oneliner [input file] -o [output file]

Or use python3 -m oneliner -h for help.

Example

InputFile:

import random
y,h=0,2
msg='hello_world'
while y<h*2:
    for x in range(len(msg)+2):
        print(random.choice('/\\'),end='')
    y+=1
    if y==h:
        print('\n %s '%msg)
    else:
        print('')

OutputFile:

[(importlib := __import__('importlib')), (itertools := __import__('itertools')), (random := importlib.import_module('random')), (__ol_assign_qqaleuwbod := (0, 2)), (y := __ol_assign_qqaleuwbod[0]), (h := __ol_assign_qqaleuwbod[1]), (msg := 'hello_world'), [[[print(random.choice('/\\'), end='') for x in range(len(msg) + 2)], y.__iadd__(1) if hasattr(y, '__iadd__') else (y := (y + 1)), print('\n %s ' % msg) if y == h else print('')] for _ in itertools.takewhile(lambda _: y < h * 2, itertools.count())]]

Install

pip install Oneliner-Py

Or

git clone https://github.com/yunline/Oneliner-Py.git
cd ./Oneliner-Py
python3 -m pip install .

Python Version Requirements

This converter requires python 3.10+
The converted scripts should be able to run on python 3.8+

Limitations

Following statements are not able to be converted as oneliner.

  • from-import * (from-import with star)
  • yield and yield from
  • try-except-finally statements
  • raise statement
  • with statement
  • assert statement
  • del statement
  • async-xxx statements
  • match-case statement (new in Python 3.10)
  • type statement (new in 3.12)