zigzag-dse 2.2.0__tar.gz → 2.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. {zigzag-dse-2.2.0/zigzag_dse.egg-info → zigzag-dse-2.2.1}/PKG-INFO +1 -1
  2. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/pyproject.toml +2 -2
  3. zigzag-dse-2.2.1/zigzag/__init__.py +1 -0
  4. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/cacti/cacti-master/cacti_top.py +6 -4
  5. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/cacti/cacti_parser.py +19 -15
  6. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/memory_instance.py +1 -1
  7. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1/zigzag_dse.egg-info}/PKG-INFO +1 -1
  8. zigzag-dse-2.2.0/zigzag/__init__.py +0 -1
  9. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/LICENSE +0 -0
  10. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/MANIFEST.in +0 -0
  11. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/README.md +0 -0
  12. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/docs/source/conf.py +0 -0
  13. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Ascend_like.py +0 -0
  14. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Ascend_like_DF.py +0 -0
  15. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Edge_TPU_like.py +0 -0
  16. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Edge_TPU_like_DF.py +0 -0
  17. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Eyeriss_like.py +0 -0
  18. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Meta_prototype.py +0 -0
  19. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Meta_prototype_DF.py +0 -0
  20. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/TPU_like.py +0 -0
  21. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/TPU_like_DF.py +0 -0
  22. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Tesla_NPU_like.py +0 -0
  23. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/hardware/Tesla_NPU_like_DF.py +0 -0
  24. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/mapping/alexnet_on_eyeriss_like.py +0 -0
  25. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/mapping/default.py +0 -0
  26. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/inputs/examples/workloads/resnet18.py +0 -0
  27. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/setup.cfg +0 -0
  28. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/__main__.py +0 -0
  29. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/api.py +0 -0
  30. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/__init__.py +0 -0
  31. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/cacti/cacti-master/cacti_config_creator.py +0 -0
  32. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/cost_model/cost_model.py +0 -0
  33. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/accelerator.py +0 -0
  34. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/adder_hierarchy.py +0 -0
  35. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/core.py +0 -0
  36. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/dimension.py +0 -0
  37. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/memory_hierarchy.py +0 -0
  38. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/memory_level.py +0 -0
  39. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/operand_spatial_sharing.py +0 -0
  40. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/operational_array.py +0 -0
  41. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/operational_unit.py +0 -0
  42. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/hardware/architecture/runtime_mode.py +0 -0
  43. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/io/accelerator/parser.py +0 -0
  44. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/io/onnx/conv.py +0 -0
  45. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/io/onnx/default.py +0 -0
  46. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/io/onnx/gemm.py +0 -0
  47. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/io/onnx/matmul.py +0 -0
  48. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/io/onnx/model.py +0 -0
  49. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/io/onnx/parser.py +0 -0
  50. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/io/onnx/utils.py +0 -0
  51. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/mapping/__init__.py +0 -0
  52. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/mapping/combined_mapping.py +0 -0
  53. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/mapping/loop.py +0 -0
  54. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/mapping/mapping_assist_funcs.py +0 -0
  55. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/mapping/memory/data_layout.py +0 -0
  56. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/mapping/spatial/spatial_mapping.py +0 -0
  57. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/mapping/temporal/temporal_loop.py +0 -0
  58. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/mapping/temporal/temporal_mapping.py +0 -0
  59. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/opt/spatial/generator.py +0 -0
  60. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/opt/temporal/loma/engine.py +0 -0
  61. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/opt/temporal/loma/loop.py +0 -0
  62. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/opt/temporal/loma/memory_allocator.py +0 -0
  63. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/opt/temporal/loma/multipermute.py +0 -0
  64. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/opt/temporal/salsa/engine.py +0 -0
  65. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/opt/temporal/salsa/state.py +0 -0
  66. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/CostModelStage.py +0 -0
  67. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/DumpStage.py +0 -0
  68. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/GeneralParameterIteratorStage.py +0 -0
  69. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/LomaStage.py +0 -0
  70. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/MainInputParserStages.py +0 -0
  71. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/ONNXModelParserStage.py +0 -0
  72. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/PlotTemporalMappingsStage.py +0 -0
  73. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/ReduceStages.py +0 -0
  74. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/RunOptStages.py +0 -0
  75. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/SalsaStage.py +0 -0
  76. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/SaveStage.py +0 -0
  77. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/SpatialMappingConversionStage.py +0 -0
  78. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/SpatialMappingGeneratorStage.py +0 -0
  79. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/Stage.py +0 -0
  80. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/TemporalOrderingConversionStage.py +0 -0
  81. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/WorkloadStage.py +0 -0
  82. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/stages/__init__.py +0 -0
  83. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/workload/dnn_workload.py +0 -0
  84. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/workload/dummy_node.py +0 -0
  85. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/workload/layer_node.py +0 -0
  86. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/workload/onnx_workload.py +0 -0
  87. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/classes/workload/test_layer_node.py +0 -0
  88. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/hardware/Ascend_like.py +0 -0
  89. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/hardware/Edge_TPU_like.py +0 -0
  90. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/hardware/Eyeriss_like.py +0 -0
  91. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/hardware/Meta_prototype.py +0 -0
  92. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/hardware/TPU_like.py +0 -0
  93. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/hardware/Tesla_NPU_like.py +0 -0
  94. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/mapping/alexnet_on_tpu_like.py +0 -0
  95. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/mapping/assend_like.py +0 -0
  96. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/mapping/default.py +0 -0
  97. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/mapping/edge_tpu_like.py +0 -0
  98. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/mapping/meta_prototype_like.py +0 -0
  99. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/mapping/tesla_npu_like.py +0 -0
  100. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/mapping/test.py +0 -0
  101. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/mapping/tpu_like.py +0 -0
  102. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/workload/alexnet.onnx +0 -0
  103. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/workload/mobilenetv2.onnx +0 -0
  104. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/workload/resnet18.py +0 -0
  105. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/inputs/examples/workload/test.py +0 -0
  106. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/utils.py +0 -0
  107. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/visualization/graph/memory_hierarchy.py +0 -0
  108. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/visualization/graph/workload.py +0 -0
  109. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/visualization/results/plot_cme.py +0 -0
  110. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag/visualization/results/print_mapping.py +0 -0
  111. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag_dse.egg-info/SOURCES.txt +0 -0
  112. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag_dse.egg-info/dependency_links.txt +0 -0
  113. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag_dse.egg-info/entry_points.txt +0 -0
  114. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag_dse.egg-info/requires.txt +0 -0
  115. {zigzag-dse-2.2.0 → zigzag-dse-2.2.1}/zigzag_dse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zigzag-dse
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: ZigZag - Deep Learning Hardware Design Space Exploration
5
5
  Author-email: Arne Symons <arne.symons@kuleuven.be>, Linyan Mei <linyan.mei@kuleuven.be>
6
6
  License: BSD 3-Clause License
@@ -11,7 +11,7 @@ namespaces = true # true by default
11
11
 
12
12
  [project]
13
13
  name = "zigzag-dse"
14
- version = "2.2.0"
14
+ version = "2.2.1"
15
15
  description = "ZigZag - Deep Learning Hardware Design Space Exploration"
16
16
  readme = "README.md"
17
17
  authors = [{ name = "Arne Symons", email = "arne.symons@kuleuven.be" }, { name = "Linyan Mei", email = "linyan.mei@kuleuven.be" }]
@@ -44,7 +44,7 @@ Homepage = "https://github.com/ZigZag-Project/zigzag"
44
44
  realpython = "zigzag.__main__:main"
45
45
 
46
46
  [tool.bumpver]
47
- current_version = "2.2.0"
47
+ current_version = "2.2.1"
48
48
  version_pattern = "MAJOR.MINOR.PATCH"
49
49
  commit_message = "bump version {old_version} -> {new_version}"
50
50
  commit = true
@@ -0,0 +1 @@
1
+ __version__ = "2.2.1"
@@ -11,6 +11,7 @@ parser.add_argument('--ex_rd_port')
11
11
  parser.add_argument('--ex_wr_port')
12
12
  parser.add_argument('--rd_wr_port')
13
13
  parser.add_argument('--bank_count')
14
+ parser.add_argument('--mem_pool_path')
14
15
  args = parser.parse_args()
15
16
 
16
17
  # python cacti_top.py --cache_size 2056 --IO_bus_width 64 --ex_rd_port 1 --ex_wr_port 1 --rd_wr_port 0 --bank_count 1
@@ -51,6 +52,7 @@ ex_rd_port = args.ex_rd_port
51
52
  ex_wr_port = args.ex_wr_port
52
53
  rd_wr_port = args.rd_wr_port
53
54
  bank_count = args.bank_count
55
+ mem_pool_path = args.mem_pool_path
54
56
 
55
57
  # print(mem_type, cache_size, IO_bus_width, ex_rd_port, ex_wr_port, rd_wr_port, bank_count)
56
58
  technology = 0.090
@@ -101,7 +103,7 @@ for i in range(len(result[' Capacity (bytes)'])):
101
103
  'bank_count': 1,
102
104
  'memory_type': mem_type
103
105
  }}
104
- with open('./example_mem_pool.yaml', 'a+') as file:
105
- yaml.dump(new_result, file)
106
- file.write('\n')
107
- file.close()
106
+ with open(mem_pool_path, 'a+') as fp:
107
+ yaml.dump(new_result, fp)
108
+ fp.write('\n')
109
+
@@ -5,15 +5,18 @@ import subprocess
5
5
  import logging
6
6
  logger = logging.getLogger(__name__)
7
7
 
8
- CACTI_PATH = './zigzag/classes/cacti'
9
-
10
8
  class CactiParser:
9
+
10
+ cacti_path = os.path.dirname(os.path.realpath(__file__))
11
+ MEM_POOL_PATH = f'{cacti_path}/cacti-master/example_mem_pool.yaml' # Path to cached cacti simulated memories
12
+ CACTI_TOP_PATH = f'{cacti_path}/cacti-master/cacti_top.py' # Path to cacti python script to extract costs
13
+
11
14
  def __init__(self):
12
15
  pass
13
16
 
14
- def item_exists(self, mem_type, size, r_bw, r_port, w_port, rw_port, bank):
15
- memory_pool_file = open(f'{CACTI_PATH}/cacti-master/example_mem_pool.yaml')
16
- memory_pool = yaml.full_load(memory_pool_file)
17
+ def item_exists(self, mem_type, size, r_bw, r_port, w_port, rw_port, bank, mem_pool_path=MEM_POOL_PATH):
18
+ with open(mem_pool_path, 'r') as fp:
19
+ memory_pool = yaml.full_load(fp)
17
20
 
18
21
  if memory_pool != None:
19
22
  for instance in memory_pool:
@@ -33,23 +36,24 @@ class CactiParser:
33
36
 
34
37
  return False
35
38
 
36
- def create_item(self, mem_type, size, r_bw, r_port, w_port, rw_port, bank):
39
+ def create_item(self, mem_type, size, r_bw, r_port, w_port, rw_port, bank, mem_pool_path=MEM_POOL_PATH, cacti_top_path=CACTI_TOP_PATH):
37
40
  # print("No match in Cacti memory pool found!", size, r_bw, r_port, w_port, rw_port, bank)
38
- os.chdir(f'{CACTI_PATH}/cacti-master/')
41
+ # os.chdir(f'{CACTI_PATH}/cacti-master/')
39
42
 
40
- p = subprocess.call(['python', 'cacti_top.py',
43
+ p = subprocess.call(['python', cacti_top_path,
41
44
  '--mem_type', str(mem_type),
42
45
  '--cache_size', str(int(size/8)),
43
46
  '--IO_bus_width', str(r_bw),
44
47
  '--ex_rd_port', str(r_port),
45
48
  '--ex_wr_port', str(w_port),
46
49
  '--rd_wr_port', str(rw_port),
47
- '--bank_count', str(bank)])
50
+ '--bank_count', str(bank),
51
+ '--mem_pool_path', str(mem_pool_path)])
48
52
 
49
- os.chdir("../../../..")
53
+ # os.chdir("../../../..")
50
54
 
51
- def get_item(self, mem_type, size, r_bw, r_port, w_port, rw_port, bank):
52
- logger.info(f"Extracting memory costs with CACTI for size = {size} and r_bw = {r_bw}")
55
+ def get_item(self, mem_type, size, r_bw, r_port, w_port, rw_port, bank, mem_pool_path=MEM_POOL_PATH, cacti_top_path=CACTI_TOP_PATH):
56
+ print(f"Extracting memory costs with CACTI for size = {size} and r_bw = {r_bw}")
53
57
 
54
58
  if mem_type == 'rf':
55
59
  mem_type = 'sram'
@@ -58,10 +62,10 @@ class CactiParser:
58
62
 
59
63
  print("mem_type is register file! Changed to 'sram' and size", size, "instead of", int(size/128))
60
64
 
61
- if not self.item_exists(mem_type, size, r_bw, r_port, w_port, rw_port, bank):
62
- self.create_item(mem_type, size, r_bw, r_port, w_port, rw_port, bank)
65
+ if not self.item_exists(mem_type, size, r_bw, r_port, w_port, rw_port, bank, mem_pool_path):
66
+ self.create_item(mem_type, size, r_bw, r_port, w_port, rw_port, bank, mem_pool_path, cacti_top_path)
63
67
 
64
- memory_pool_file = open(f'{CACTI_PATH}/cacti-master/example_mem_pool.yaml')
68
+ memory_pool_file = open(mem_pool_path)
65
69
  memory_pool = yaml.full_load(memory_pool_file)
66
70
 
67
71
  if memory_pool != None:
@@ -37,7 +37,7 @@ class MemoryInstance:
37
37
  r_port=r_port,
38
38
  w_port=w_port,
39
39
  rw_port=rw_port,
40
- bank=1
40
+ bank=1,
41
41
  )
42
42
 
43
43
  self.name = name
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zigzag-dse
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: ZigZag - Deep Learning Hardware Design Space Exploration
5
5
  Author-email: Arne Symons <arne.symons@kuleuven.be>, Linyan Mei <linyan.mei@kuleuven.be>
6
6
  License: BSD 3-Clause License
@@ -1 +0,0 @@
1
- __version__ = "2.2.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes