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):
food_type = instantiation.params.get('type', None)
if food_type === 'Cereal':
return 10
elif food_type === 'Cheese':
return 1
# age cars by one year
add_param_to_class_instantiation(old_code, "Car", "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.
Source Distribution
cambio-0.0.0.tar.gz
(4.3 kB
view hashes)