fugue 0.9.4__tar.gz → 0.9.6__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 (163) hide show
  1. {fugue-0.9.4 → fugue-0.9.6}/PKG-INFO +3 -1
  2. {fugue-0.9.4 → fugue-0.9.6}/fugue.egg-info/PKG-INFO +3 -1
  3. {fugue-0.9.4 → fugue-0.9.6}/fugue.egg-info/requires.txt +2 -0
  4. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/_utils/misc.py +14 -4
  5. fugue-0.9.6/fugue_version/__init__.py +1 -0
  6. {fugue-0.9.4 → fugue-0.9.6}/setup.py +2 -1
  7. fugue-0.9.4/fugue_version/__init__.py +0 -1
  8. {fugue-0.9.4 → fugue-0.9.6}/LICENSE +0 -0
  9. {fugue-0.9.4 → fugue-0.9.6}/README.md +0 -0
  10. {fugue-0.9.4 → fugue-0.9.6}/fugue/__init__.py +0 -0
  11. {fugue-0.9.4 → fugue-0.9.6}/fugue/_utils/__init__.py +0 -0
  12. {fugue-0.9.4 → fugue-0.9.6}/fugue/_utils/display.py +0 -0
  13. {fugue-0.9.4 → fugue-0.9.6}/fugue/_utils/exception.py +0 -0
  14. {fugue-0.9.4 → fugue-0.9.6}/fugue/_utils/interfaceless.py +0 -0
  15. {fugue-0.9.4 → fugue-0.9.6}/fugue/_utils/io.py +0 -0
  16. {fugue-0.9.4 → fugue-0.9.6}/fugue/_utils/misc.py +0 -0
  17. {fugue-0.9.4 → fugue-0.9.6}/fugue/_utils/registry.py +0 -0
  18. {fugue-0.9.4 → fugue-0.9.6}/fugue/api.py +0 -0
  19. {fugue-0.9.4 → fugue-0.9.6}/fugue/bag/__init__.py +0 -0
  20. {fugue-0.9.4 → fugue-0.9.6}/fugue/bag/array_bag.py +0 -0
  21. {fugue-0.9.4 → fugue-0.9.6}/fugue/bag/bag.py +0 -0
  22. {fugue-0.9.4 → fugue-0.9.6}/fugue/collections/__init__.py +0 -0
  23. {fugue-0.9.4 → fugue-0.9.6}/fugue/collections/partition.py +0 -0
  24. {fugue-0.9.4 → fugue-0.9.6}/fugue/collections/sql.py +0 -0
  25. {fugue-0.9.4 → fugue-0.9.6}/fugue/collections/yielded.py +0 -0
  26. {fugue-0.9.4 → fugue-0.9.6}/fugue/column/__init__.py +0 -0
  27. {fugue-0.9.4 → fugue-0.9.6}/fugue/column/expressions.py +0 -0
  28. {fugue-0.9.4 → fugue-0.9.6}/fugue/column/functions.py +0 -0
  29. {fugue-0.9.4 → fugue-0.9.6}/fugue/column/sql.py +0 -0
  30. {fugue-0.9.4 → fugue-0.9.6}/fugue/constants.py +0 -0
  31. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/__init__.py +0 -0
  32. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/api.py +0 -0
  33. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/array_dataframe.py +0 -0
  34. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/arrow_dataframe.py +0 -0
  35. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/dataframe.py +0 -0
  36. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/dataframe_iterable_dataframe.py +0 -0
  37. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/dataframes.py +0 -0
  38. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/function_wrapper.py +0 -0
  39. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/iterable_dataframe.py +0 -0
  40. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/pandas_dataframe.py +0 -0
  41. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataframe/utils.py +0 -0
  42. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataset/__init__.py +0 -0
  43. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataset/api.py +0 -0
  44. {fugue-0.9.4 → fugue-0.9.6}/fugue/dataset/dataset.py +0 -0
  45. {fugue-0.9.4 → fugue-0.9.6}/fugue/dev.py +0 -0
  46. {fugue-0.9.4 → fugue-0.9.6}/fugue/exceptions.py +0 -0
  47. {fugue-0.9.4 → fugue-0.9.6}/fugue/execution/__init__.py +0 -0
  48. {fugue-0.9.4 → fugue-0.9.6}/fugue/execution/api.py +0 -0
  49. {fugue-0.9.4 → fugue-0.9.6}/fugue/execution/execution_engine.py +0 -0
  50. {fugue-0.9.4 → fugue-0.9.6}/fugue/execution/factory.py +0 -0
  51. {fugue-0.9.4 → fugue-0.9.6}/fugue/execution/native_execution_engine.py +0 -0
  52. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/__init__.py +0 -0
  53. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/_builtins/__init__.py +0 -0
  54. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/_builtins/creators.py +0 -0
  55. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/_builtins/outputters.py +0 -0
  56. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/_builtins/processors.py +0 -0
  57. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/_utils.py +0 -0
  58. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/context.py +0 -0
  59. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/creator/__init__.py +0 -0
  60. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/creator/convert.py +0 -0
  61. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/creator/creator.py +0 -0
  62. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/outputter/__init__.py +0 -0
  63. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/outputter/convert.py +0 -0
  64. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/outputter/outputter.py +0 -0
  65. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/processor/__init__.py +0 -0
  66. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/processor/convert.py +0 -0
  67. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/processor/processor.py +0 -0
  68. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/transformer/__init__.py +0 -0
  69. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/transformer/constants.py +0 -0
  70. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/transformer/convert.py +0 -0
  71. {fugue-0.9.4 → fugue-0.9.6}/fugue/extensions/transformer/transformer.py +0 -0
  72. {fugue-0.9.4 → fugue-0.9.6}/fugue/plugins.py +0 -0
  73. {fugue-0.9.4 → fugue-0.9.6}/fugue/py.typed +0 -0
  74. {fugue-0.9.4 → fugue-0.9.6}/fugue/registry.py +0 -0
  75. {fugue-0.9.4 → fugue-0.9.6}/fugue/rpc/__init__.py +0 -0
  76. {fugue-0.9.4 → fugue-0.9.6}/fugue/rpc/base.py +0 -0
  77. {fugue-0.9.4 → fugue-0.9.6}/fugue/rpc/flask.py +0 -0
  78. {fugue-0.9.4 → fugue-0.9.6}/fugue/sql/__init__.py +0 -0
  79. {fugue-0.9.4 → fugue-0.9.6}/fugue/sql/_utils.py +0 -0
  80. {fugue-0.9.4 → fugue-0.9.6}/fugue/sql/_visitors.py +0 -0
  81. {fugue-0.9.4 → fugue-0.9.6}/fugue/sql/api.py +0 -0
  82. {fugue-0.9.4 → fugue-0.9.6}/fugue/sql/workflow.py +0 -0
  83. {fugue-0.9.4 → fugue-0.9.6}/fugue/test/__init__.py +0 -0
  84. {fugue-0.9.4 → fugue-0.9.6}/fugue/test/pandas_tester.py +0 -0
  85. {fugue-0.9.4 → fugue-0.9.6}/fugue/test/plugins.py +0 -0
  86. {fugue-0.9.4 → fugue-0.9.6}/fugue/workflow/__init__.py +0 -0
  87. {fugue-0.9.4 → fugue-0.9.6}/fugue/workflow/_checkpoint.py +0 -0
  88. {fugue-0.9.4 → fugue-0.9.6}/fugue/workflow/_tasks.py +0 -0
  89. {fugue-0.9.4 → fugue-0.9.6}/fugue/workflow/_workflow_context.py +0 -0
  90. {fugue-0.9.4 → fugue-0.9.6}/fugue/workflow/api.py +0 -0
  91. {fugue-0.9.4 → fugue-0.9.6}/fugue/workflow/input.py +0 -0
  92. {fugue-0.9.4 → fugue-0.9.6}/fugue/workflow/module.py +0 -0
  93. {fugue-0.9.4 → fugue-0.9.6}/fugue/workflow/workflow.py +0 -0
  94. {fugue-0.9.4 → fugue-0.9.6}/fugue.egg-info/SOURCES.txt +0 -0
  95. {fugue-0.9.4 → fugue-0.9.6}/fugue.egg-info/dependency_links.txt +0 -0
  96. {fugue-0.9.4 → fugue-0.9.6}/fugue.egg-info/entry_points.txt +0 -0
  97. {fugue-0.9.4 → fugue-0.9.6}/fugue.egg-info/top_level.txt +0 -0
  98. {fugue-0.9.4 → fugue-0.9.6}/fugue_contrib/__init__.py +0 -0
  99. {fugue-0.9.4 → fugue-0.9.6}/fugue_contrib/contrib.py +0 -0
  100. {fugue-0.9.4 → fugue-0.9.6}/fugue_contrib/seaborn/__init__.py +0 -0
  101. {fugue-0.9.4 → fugue-0.9.6}/fugue_contrib/viz/__init__.py +0 -0
  102. {fugue-0.9.4 → fugue-0.9.6}/fugue_contrib/viz/_ext.py +0 -0
  103. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/__init__.py +0 -0
  104. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/_constants.py +0 -0
  105. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/_dask_sql_wrapper.py +0 -0
  106. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/_io.py +0 -0
  107. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/_utils.py +0 -0
  108. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/dataframe.py +0 -0
  109. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/execution_engine.py +0 -0
  110. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/registry.py +0 -0
  111. {fugue-0.9.4 → fugue-0.9.6}/fugue_dask/tester.py +0 -0
  112. {fugue-0.9.4 → fugue-0.9.6}/fugue_duckdb/__init__.py +0 -0
  113. {fugue-0.9.4 → fugue-0.9.6}/fugue_duckdb/_io.py +0 -0
  114. {fugue-0.9.4 → fugue-0.9.6}/fugue_duckdb/_utils.py +0 -0
  115. {fugue-0.9.4 → fugue-0.9.6}/fugue_duckdb/dask.py +0 -0
  116. {fugue-0.9.4 → fugue-0.9.6}/fugue_duckdb/dataframe.py +0 -0
  117. {fugue-0.9.4 → fugue-0.9.6}/fugue_duckdb/execution_engine.py +0 -0
  118. {fugue-0.9.4 → fugue-0.9.6}/fugue_duckdb/registry.py +0 -0
  119. {fugue-0.9.4 → fugue-0.9.6}/fugue_duckdb/tester.py +0 -0
  120. {fugue-0.9.4 → fugue-0.9.6}/fugue_ibis/__init__.py +0 -0
  121. {fugue-0.9.4 → fugue-0.9.6}/fugue_ibis/_compat.py +0 -0
  122. {fugue-0.9.4 → fugue-0.9.6}/fugue_ibis/_utils.py +0 -0
  123. {fugue-0.9.4 → fugue-0.9.6}/fugue_ibis/dataframe.py +0 -0
  124. {fugue-0.9.4 → fugue-0.9.6}/fugue_ibis/execution_engine.py +0 -0
  125. {fugue-0.9.4 → fugue-0.9.6}/fugue_notebook/__init__.py +0 -0
  126. {fugue-0.9.4 → fugue-0.9.6}/fugue_notebook/env.py +0 -0
  127. {fugue-0.9.4 → fugue-0.9.6}/fugue_notebook/nbextension/README.md +0 -0
  128. {fugue-0.9.4 → fugue-0.9.6}/fugue_notebook/nbextension/__init__.py +0 -0
  129. {fugue-0.9.4 → fugue-0.9.6}/fugue_notebook/nbextension/description.yaml +0 -0
  130. {fugue-0.9.4 → fugue-0.9.6}/fugue_notebook/nbextension/main.js +0 -0
  131. {fugue-0.9.4 → fugue-0.9.6}/fugue_polars/__init__.py +0 -0
  132. {fugue-0.9.4 → fugue-0.9.6}/fugue_polars/_utils.py +0 -0
  133. {fugue-0.9.4 → fugue-0.9.6}/fugue_polars/polars_dataframe.py +0 -0
  134. {fugue-0.9.4 → fugue-0.9.6}/fugue_polars/registry.py +0 -0
  135. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/__init__.py +0 -0
  136. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/_constants.py +0 -0
  137. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/_utils/__init__.py +0 -0
  138. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/_utils/cluster.py +0 -0
  139. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/_utils/dataframe.py +0 -0
  140. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/_utils/io.py +0 -0
  141. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/dataframe.py +0 -0
  142. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/execution_engine.py +0 -0
  143. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/registry.py +0 -0
  144. {fugue-0.9.4 → fugue-0.9.6}/fugue_ray/tester.py +0 -0
  145. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/__init__.py +0 -0
  146. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/_constants.py +0 -0
  147. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/_utils/__init__.py +0 -0
  148. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/_utils/convert.py +0 -0
  149. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/_utils/io.py +0 -0
  150. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/_utils/partition.py +0 -0
  151. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/dataframe.py +0 -0
  152. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/execution_engine.py +0 -0
  153. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/registry.py +0 -0
  154. {fugue-0.9.4 → fugue-0.9.6}/fugue_spark/tester.py +0 -0
  155. {fugue-0.9.4 → fugue-0.9.6}/fugue_sql/__init__.py +0 -0
  156. {fugue-0.9.4 → fugue-0.9.6}/fugue_sql/exceptions.py +0 -0
  157. {fugue-0.9.4 → fugue-0.9.6}/fugue_test/__init__.py +0 -0
  158. {fugue-0.9.4 → fugue-0.9.6}/fugue_test/bag_suite.py +0 -0
  159. {fugue-0.9.4 → fugue-0.9.6}/fugue_test/builtin_suite.py +0 -0
  160. {fugue-0.9.4 → fugue-0.9.6}/fugue_test/dataframe_suite.py +0 -0
  161. {fugue-0.9.4 → fugue-0.9.6}/fugue_test/execution_suite.py +0 -0
  162. {fugue-0.9.4 → fugue-0.9.6}/fugue_test/fixtures.py +0 -0
  163. {fugue-0.9.4 → fugue-0.9.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fugue
3
- Version: 0.9.4
3
+ Version: 0.9.6
4
4
  Summary: An abstraction layer for distributed computation
5
5
  Home-page: http://github.com/fugue-project/fugue
6
6
  Author: The Fugue Development Team
@@ -23,6 +23,7 @@ Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  Requires-Dist: triad>=1.0.0
25
25
  Requires-Dist: adagio>=0.2.6
26
+ Requires-Dist: pandas<3
26
27
  Provides-Extra: sql
27
28
  Requires-Dist: qpd>=0.4.4; extra == "sql"
28
29
  Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "sql"
@@ -32,6 +33,7 @@ Provides-Extra: cpp-sql-parser
32
33
  Requires-Dist: fugue-sql-antlr[cpp]>=0.2.0; extra == "cpp-sql-parser"
33
34
  Provides-Extra: spark
34
35
  Requires-Dist: pyspark>=3.1.1; extra == "spark"
36
+ Requires-Dist: zstandard>=0.25.0; extra == "spark"
35
37
  Provides-Extra: dask
36
38
  Requires-Dist: dask[dataframe,distributed]>=2024.4.0; extra == "dask"
37
39
  Requires-Dist: pyarrow>=7.0.0; extra == "dask"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fugue
3
- Version: 0.9.4
3
+ Version: 0.9.6
4
4
  Summary: An abstraction layer for distributed computation
5
5
  Home-page: http://github.com/fugue-project/fugue
6
6
  Author: The Fugue Development Team
@@ -23,6 +23,7 @@ Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  Requires-Dist: triad>=1.0.0
25
25
  Requires-Dist: adagio>=0.2.6
26
+ Requires-Dist: pandas<3
26
27
  Provides-Extra: sql
27
28
  Requires-Dist: qpd>=0.4.4; extra == "sql"
28
29
  Requires-Dist: fugue-sql-antlr>=0.2.0; extra == "sql"
@@ -32,6 +33,7 @@ Provides-Extra: cpp-sql-parser
32
33
  Requires-Dist: fugue-sql-antlr[cpp]>=0.2.0; extra == "cpp-sql-parser"
33
34
  Provides-Extra: spark
34
35
  Requires-Dist: pyspark>=3.1.1; extra == "spark"
36
+ Requires-Dist: zstandard>=0.25.0; extra == "spark"
35
37
  Provides-Extra: dask
36
38
  Requires-Dist: dask[dataframe,distributed]>=2024.4.0; extra == "dask"
37
39
  Requires-Dist: pyarrow>=7.0.0; extra == "dask"
@@ -1,5 +1,6 @@
1
1
  triad>=1.0.0
2
2
  adagio>=0.2.6
3
+ pandas<3
3
4
 
4
5
  [all]
5
6
  qpd>=0.4.4
@@ -58,6 +59,7 @@ pandas
58
59
 
59
60
  [spark]
60
61
  pyspark>=3.1.1
62
+ zstandard>=0.25.0
61
63
 
62
64
  [sql]
63
65
  qpd>=0.4.4
@@ -1,15 +1,25 @@
1
+ import pyspark.sql as ps
2
+ import pyspark
1
3
  from typing import Any
2
4
 
5
+
6
+ SPARK_VERSION = pyspark.__version__.split(".")
7
+
3
8
  try:
4
- from pyspark.sql.connect.session import SparkSession as SparkConnectSession
5
- from pyspark.sql.connect.dataframe import DataFrame as SparkConnectDataFrame
9
+ if int(SPARK_VERSION[0]) >= 4:
10
+ from pyspark.sql import SparkSession as SparkConnectSession
11
+ from pyspark.sql import DataFrame as SparkConnectDataFrame
12
+ else: # pragma: no cover
13
+ from pyspark.sql.connect.session import SparkSession as SparkConnectSession
14
+ from pyspark.sql.connect.dataframe import DataFrame as SparkConnectDataFrame
6
15
  except Exception: # pragma: no cover
7
16
  SparkConnectSession = None
8
17
  SparkConnectDataFrame = None
9
- import pyspark.sql as ps
10
18
 
11
19
 
12
- def is_spark_connect(session: Any) -> bool:
20
+ def is_spark_connect(session: Any) -> bool: # pragma: no cover
21
+ if int(SPARK_VERSION[0]) >= 4:
22
+ return False
13
23
  return SparkConnectSession is not None and isinstance(
14
24
  session, (SparkConnectSession, SparkConnectDataFrame)
15
25
  )
@@ -0,0 +1 @@
1
+ __version__ = "0.9.6"
@@ -40,11 +40,12 @@ setup(
40
40
  install_requires=[
41
41
  "triad>=1.0.0",
42
42
  "adagio>=0.2.6",
43
+ "pandas<3", # TODO: remove upper bound on 0.9.7
43
44
  ],
44
45
  extras_require={
45
46
  "sql": SQL_DEPENDENCIES,
46
47
  "cpp_sql_parser": ["fugue-sql-antlr[cpp]>=0.2.0"],
47
- "spark": ["pyspark>=3.1.1"],
48
+ "spark": ["pyspark>=3.1.1", "zstandard>=0.25.0"],
48
49
  "dask": [
49
50
  "dask[distributed,dataframe]>=2024.4.0",
50
51
  "pyarrow>=7.0.0",
@@ -1 +0,0 @@
1
- __version__ = "0.9.4"
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
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
File without changes