deepfos 1.1.6__tar.gz → 1.1.7__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 (166) hide show
  1. {deepfos-1.1.6 → deepfos-1.1.7}/PKG-INFO +1 -1
  2. {deepfos-1.1.6 → deepfos-1.1.7}/README.md +1 -1
  3. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/base.py +2 -16
  4. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/deepchart.py +10 -0
  5. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos.egg-info/PKG-INFO +1 -1
  6. {deepfos-1.1.6 → deepfos-1.1.7}/setup.py +1 -1
  7. {deepfos-1.1.6 → deepfos-1.1.7}/MANIFEST.in +0 -0
  8. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/__init__.py +0 -0
  9. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/_version.py +0 -0
  10. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/algo/__init__.py +0 -0
  11. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/algo/graph.py +0 -0
  12. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_1/__init__.py +0 -0
  13. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_1/business_model.py +0 -0
  14. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_1/dimension.py +0 -0
  15. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_1/models/__init__.py +0 -0
  16. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_1/models/business_model.py +0 -0
  17. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_1/models/dimension.py +0 -0
  18. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_2/__init__.py +0 -0
  19. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_2/dimension.py +0 -0
  20. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_2/models/__init__.py +0 -0
  21. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/V1_2/models/dimension.py +0 -0
  22. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/__init__.py +0 -0
  23. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/account.py +0 -0
  24. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/accounting_engines.py +0 -0
  25. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/app.py +0 -0
  26. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/approval_process.py +0 -0
  27. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/business_model.py +0 -0
  28. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/consolidation.py +0 -0
  29. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/datatable.py +0 -0
  30. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/deepfos_task.py +0 -0
  31. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/dimension.py +0 -0
  32. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/financial_model.py +0 -0
  33. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/journal_template.py +0 -0
  34. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/memory_financial_model.py +0 -0
  35. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/__init__.py +0 -0
  36. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/account.py +0 -0
  37. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/accounting_engines.py +0 -0
  38. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/app.py +0 -0
  39. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/approval_process.py +0 -0
  40. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/base.py +0 -0
  41. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/business_model.py +0 -0
  42. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/consolidation.py +0 -0
  43. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/datatable_mysql.py +0 -0
  44. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/deepfos_task.py +0 -0
  45. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/dimension.py +0 -0
  46. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/financial_model.py +0 -0
  47. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/journal_template.py +0 -0
  48. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/memory_financial_model.py +0 -0
  49. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/platform.py +0 -0
  50. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/python.py +0 -0
  51. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/reconciliation_engine.py +0 -0
  52. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/reconciliation_report.py +0 -0
  53. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/role_strategy.py +0 -0
  54. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/smartlist.py +0 -0
  55. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/space.py +0 -0
  56. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/system.py +0 -0
  57. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/variable.py +0 -0
  58. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/models/workflow.py +0 -0
  59. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/platform.py +0 -0
  60. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/python.py +0 -0
  61. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/reconciliation_engine.py +0 -0
  62. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/reconciliation_report.py +0 -0
  63. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/role_strategy.py +0 -0
  64. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/smartlist.py +0 -0
  65. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/space.py +0 -0
  66. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/system.py +0 -0
  67. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/variable.py +0 -0
  68. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/api/workflow.py +0 -0
  69. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/boost/__init__.py +0 -0
  70. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/boost/jstream.c +0 -0
  71. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/boost/jstream.pyx +0 -0
  72. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/boost/pandas.c +0 -0
  73. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/boost/pandas.pyx +0 -0
  74. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/boost/py_jstream.py +0 -0
  75. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/boost/py_pandas.py +0 -0
  76. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/cache.py +0 -0
  77. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/config.py +0 -0
  78. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/__init__.py +0 -0
  79. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/cube/__init__.py +0 -0
  80. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/cube/_base.py +0 -0
  81. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/cube/constants.py +0 -0
  82. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/cube/cube.py +0 -0
  83. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/cube/formula.py +0 -0
  84. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/cube/syscube.py +0 -0
  85. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/cube/typing.py +0 -0
  86. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/cube/utils.py +0 -0
  87. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/__init__.py +0 -0
  88. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/_base.py +0 -0
  89. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/dimcreator.py +0 -0
  90. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/dimension.py +0 -0
  91. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/dimexpr.py +0 -0
  92. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/dimmember.py +0 -0
  93. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/eledimension.py +0 -0
  94. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/filters.py +0 -0
  95. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/dimension/sysdimension.py +0 -0
  96. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/logictable/__init__.py +0 -0
  97. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/logictable/_cache.py +0 -0
  98. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/logictable/_operator.py +0 -0
  99. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/logictable/nodemixin.py +0 -0
  100. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/logictable/sqlcondition.py +0 -0
  101. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/core/logictable/tablemodel.py +0 -0
  102. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/__init__.py +0 -0
  103. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/cipher.py +0 -0
  104. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/clickhouse.py +0 -0
  105. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/connector.py +0 -0
  106. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/daclickhouse.py +0 -0
  107. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/dameng.py +0 -0
  108. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/damysql.py +0 -0
  109. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/dbkits.py +0 -0
  110. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/deepengine.py +0 -0
  111. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/gauss.py +0 -0
  112. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/kingbase.py +0 -0
  113. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/mysql.py +0 -0
  114. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/oracle.py +0 -0
  115. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/postgresql.py +0 -0
  116. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/sqlserver.py +0 -0
  117. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/db/utils.py +0 -0
  118. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/__init__.py +0 -0
  119. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/accounting.py +0 -0
  120. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/apvlprocess.py +0 -0
  121. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/base.py +0 -0
  122. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/bizmodel.py +0 -0
  123. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/datatable.py +0 -0
  124. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/dimension.py +0 -0
  125. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/fact_table.py +0 -0
  126. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/finmodel.py +0 -0
  127. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/journal_template.py +0 -0
  128. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/pyscript.py +0 -0
  129. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/reconciliation.py +0 -0
  130. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/rolestrategy.py +0 -0
  131. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/smartlist.py +0 -0
  132. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/variable.py +0 -0
  133. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/element/workflow.py +0 -0
  134. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/exceptions/__init__.py +0 -0
  135. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/exceptions/hook.py +0 -0
  136. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lazy.py +0 -0
  137. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/__init__.py +0 -0
  138. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/_javaobj.py +0 -0
  139. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/asynchronous.py +0 -0
  140. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/concurrency.py +0 -0
  141. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/constant.py +0 -0
  142. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/decorator.py +0 -0
  143. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/deepux.py +0 -0
  144. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/discovery.py +0 -0
  145. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/eureka.py +0 -0
  146. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/filterparser.py +0 -0
  147. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/httpcli.py +0 -0
  148. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/jsonstreamer.py +0 -0
  149. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/nacos.py +0 -0
  150. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/patch.py +0 -0
  151. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/redis.py +0 -0
  152. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/stopwatch.py +0 -0
  153. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/subtask.py +0 -0
  154. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/sysutils.py +0 -0
  155. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/lib/utils.py +0 -0
  156. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/local.py +0 -0
  157. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/options.py +0 -0
  158. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos/translation.py +0 -0
  159. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos.egg-info/SOURCES.txt +0 -0
  160. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos.egg-info/dependency_links.txt +0 -0
  161. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos.egg-info/not-zip-safe +0 -0
  162. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos.egg-info/requires.txt +0 -0
  163. {deepfos-1.1.6 → deepfos-1.1.7}/deepfos.egg-info/top_level.txt +0 -0
  164. {deepfos-1.1.6 → deepfos-1.1.7}/setup.cfg +0 -0
  165. {deepfos-1.1.6 → deepfos-1.1.7}/tests/__init__.py +0 -0
  166. {deepfos-1.1.6 → deepfos-1.1.7}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepfos
3
- Version: 1.1.6
3
+ Version: 1.1.7
4
4
  Summary: Collecions of useful and handy tools for deepfos platform
5
5
  Home-page: http://py.deepfos.com
6
6
  Author: deepfos-python-team
@@ -34,5 +34,5 @@ DeepFOS SDK for Python
34
34
  [@陈熙](https://e.gitee.com/proinnova/members/trend/axisarsae)
35
35
  [@陈思聪](https://e.gitee.com/proinnova/members/trend/proinnova_sicong_chen)
36
36
  [@杨璟](https://e.gitee.com/proinnova/members/trend/jyang-0506)
37
- [@李扬](https://e.gitee.com/proinnova/members/trend/ryan_li1384)
37
+ [@李杨](https://e.gitee.com/proinnova/members/trend/ryan_li1384)
38
38
  [@陈文雍](https://e.gitee.com/proinnova/members/trend/calvinstk)
@@ -352,11 +352,6 @@ class Route:
352
352
  req.update_default(func(ins, *args, **kwargs))
353
353
  url, body, ext_header = req.url, req.body, req.header
354
354
  raw_result = model is None
355
- has_req_callback = (
356
- isinstance(ins.root, _DynamicAPIMixin)
357
- and ins.root.on_success is not None
358
- and ins.root.on_failure is not None
359
- )
360
355
 
361
356
  if ext_header is None:
362
357
  header = ins.header
@@ -422,8 +417,6 @@ class Route:
422
417
  if not OPTION.api.dump_always and OPTION.api.dump_on_failure:
423
418
  req.to_curl(header)
424
419
 
425
- if has_req_callback:
426
- ins.root.on_failure()
427
420
  raise APIRequestError(e) from None
428
421
 
429
422
  # -----------------------------------------------------------------------------
@@ -441,12 +434,7 @@ class Route:
441
434
  )
442
435
  flag, obj, err = False, None, f"[code: {status_code}] ErrMsg from server: {text}"
443
436
 
444
- if has_req_callback:
445
- ins.root.on_failure()
446
-
447
437
  else:
448
- if has_req_callback:
449
- ins.root.on_success()
450
438
  try:
451
439
  resp = json.loads(text)
452
440
  if 'status' not in resp:
@@ -585,8 +573,6 @@ class _DynamicAPIMixin:
585
573
  module_type: str = UNSET
586
574
  server_known = False
587
575
  version = None
588
- on_success = None
589
- on_failure = None
590
576
 
591
577
  def get_module_id(self, version: Union[float, str], module_id: str):
592
578
  if (module_type := self.module_type) is UNSET:
@@ -643,7 +629,7 @@ class DynamicAPIBase(SyncAPIBase, _DynamicAPIMixin):
643
629
  def set_url(self, server_name):
644
630
  if OPTION.discovery.enabled: # pragma: no cover
645
631
  discovery = ServiceDiscovery.instantiate()
646
- self.on_success, self.on_failure, base_url = discovery.sync_get_url(server_name, include_cb=True)
632
+ base_url = discovery.sync_get_url(server_name)
647
633
  self.base_url = concat_url(base_url, self.endpoint)
648
634
  self.server_known = True
649
635
  else:
@@ -686,7 +672,7 @@ class ADynamicAPIBase(AsyncAPIBase, _DynamicAPIMixin):
686
672
  async def set_url(self, server_name):
687
673
  if OPTION.discovery.enabled: # pragma: no cover
688
674
  discovery = ServiceDiscovery.instantiate()
689
- self.on_success, self.on_failure, base_url = await discovery.get_url(server_name, include_cb=True)
675
+ base_url = await discovery.get_url(server_name)
690
676
  self.base_url = concat_url(base_url, self.endpoint)
691
677
  self.server_known = True
692
678
  else:
@@ -113,6 +113,16 @@ class BaseField(BaseModel):
113
113
  result.update({LOGIC_INFO: self.logic_info.as_dict()})
114
114
  return result
115
115
 
116
+ @property
117
+ def name(self):
118
+ return self.columnName
119
+
120
+ def __setattr__(self, name, value):
121
+ if name == 'name':
122
+ self.columnName = value
123
+ else:
124
+ super().__setattr__(name, value)
125
+
116
126
 
117
127
  class Text(BaseField):
118
128
  code = 1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepfos
3
- Version: 1.1.6
3
+ Version: 1.1.7
4
4
  Summary: Collecions of useful and handy tools for deepfos platform
5
5
  Home-page: http://py.deepfos.com
6
6
  Author: deepfos-python-team
@@ -52,7 +52,7 @@ def resolve_extensions():
52
52
 
53
53
 
54
54
  setup(
55
- version="1.1.6",
55
+ version="1.1.7",
56
56
  # cmdclass=versioneer.get_cmdclass(),
57
57
  ext_modules=resolve_extensions()
58
58
  )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes