modal 1.0.2.dev2__tar.gz → 1.0.2.dev3__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 (184) hide show
  1. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/PKG-INFO +1 -1
  2. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/client.pyi +2 -2
  3. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/exception.py +2 -0
  4. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_version/__init__.py +1 -1
  6. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/LICENSE +0 -0
  7. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/README.md +0 -0
  8. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/__init__.py +0 -0
  9. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/__main__.py +0 -0
  10. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_clustered_functions.py +0 -0
  11. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_clustered_functions.pyi +0 -0
  12. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_container_entrypoint.py +0 -0
  13. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_functions.py +0 -0
  14. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_ipython.py +0 -0
  15. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_location.py +0 -0
  16. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_object.py +0 -0
  17. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_output.py +0 -0
  18. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_partial_function.py +0 -0
  19. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_pty.py +0 -0
  20. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_resolver.py +0 -0
  21. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_resources.py +0 -0
  22. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/__init__.py +0 -0
  23. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/asgi.py +0 -0
  24. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/container_io_manager.py +0 -0
  25. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/container_io_manager.pyi +0 -0
  26. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/execution_context.py +0 -0
  27. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/execution_context.pyi +0 -0
  28. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  29. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/telemetry.py +0 -0
  30. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_runtime/user_code_imports.py +0 -0
  31. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_serialization.py +0 -0
  32. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_traceback.py +0 -0
  33. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_tunnel.py +0 -0
  34. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_tunnel.pyi +0 -0
  35. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_type_manager.py +0 -0
  36. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/__init__.py +0 -0
  37. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/app_utils.py +0 -0
  38. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/async_utils.py +0 -0
  39. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/blob_utils.py +0 -0
  40. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/bytes_io_segment_payload.py +0 -0
  41. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/deprecation.py +0 -0
  42. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/docker_utils.py +0 -0
  43. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/function_utils.py +0 -0
  44. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/git_utils.py +0 -0
  45. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/grpc_testing.py +0 -0
  46. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/grpc_utils.py +0 -0
  47. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/hash_utils.py +0 -0
  48. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/http_utils.py +0 -0
  49. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/jwt_utils.py +0 -0
  50. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/logger.py +0 -0
  51. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/mount_utils.py +0 -0
  52. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/name_utils.py +0 -0
  53. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/package_utils.py +0 -0
  54. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/pattern_utils.py +0 -0
  55. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/rand_pb_testing.py +0 -0
  56. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/shell_utils.py +0 -0
  57. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_utils/time_utils.py +0 -0
  58. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_vendor/__init__.py +0 -0
  59. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  60. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_vendor/cloudpickle.py +0 -0
  61. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_vendor/tblib.py +0 -0
  62. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/_watcher.py +0 -0
  63. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/app.py +0 -0
  64. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/app.pyi +0 -0
  65. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/call_graph.py +0 -0
  66. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/__init__.py +0 -0
  67. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/_download.py +0 -0
  68. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/_traceback.py +0 -0
  69. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/app.py +0 -0
  70. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/cluster.py +0 -0
  71. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/config.py +0 -0
  72. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/container.py +0 -0
  73. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/dict.py +0 -0
  74. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/entry_point.py +0 -0
  75. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/environment.py +0 -0
  76. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/import_refs.py +0 -0
  77. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/launch.py +0 -0
  78. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/network_file_system.py +0 -0
  79. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/profile.py +0 -0
  80. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/programs/__init__.py +0 -0
  81. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/programs/run_jupyter.py +0 -0
  82. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/programs/vscode.py +0 -0
  83. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/queues.py +0 -0
  84. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/run.py +0 -0
  85. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/secret.py +0 -0
  86. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/token.py +0 -0
  87. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/utils.py +0 -0
  88. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cli/volume.py +0 -0
  89. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/client.py +0 -0
  90. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cloud_bucket_mount.py +0 -0
  91. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cloud_bucket_mount.pyi +0 -0
  92. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cls.py +0 -0
  93. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/cls.pyi +0 -0
  94. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/config.py +0 -0
  95. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/container_process.py +0 -0
  96. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/container_process.pyi +0 -0
  97. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/dict.py +0 -0
  98. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/dict.pyi +0 -0
  99. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/environments.py +0 -0
  100. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/environments.pyi +0 -0
  101. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/experimental/__init__.py +0 -0
  102. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/experimental/ipython.py +0 -0
  103. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/file_io.py +0 -0
  104. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/file_io.pyi +0 -0
  105. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/file_pattern_matcher.py +0 -0
  106. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/functions.py +0 -0
  107. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/functions.pyi +0 -0
  108. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/gpu.py +0 -0
  109. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/image.py +0 -0
  110. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/image.pyi +0 -0
  111. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/io_streams.py +0 -0
  112. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/io_streams.pyi +0 -0
  113. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/mount.py +0 -0
  114. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/mount.pyi +0 -0
  115. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/network_file_system.py +0 -0
  116. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/network_file_system.pyi +0 -0
  117. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/object.py +0 -0
  118. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/object.pyi +0 -0
  119. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/output.py +0 -0
  120. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/parallel_map.py +0 -0
  121. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/parallel_map.pyi +0 -0
  122. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/partial_function.py +0 -0
  123. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/partial_function.pyi +0 -0
  124. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/proxy.py +0 -0
  125. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/proxy.pyi +0 -0
  126. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/py.typed +0 -0
  127. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/queue.py +0 -0
  128. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/queue.pyi +0 -0
  129. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/requirements/2023.12.312.txt +0 -0
  130. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/requirements/2023.12.txt +0 -0
  131. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/requirements/2024.04.txt +0 -0
  132. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/requirements/2024.10.txt +0 -0
  133. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/requirements/PREVIEW.txt +0 -0
  134. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/requirements/README.md +0 -0
  135. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/requirements/base-images.json +0 -0
  136. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/retries.py +0 -0
  137. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/runner.py +0 -0
  138. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/runner.pyi +0 -0
  139. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/running_app.py +0 -0
  140. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/sandbox.py +0 -0
  141. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/sandbox.pyi +0 -0
  142. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/schedule.py +0 -0
  143. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/scheduler_placement.py +0 -0
  144. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/secret.py +0 -0
  145. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/secret.pyi +0 -0
  146. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/serving.py +0 -0
  147. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/serving.pyi +0 -0
  148. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/snapshot.py +0 -0
  149. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/snapshot.pyi +0 -0
  150. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/stream_type.py +0 -0
  151. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/token_flow.py +0 -0
  152. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/token_flow.pyi +0 -0
  153. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/volume.py +0 -0
  154. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal/volume.pyi +0 -0
  155. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal.egg-info/SOURCES.txt +0 -0
  156. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal.egg-info/dependency_links.txt +0 -0
  157. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal.egg-info/entry_points.txt +0 -0
  158. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal.egg-info/requires.txt +0 -0
  159. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal.egg-info/top_level.txt +0 -0
  160. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_docs/__init__.py +0 -0
  161. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_docs/gen_cli_docs.py +0 -0
  162. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_docs/gen_reference_docs.py +0 -0
  163. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_docs/mdmd/__init__.py +0 -0
  164. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_docs/mdmd/mdmd.py +0 -0
  165. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_docs/mdmd/signatures.py +0 -0
  166. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/__init__.py +0 -0
  167. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/api.proto +0 -0
  168. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/api_grpc.py +0 -0
  169. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/api_pb2.py +0 -0
  170. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/api_pb2.pyi +0 -0
  171. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/api_pb2_grpc.py +0 -0
  172. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/api_pb2_grpc.pyi +0 -0
  173. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/modal_api_grpc.py +0 -0
  174. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/modal_options_grpc.py +0 -0
  175. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/options.proto +0 -0
  176. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/options_grpc.py +0 -0
  177. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/options_pb2.py +0 -0
  178. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/options_pb2.pyi +0 -0
  179. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/options_pb2_grpc.py +0 -0
  180. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/options_pb2_grpc.pyi +0 -0
  181. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_proto/py.typed +0 -0
  182. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/modal_version/__main__.py +0 -0
  183. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/pyproject.toml +0 -0
  184. {modal-1.0.2.dev2 → modal-1.0.2.dev3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.2.dev2
3
+ Version: 1.0.2.dev3
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -31,7 +31,7 @@ class _Client:
31
31
  server_url: str,
32
32
  client_type: int,
33
33
  credentials: typing.Optional[tuple[str, str]],
34
- version: str = "1.0.2.dev2",
34
+ version: str = "1.0.2.dev3",
35
35
  ): ...
36
36
  def is_closed(self) -> bool: ...
37
37
  @property
@@ -94,7 +94,7 @@ class Client:
94
94
  server_url: str,
95
95
  client_type: int,
96
96
  credentials: typing.Optional[tuple[str, str]],
97
- version: str = "1.0.2.dev2",
97
+ version: str = "1.0.2.dev3",
98
98
  ): ...
99
99
  def is_closed(self) -> bool: ...
100
100
  @property
@@ -161,6 +161,8 @@ def simulate_preemption(wait_seconds: int, jitter_seconds: int = 0):
161
161
  See https://modal.com/docs/guide/preemption for more details on preemption
162
162
  handling.
163
163
  """
164
+ if wait_seconds <= 0:
165
+ raise ValueError("Time to wait must be greater than 0")
164
166
  signal.signal(signal.SIGALRM, _simulate_preemption_interrupt)
165
167
  jitter = random.randrange(0, jitter_seconds) if jitter_seconds else 0
166
168
  signal.alarm(wait_seconds + jitter)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.2.dev2
3
+ Version: 1.0.2.dev3
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.0.2.dev2"
4
+ __version__ = "1.0.2.dev3"
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