annotate cp_common_functions.py @ 2:3c3cd68d6d5a draft

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
author bgruening
date Thu, 16 Apr 2020 05:29:02 -0400
parents
children e7273daa5ae2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
1 INDENTATION = " "
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
2 LINE_NUM_MODULES = 4
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
3
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
4 def get_json_value(json_input, keys_path):
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
5 """Returns the value specified in keys_path (using dot notation) or an empty string if the key doesn't exist"""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
6 if not isinstance(json_input, dict):
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
7 return ""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
8 keys = keys_path.split(".")
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
9 try:
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
10 value = json_input[keys[0]]
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
11 for key in keys[1:]:
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
12 value = value[key]
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
13 return value
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
14 except KeyError:
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
15 return ""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
16
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
17
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
18 def concat_conditional(a, b):
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
19 if a == "" or b == "":
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
20 return ""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
21 else:
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
22 return f"{a}_{b}"
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
23
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
24
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
25 def get_total_number_of_modules(pipeline_lines):
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
26 """Gets the number of modules from the header of the previous pipeline"""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
27 number_of_modules = pipeline_lines[LINE_NUM_MODULES].strip().split(':')[1]
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
28 return int(number_of_modules)
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
29
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
30
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
31 def get_pipeline_lines(input_pipeline):
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
32 """Returns a list with the lines in the .cppipe file"""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
33 with open(input_pipeline) as f:
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
34 lines = f.readlines()
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
35 return lines
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
36
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
37
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
38 def update_module_count(pipeline_lines, count):
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
39 """Updates the number of modules in the .cppipe header"""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
40 module_count_entry = pipeline_lines[LINE_NUM_MODULES].strip().split(':')[0]
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
41 pipeline_lines[4] = f"{module_count_entry}:{count}\n"
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
42 return pipeline_lines
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
43
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
44
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
45 def write_pipeline(filename, lines_pipeline):
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
46 """Writes the lines composing the pipeline into a file"""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
47 with open(filename, "w") as f:
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
48 f.writelines(lines_pipeline)
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
49
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
50
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
51 def build_header(module_name, module_number):
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
52 """Creates the first line of a module given the name and module number"""
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
53 result = "|".join([f"{module_name}:[module_num:{module_number}",
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
54 "svn_version:\\'Unknown\\'",
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
55 "variable_revision_number:4",
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
56 "show_window:False",
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
57 "notes:\\x5B\\x5D",
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
58 "batch_state:array(\\x5B\\x5D, dtype=uint8)",
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
59 "enabled:True",
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
60 "wants_pause:False]\n"])
3c3cd68d6d5a "planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 1907942bef43b20edfdbd1d1b5eb1cac3602848b"
bgruening
parents:
diff changeset
61 return result