Skip to content
Permalink
Browse files

Ran black on master branch

  • Loading branch information
Griatch committed Dec 16, 2019
1 parent 9879d3a commit 064bf30d3c8a4c7511380ec9a839f09e42e78617
Showing with 6,896 additions and 2,168 deletions.
  1. +17 −17 .travis/mysql_settings.py
  2. +8 −10 .travis/postgresql_settings.py
  3. +92 −46 bin/project_rename.py
  4. +1 −0 bin/windows/evennia_launcher.py
  5. +6 −2 evennia/__init__.py
  6. +75 −23 evennia/accounts/accounts.py
  7. +16 −5 evennia/accounts/admin.py
  8. +20 −6 evennia/accounts/bots.py
  9. +8 −2 evennia/accounts/manager.py
  10. +20 −6 evennia/accounts/migrations/0001_initial.py
  11. +3 −1 evennia/accounts/migrations/0002_move_defaults.py
  12. +7 −2 evennia/accounts/migrations/0003_auto_20150209_2234.py
  13. +8 −3 evennia/accounts/migrations/0004_auto_20150403_2339.py
  14. +5 −2 evennia/accounts/migrations/0008_auto_20190128_1820.py
  15. +3 −1 evennia/accounts/migrations/0009_auto_20191025_0831.py
  16. +8 −2 evennia/accounts/models.py
  17. +37 −12 evennia/accounts/tests.py
  18. +54 −16 evennia/commands/cmdhandler.py
  19. +21 −6 evennia/commands/cmdparser.py
  20. +23 −7 evennia/commands/cmdset.py
  21. +35 −12 evennia/commands/cmdsethandler.py
  22. +32 −10 evennia/commands/command.py
  23. +83 −32 evennia/commands/default/account.py
  24. +24 −10 evennia/commands/default/admin.py
  25. +18 −6 evennia/commands/default/batchprocess.py
  26. +303 −102 evennia/commands/default/building.py
  27. +79 −23 evennia/commands/default/comms.py
  28. +51 −16 evennia/commands/default/general.py
  29. +55 −15 evennia/commands/default/help.py
  30. +32 −11 evennia/commands/default/muxcommand.py
  31. +3 −1 evennia/commands/default/syscommands.py
  32. +86 −26 evennia/commands/default/system.py
  33. +277 −77 evennia/commands/default/tests.py
  34. +20 −11 evennia/commands/default/unloggedin.py
  35. +114 −38 evennia/commands/tests.py
  36. +3 −1 evennia/comms/admin.py
  37. +7 −2 evennia/comms/channelhandler.py
  38. +17 −5 evennia/comms/comms.py
  39. +52 −19 evennia/comms/managers.py
  40. +25 −7 evennia/comms/migrations/0001_initial.py
  41. +3 −1 evennia/comms/migrations/0003_auto_20140917_0756.py
  42. +3 −1 evennia/comms/migrations/0004_auto_20150118_1631.py
  43. +4 −1 evennia/comms/migrations/0006_channeldb_db_object_subscriptions.py
  44. +8 −2 evennia/comms/migrations/0009_auto_20160921_1731.py
  45. +4 −1 evennia/comms/migrations/0011_auto_20170217_2039.py
  46. +3 −1 evennia/comms/migrations/0011_auto_20170606_1731.py
  47. +4 −1 evennia/comms/migrations/0012_merge_20170617_2017.py
  48. +3 −1 evennia/comms/migrations/0013_auto_20170705_1726.py
  49. +3 −1 evennia/comms/migrations/0016_auto_20180925_1735.py
  50. +9 −3 evennia/comms/migrations/0017_auto_20190128_1820.py
  51. +8 −3 evennia/comms/models.py
  52. +36 −12 evennia/contrib/barter.py
  53. +83 −24 evennia/contrib/building_menu.py
  54. +12 −4 evennia/contrib/chargen.py
  55. +37 −13 evennia/contrib/clothing.py
  56. +10 −3 evennia/contrib/color_markups.py
  57. +6 −2 evennia/contrib/custom_gametime.py
  58. +11 −3 evennia/contrib/dice.py
  59. +19 −9 evennia/contrib/email_login.py
  60. +22 −7 evennia/contrib/evscaperoom/commands.py
  61. +24 −7 evennia/contrib/evscaperoom/menu.py
  62. +32 −10 evennia/contrib/evscaperoom/objects.py
  63. +8 −3 evennia/contrib/evscaperoom/room.py
  64. +6 −2 evennia/contrib/evscaperoom/state.py
  65. +3 −1 evennia/contrib/evscaperoom/states/state_001_start.py
  66. +41 −14 evennia/contrib/evscaperoom/tests.py
  67. +15 −4 evennia/contrib/extended_room.py
  68. +25 −10 evennia/contrib/fieldfill.py
  69. +6 −1 evennia/contrib/ingame_python/callbackhandler.py
  70. +56 −17 evennia/contrib/ingame_python/commands.py
  71. +37 −12 evennia/contrib/ingame_python/scripts.py
  72. +125 −35 evennia/contrib/ingame_python/tests.py
  73. +35 −11 evennia/contrib/ingame_python/typeclasses.py
  74. +11 −4 evennia/contrib/ingame_python/utils.py
  75. +27 −10 evennia/contrib/mail.py
  76. +25 −6 evennia/contrib/mapbuilder.py
  77. +24 −8 evennia/contrib/menu_login.py
  78. +10 −3 evennia/contrib/multidescer.py
  79. +46 −16 evennia/contrib/puzzles.py
  80. +6 −2 evennia/contrib/random_string_generator.py
  81. +23 −7 evennia/contrib/rplanguage.py
  82. +76 −23 evennia/contrib/rpsystem.py
  83. +12 −4 evennia/contrib/security/auditing/server.py
  84. +33 −9 evennia/contrib/security/auditing/tests.py
  85. +13 −3 evennia/contrib/simpledoor.py
  86. +6 −1 evennia/contrib/slow_exit.py
  87. +8 −2 evennia/contrib/talking_npc.py
  88. +621 −175 evennia/contrib/tests.py
  89. +14 −4 evennia/contrib/tree_select.py
  90. +42 −14 evennia/contrib/turnbattle/tb_basic.py
  91. +57 −18 evennia/contrib/turnbattle/tb_equip.py
  92. +82 −27 evennia/contrib/turnbattle/tb_items.py
  93. +64 −20 evennia/contrib/turnbattle/tb_magic.py
  94. +68 −21 evennia/contrib/turnbattle/tb_range.py
  95. +1 −3 evennia/contrib/tutorial_examples/bodyfunctions.py
  96. +5 −2 evennia/contrib/tutorial_examples/cmdset_red_button.py
  97. +3 −1 evennia/contrib/tutorial_examples/red_button.py
  98. +2 −1 evennia/contrib/tutorial_examples/red_button_scripts.py
  99. +14 −5 evennia/contrib/tutorial_examples/tests.py
  100. +11 −4 evennia/contrib/tutorial_world/mob.py
  101. +65 −31 evennia/contrib/tutorial_world/objects.py
  102. +26 −8 evennia/contrib/tutorial_world/rooms.py
  103. +5 −1 evennia/contrib/unixcommand.py
  104. +9 −3 evennia/contrib/wilderness.py
  105. +8 −2 evennia/help/admin.py
  106. +3 −1 evennia/help/manager.py
  107. +11 −3 evennia/help/migrations/0001_initial.py
  108. +7 −2 evennia/help/migrations/0003_auto_20190128_1820.py
  109. +17 −5 evennia/help/models.py
  110. +11 −4 evennia/locks/lockfuncs.py
  111. +58 −19 evennia/locks/lockhandler.py
  112. +18 −6 evennia/locks/tests.py
  113. +3 −1 evennia/objects/admin.py
  114. +76 −27 evennia/objects/manager.py
  115. +11 −3 evennia/objects/migrations/0001_initial.py
  116. +12 −3 evennia/objects/migrations/0003_defaultcharacter_defaultexit_defaultobject_defaultroom.py
  117. +3 −1 evennia/objects/migrations/0004_auto_20150118_1622.py
  118. +21 −5 evennia/objects/models.py
  119. +93 −30 evennia/objects/objects.py
  120. +18 −5 evennia/objects/tests.py
  121. +239 −71 evennia/prototypes/menus.py
  122. +6 −2 evennia/prototypes/protfuncs.py
  123. +100 −27 evennia/prototypes/prototypes.py
  124. +55 −17 evennia/prototypes/spawner.py
  125. +256 −77 evennia/prototypes/tests.py
  126. +9 −3 evennia/scripts/manager.py
  127. +25 −7 evennia/scripts/migrations/0001_initial.py
  128. +6 −2 evennia/scripts/migrations/0002_auto_20150118_1625.py
  129. +16 −4 ...essions_defaultscript_donothing_scriptbase_store_validatechannelhandler_validateidmappercache_.py
  130. +3 −1 evennia/scripts/migrations/0012_auto_20190128_1820.py
  131. +9 −3 evennia/scripts/models.py
  132. +19 −4 evennia/scripts/monitorhandler.py
  133. +6 −2 evennia/scripts/scripthandler.py
  134. +26 −7 evennia/scripts/scripts.py
  135. +27 −7 evennia/scripts/tickerhandler.py
  136. +6 −4 evennia/server/amp_client.py
  137. +24 −9 evennia/server/connection_wizard.py
  138. +13 −5 evennia/server/deprecations.py
  139. +108 −28 evennia/server/evennia_launcher.py
  140. +27 −7 evennia/server/evennia_runner.py
  141. +3 −1 evennia/server/game_index_client/client.py
  142. +2 −1 evennia/server/game_index_client/service.py
  143. +10 −2 evennia/server/initial_setup.py
  144. +8 −3 evennia/server/inputfuncs.py
  145. +4 −1 evennia/server/migrations/0001_initial.py
  146. +3 −1 evennia/server/migrations/0002_auto_20190128_2311.py
  147. +16 −5 evennia/server/portal/amp.py
  148. +42 −12 evennia/server/portal/amp_server.py
  149. +8 −2 evennia/server/portal/grapevine.py
  150. +20 −6 evennia/server/portal/irc.py
  151. +13 −3 evennia/server/portal/mssp.py
  152. +9 −3 evennia/server/portal/naws.py
  153. +34 −11 evennia/server/portal/portal.py
  154. +10 −2 evennia/server/portal/portalsessionhandler.py
  155. +3 −1 evennia/server/portal/ssh.py
  156. +3 −1 evennia/server/portal/ssl.py
  157. +3 −1 evennia/server/portal/suppress_ga.py
  158. +19 −7 evennia/server/portal/telnet.py
  159. +7 −3 evennia/server/portal/telnet_oob.py
  160. +3 −1 evennia/server/portal/telnet_ssl.py
  161. +15 −4 evennia/server/portal/tests.py
  162. +3 −1 evennia/server/portal/ttype.py
  163. +3 −1 evennia/server/portal/webclient_ajax.py
  164. +4 −1 evennia/server/profiling/dummyrunner.py
  165. +12 −2 evennia/server/profiling/dummyrunner_settings.py
  166. +10 −3 evennia/server/profiling/tests.py
  167. +27 −9 evennia/server/server.py
  168. +11 −3 evennia/server/serversession.py
  169. +3 −1 evennia/server/session.py
  170. +43 −12 evennia/server/sessionhandler.py
  171. +6 −2 evennia/server/tests/test_amp_connection.py
  172. +3 −1 evennia/server/tests/test_launcher.py
  173. +9 −3 evennia/server/tests/test_misc.py
  174. +18 −6 evennia/server/tests/test_server.py
  175. +3 −1 evennia/server/throttle.py
  176. +2 −1 evennia/server/validators.py
  177. +4 −1 evennia/server/webserver.py
  178. +28 −7 evennia/settings_default.py
  179. +26 −7 evennia/typeclasses/admin.py
  180. +79 −26 evennia/typeclasses/attributes.py
  181. +49 −20 evennia/typeclasses/managers.py
  182. +15 −4 evennia/typeclasses/migrations/0001_initial.py
  183. +12 −3 ...tcharacter_defaultexit_defaultguest_defaultobject_defaultplayer_defaultroom_defaultscript_dono.py
  184. +6 −1 evennia/typeclasses/migrations/0005_auto_20160625_1812.py
  185. +4 −2 evennia/typeclasses/migrations/0007_tag_migrations_may_be_slow.py
  186. +7 −2 evennia/typeclasses/migrations/0008_lock_and_perm_rename.py
  187. +43 −13 evennia/typeclasses/migrations/0009_rename_player_cmdsets_typeclasses.py
  188. +6 −2 evennia/typeclasses/migrations/0010_delete_old_player_tables.py
  189. +31 −9 evennia/typeclasses/models.py
  190. +38 −11 evennia/typeclasses/tags.py
  191. +24 −9 evennia/typeclasses/tests.py
  192. +31 −8 evennia/utils/ansi.py
  193. +6 −2 evennia/utils/batchprocessors.py
  194. +2 −1 evennia/utils/containers.py
  195. +11 −3 evennia/utils/create.py
  196. +29 −8 evennia/utils/dbserialize.py
  197. +42 −14 evennia/utils/eveditor.py
  198. +29 −9 evennia/utils/evform.py
  199. +132 −41 evennia/utils/evmenu.py
  200. +20 −3 evennia/utils/evmore.py
  201. +80 −25 evennia/utils/evtable.py
  202. +13 −3 evennia/utils/gametime.py
  203. +43 −15 evennia/utils/idmapper/models.py
  204. +15 −5 evennia/utils/inlinefuncs.py
  205. +14 −6 evennia/utils/logger.py
  206. +6 −2 evennia/utils/optionclasses.py
  207. +6 −2 evennia/utils/optionhandler.py
  208. +3 −1 evennia/utils/search.py
  209. +6 −1 evennia/utils/test_resources.py
  210. +23 −7 evennia/utils/tests/test_batchprocessors.py
  211. +105 −31 evennia/utils/tests/test_eveditor.py
  212. +12 −4 evennia/utils/tests/test_evmenu.py
  213. +62 −8 evennia/utils/tests/test_tagparsing.py
  214. +11 −3 evennia/utils/tests/test_text2html.py
  215. +17 −6 evennia/utils/tests/test_utils.py
  216. +9 −3 evennia/utils/tests/test_validatorfuncs.py
  217. +32 −10 evennia/utils/text2html.py
  218. +68 −20 evennia/utils/utils.py
  219. +15 −5 evennia/utils/validatorfuncs.py
  220. +7 −2 evennia/web/urls.py
  221. +12 −3 evennia/web/utils/tests.py
  222. +2 −1 evennia/web/website/forms.py
  223. +9 −3 evennia/web/website/tests.py
  224. +40 −13 evennia/web/website/views.py
  225. +12 −12 setup.py
@@ -39,25 +39,25 @@
# Testing database types

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'evennia',
'USER': 'evennia',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '', # use default port
'OPTIONS': {
'charset': 'utf8mb4',
'init_command': 'set collation_connection=utf8mb4_unicode_ci'
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "evennia",
"USER": "evennia",
"PASSWORD": "password",
"HOST": "localhost",
"PORT": "", # use default port
"OPTIONS": {
"charset": "utf8mb4",
"init_command": "set collation_connection=utf8mb4_unicode_ci",
},
'TEST': {
'NAME': 'default',
'OPTIONS': {
'charset': 'utf8mb4',
"TEST": {
"NAME": "default",
"OPTIONS": {
"charset": "utf8mb4",
# 'init_command': 'set collation_connection=utf8mb4_unicode_ci'
'init_command': "SET NAMES 'utf8mb4'"
}
}
"init_command": "SET NAMES 'utf8mb4'",
},
},
}
}

@@ -39,16 +39,14 @@
# Testing database types

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'evennia',
'USER': 'evennia',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '', # use default
'TEST': {
'NAME': 'default'
}
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": "evennia",
"USER": "evennia",
"PASSWORD": "password",
"HOST": "localhost",
"PORT": "", # use default
"TEST": {"NAME": "default"},
}
}

@@ -23,7 +23,7 @@
FAKE_MODE = False

# if these words are longer than output word, retain given case
CASE_WORD_EXCEPTIONS = ('an', )
CASE_WORD_EXCEPTIONS = ("an",)

_HELP_TEXT = """This program interactively renames words in all files of your project. It's
currently renaming {sources} to {targets}.
@@ -80,6 +80,7 @@ def _case_sensitive_replace(string, old, new):
`old` has been replaced with `new`, retaining case.
"""

def repl(match):
current = match.group()
# treat multi-word sentences word-by-word
@@ -99,15 +100,21 @@ def repl(match):
all_upper = False
# special cases - keep remaing case)
if new_word.lower() in CASE_WORD_EXCEPTIONS:
result.append(new_word[ind + 1:])
result.append(new_word[ind + 1 :])
# append any remaining characters from new
elif all_upper:
result.append(new_word[ind + 1:].upper())
result.append(new_word[ind + 1 :].upper())
else:
result.append(new_word[ind + 1:].lower())
result.append(new_word[ind + 1 :].lower())
out.append("".join(result))
# if we have more new words than old ones, just add them verbatim
out.extend([new_word for ind, new_word in enumerate(new_words) if ind >= len(old_words)])
out.extend(
[
new_word
for ind, new_word in enumerate(new_words)
if ind >= len(old_words)
]
)
return " ".join(out)

regex = re.compile(re.escape(old), re.I)
@@ -147,16 +154,20 @@ def rename_in_tree(path, in_list, out_list, excl_list, fileend_list, is_interact
print("%s skipped (excluded)." % full_path)
continue

if not fileend_list or any(file.endswith(ending) for ending in fileend_list):
if not fileend_list or any(
file.endswith(ending) for ending in fileend_list
):
rename_in_file(full_path, in_list, out_list, is_interactive)

# rename file - always ask
new_file = file
for src, dst in repl_mapping:
new_file = _case_sensitive_replace(new_file, src, dst)
if new_file != file:
inp = input(_green("Rename %s\n -> %s\n Y/[N]? > " % (file, new_file)))
if inp.upper() == 'Y':
inp = input(
_green("Rename %s\n -> %s\n Y/[N]? > " % (file, new_file))
)
if inp.upper() == "Y":
new_full_path = os.path.join(root, new_file)
try:
os.rename(full_path, new_full_path)
@@ -171,8 +182,10 @@ def rename_in_tree(path, in_list, out_list, excl_list, fileend_list, is_interact
for src, dst in repl_mapping:
new_root = _case_sensitive_replace(new_root, src, dst)
if new_root != root:
inp = input(_green("Dir Rename %s\n -> %s\n Y/[N]? > " % (root, new_root)))
if inp.upper() == 'Y':
inp = input(
_green("Dir Rename %s\n -> %s\n Y/[N]? > " % (root, new_root))
)
if inp.upper() == "Y":
try:
os.rename(root, new_root)
except OSError as err:
@@ -201,7 +214,7 @@ def rename_in_file(path, in_list, out_list, is_interactive):
print("%s is a directory. You should use the --recursive option." % path)
sys.exit()

with open(path, 'r') as fil:
with open(path, "r") as fil:
org_text = fil.read()

repl_mapping = list(zip(in_list, out_list))
@@ -215,7 +228,7 @@ def rename_in_file(path, in_list, out_list, is_interactive):
if FAKE_MODE:
print(" ... Saved changes to %s. (faked)" % path)
else:
with open(path, 'w') as fil:
with open(path, "w") as fil:
fil.write(new_text)
print(" ... Saved changes to %s." % path)
else:
@@ -239,18 +252,24 @@ def rename_in_file(path, in_list, out_list, is_interactive):

while True:

for iline, renamed_line in sorted(list(renamed.items()), key=lambda tup: tup[0]):
for iline, renamed_line in sorted(
list(renamed.items()), key=lambda tup: tup[0]
):
print("%3i orig: %s" % (iline + 1, org_lines[iline]))
print(" new : %s" % (_yellow(renamed_line)))
print(_green("%s (%i lines changed)" % (path, len(renamed))))

ret = input(_green("Choose: "
"[q]uit, "
"[h]elp, "
"[s]kip file, "
"[i]gnore lines, "
"[c]lear ignores, "
"[a]ccept/save file: ".lower()))
ret = input(
_green(
"Choose: "
"[q]uit, "
"[h]elp, "
"[s]kip file, "
"[i]gnore lines, "
"[c]lear ignores, "
"[a]ccept/save file: ".lower()
)
)

if ret == "s":
# skip file entirely
@@ -267,7 +286,7 @@ def rename_in_file(path, in_list, out_list, is_interactive):
if FAKE_MODE:
print(" ... Saved file %s (faked)" % path)
return
with open(path, 'w') as fil:
with open(path, "w") as fil:
fil.writelines("\n".join(org_lines))
print(" ... Saved file %s" % path)
return
@@ -278,7 +297,11 @@ def rename_in_file(path, in_list, out_list, is_interactive):
input(_HELP_TEXT.format(sources=in_list, targets=out_list))
elif ret.startswith("i"):
# ignore one or more lines
ignores = [int(ind) - 1 for ind in ret[1:].split(',') if ind.strip().isdigit()]
ignores = [
int(ind) - 1
for ind in ret[1:].split(",")
if ind.strip().isdigit()
]
if not ignores:
input("Ignore example: i 2,7,34,133\n (return to continue)")
continue
@@ -291,36 +314,57 @@ def rename_in_file(path, in_list, out_list, is_interactive):
import argparse

parser = argparse.ArgumentParser(
description="Rename text in a source tree, or a single file")

parser.add_argument('-i', '--input', action='append',
help="Source word to rename (quote around multiple words)")
parser.add_argument('-o', '--output', action='append',
help="Word to rename a matching src-word to")
parser.add_argument('-x', '--exc', action='append',
help="File path patterns to exclude")
parser.add_argument('-a', '--auto', action='store_true',
help="Automatic mode, don't ask to rename")
parser.add_argument('-r', '--recursive', action='store_true',
help="Recurse subdirs")
parser.add_argument('-f', '--fileending', action='append',
help="Change which file endings to allow (default .py and .html)")
parser.add_argument('--nocolor', action='store_true',
help="Turn off in-program color")
parser.add_argument('--fake', action='store_true',
help="Simulate run but don't actually save")
parser.add_argument('path',
help="File or directory in which to rename text")
description="Rename text in a source tree, or a single file"
)

parser.add_argument(
"-i",
"--input",
action="append",
help="Source word to rename (quote around multiple words)",
)
parser.add_argument(
"-o", "--output", action="append", help="Word to rename a matching src-word to"
)
parser.add_argument(
"-x", "--exc", action="append", help="File path patterns to exclude"
)
parser.add_argument(
"-a", "--auto", action="store_true", help="Automatic mode, don't ask to rename"
)
parser.add_argument(
"-r", "--recursive", action="store_true", help="Recurse subdirs"
)
parser.add_argument(
"-f",
"--fileending",
action="append",
help="Change which file endings to allow (default .py and .html)",
)
parser.add_argument(
"--nocolor", action="store_true", help="Turn off in-program color"
)
parser.add_argument(
"--fake", action="store_true", help="Simulate run but don't actually save"
)
parser.add_argument("path", help="File or directory in which to rename text")

args = parser.parse_args()

in_list, out_list, exc_list, fileend_list = args.input, args.output, args.exc, args.fileending
in_list, out_list, exc_list, fileend_list = (
args.input,
args.output,
args.exc,
args.fileending,
)

if not (in_list and out_list):
print('At least one source- and destination word must be given.')
print("At least one source- and destination word must be given.")
sys.exit()
if len(in_list) != len(out_list):
print('Number of sources must be identical to the number of destination arguments.')
print(
"Number of sources must be identical to the number of destination arguments."
)
sys.exit()

exc_list = exc_list or []
@@ -332,6 +376,8 @@ def rename_in_file(path, in_list, out_list, is_interactive):
FAKE_MODE = args.fake

if is_recursive:
rename_in_tree(args.path, in_list, out_list, exc_list, fileend_list, is_interactive)
rename_in_tree(
args.path, in_list, out_list, exc_list, fileend_list, is_interactive
)
else:
rename_in_file(args.path, in_list, out_list, is_interactive)
@@ -14,4 +14,5 @@
sys.path.insert(0, os.path.join(sys.prefix, "Lib", "site-packages"))

from evennia.server.evennia_launcher import main

main()
@@ -142,7 +142,9 @@ def _create_version():
print(err)
try:
rev = (
check_output("git rev-parse --short HEAD", shell=True, cwd=root, stderr=STDOUT)
check_output(
"git rev-parse --short HEAD", shell=True, cwd=root, stderr=STDOUT
)
.strip()
.decode()
)
@@ -261,7 +263,9 @@ class _EvContainer(object):

def _help(self):
"Returns list of contents"
names = [name for name in self.__class__.__dict__ if not name.startswith("_")]
names = [
name for name in self.__class__.__dict__ if not name.startswith("_")
]
names += [name for name in self.__dict__ if not name.startswith("_")]
print(self.__doc__ + "-" * 60 + "\n" + ", ".join(names))

0 comments on commit 064bf30

Please sign in to comment.
You can’t perform that action at this time.