Skip to content

Commit cc9a955

Browse files
committed
add demo
1 parent a87edba commit cc9a955

File tree

2 files changed

+112
-0
lines changed

2 files changed

+112
-0
lines changed

demo/demo.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
2+
3+
# Sourcery can find all sorts of improvements that make your code more Pythonic
4+
5+
MAGICKS = ['Sourcery', 'Wizardry', 'Card tricks']
6+
7+
# Here we can use Python's built-in 'any' function to streamline the method
8+
def contains_powerful_magic(spells):
9+
for spell in spells:
10+
if is_powerful(spell):
11+
return True
12+
return False
13+
14+
# We chain together improvements to get your code to the best possible
15+
# state with the least effort
16+
17+
# Here we can use a list comprehension and then return the answer straight away
18+
def find_the_best(magicks):
19+
powerful_magic = []
20+
for magic in magicks:
21+
if is_powerful(magic):
22+
powerful_magic.append(magic)
23+
return powerful_magic
24+
25+
# This there are more steps required to put the code in the best state
26+
def find_more(magicks):
27+
powerful_magic = []
28+
for magic in magicks:
29+
if not is_powerful(magic):
30+
continue
31+
powerful_magic.append(magicks)
32+
return powerful_magic
33+
34+
# And here we are combining conditionals
35+
def is_powerful(self, magic):
36+
if magic == 'Sourcery':
37+
return True
38+
elif magic == 'More Sourcery':
39+
return True
40+
else:
41+
return False
42+
43+
# We can even identify duplicate code and extract it!
44+
class ClassWithExample:
45+
def extraction_example():
46+
self.sparkle_slider = Scale(
47+
self.master, from_=1, to=10, orient=HORIZONTAL, label='Sparkle')
48+
self.sparkle_slider.set(DEFAULT_SPARKLE)
49+
self.sparkle_slider.configure(background='black')
50+
51+
self.whoosh_slider = Scale(
52+
self.master, from_=1, to=10, orient=HORIZONTAL, label='Whoosh')
53+
self.whoosh_slider.set(DEFAULT_WHOOSH)
54+
self.whoosh_slider.configure(background='purple')
55+
56+
57+
# We can evem untangle some pretty thorny logic
58+
class GildedRose:
59+
def update_quality(self):
60+
for item in self.items:
61+
if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert":
62+
if item.quality > 0:
63+
if item.name != "Sulfuras, Hand of Ragnaros":
64+
item.quality = item.quality - 1
65+
else:
66+
if item.quality < 50:
67+
item.quality = item.quality + 1
68+
if item.name == "Backstage passes to a TAFKAL80ETC concert":
69+
if item.sell_in < 11:
70+
if item.quality < 50:
71+
item.quality = item.quality + 1
72+
if item.sell_in < 6:
73+
if item.quality < 50:
74+
item.quality = item.quality + 1
75+
if item.name != "Sulfuras, Hand of Ragnaros":
76+
item.sell_in = item.sell_in - 1
77+
if item.sell_in < 0:
78+
if item.name != "Aged Brie":
79+
if item.name != "Backstage passes to a TAFKAL80ETC concert":
80+
if item.quality > 0:
81+
if item.name != "Sulfuras, Hand of Ragnaros":
82+
item.quality = item.quality - 1
83+
else:
84+
item.quality = item.quality - item.quality
85+
else:
86+
if item.quality < 50:
87+
item.quality = item.quality + 1
88+
89+
90+
# And do clone detection and whole project scans!

demo/script.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# First step if possible:
2+
3+
# Do you code in Python?
4+
5+
# Can we use your laptop for the demo?
6+
7+
# Get them to install Sourcery on their laptop
8+
# Sign up for a free token
9+
# Then show them the first refactoring
10+
# Then ask if we can scan their code for refactorings and clones and explore them
11+
12+
# then can scan for refactorings, look for clones, etc.
13+
14+
15+
16+
# Start by manually typing this and saying something along the lines of:
17+
# Sourcery works with you as you type to suggest improvements to your code
18+
# Here's a quick example:
19+
def first_demo(condition):
20+
if condition:
21+
if condition:
22+
print('Brilliant')

0 commit comments

Comments
 (0)