Skip to main content

Change Python Source Code Files

Project description

cambio

Change Python Source Code Files

usage

Remove Comments

from cambio import remove_comments

with open("example.py") as f:
    text = f.read()

text = remove_comments(text)

with open("example_without_comments.py", "w") as f:
    f.write(text)
cambio example.py remove-comments

Remove Imports

from cambio import remove_imports

with open("example.py") as f:
    text = f.read()

text = remove_imports(text)

with open("example_without_imports.py", "w") as f:
    f.write(text)
cambio example.py remove-imports

Declare Variable

from cambio import declare_variable
from django.utils.crypt import get_random_string 

with open("settings.py") as f:
    text = f.read()

text = declare_variable(text, "SECRET_KEY", get_random_string())

with open("settings.py", "w") as f:
    f.write(text)
cambio settings.py declare-variable "SECRET_KEY" "$(uuidgen)"

Replace Class

from cambio import replace_class

code = "my_fruit = Apple()"

new_code = replace_class(code, "Apple", "Orange")
print(new_code)
# my_smoothie = Orange()
cambio juicer.py replace-class "Apple" "Orange"

Replace Declaration

from cambio import replace_variable_declaration

code = "HTTP_ORIGIN = 'http://localhost:8000'"
new_code = replace_variable_declaration('HTTP_ORIGIN', 'http://localhost:4200')
print(new_code)
# HTTP_ORIGIN = 'http://localhost:4200'
cambio settings.py replace-declaration 'HTTP_ORIGIN' 'http://localhost:4200'

Remove Class Instantiation Parameter

from cambio import remove_class_instantiation_parameter

old_code = "my_drink = Wine(age=100)"
new_code = remove_class_instantiation_parameter(old_code, 'Wine', 'age')
print(new_code)
# my_drink = Wine()
cambio settings.py

Conditionally Remove Class Instantiation Parameter

from cambio import remove_class_instantiation_parameter

old_code = "bottle_1 = Wine(age=100)\nbottle_2 = Wine(age=1)"
# removes all bottles under 10 years of age
new_code = remove_class_instantiation_parameter(old_code, 'Wine', 'age', lambda age: age < 10)
print(new_code)
# bottle_1 = Wine(age=100)\n
cambio settings.py

Add Parameter to Class Instantiation

from cambio import add_param_to_class_instantiation

old_code = "[Food(type='Cereal')\n, Fruit(type='Cheese')]"

def get_expiration(instantiation):
    text = instantiation['text']
    if 'Cereal' in text:
        return 10
    elif 'Cheese' in text:
        return 1

# age cars by one year
add_param_to_class_instantiation(old_code, "Fruit", "expiration", get_expiration)

Testing

To test the package run

python3 -m unittest cambio.tests.test

Support

Contact the Library Author, Daniel J. Dufour, or post an issue at https://github.com/danieljdufour/cambio/issues

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for cambio, version 0.0.1
Filename, size File type Python version Upload date Hashes
Filename, size cambio-0.0.1.tar.gz (4.9 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page