Skip to main content

Change Python Source Code Files

Project description

cambio

Change Python Source Code Files

methods

  • remove_comments
  • remove_imports
  • declare_variable
  • replace_class
  • replace_variable_declaration
  • remove_class_instantiation_parameter
  • add_param_to_class_instantiation
  • remove_class_definition

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 Variable 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)

Remove Class Definition

from cambio import remove_class_definition

old_code = '''
class OldCar():
    a = 1
    b = 2

class NewCar():
    a = 1
    b = 2
'''

new_code = remove_class_definition(old_code, "OldCar")
cambio example.py remove-class-definition 'OldCar'

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.4.tar.gz (5.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page