pum 1.1.1__tar.gz → 1.1.3__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 (158) hide show
  1. {pum-1.1.1/pum.egg-info → pum-1.1.3}/PKG-INFO +2 -2
  2. {pum-1.1.1 → pum-1.1.3}/README.md +1 -1
  3. {pum-1.1.1 → pum-1.1.3}/docs/docs/index.md +1 -1
  4. {pum-1.1.1 → pum-1.1.3}/pum/cli.py +2 -1
  5. {pum-1.1.1 → pum-1.1.3}/pum/pum_config.py +11 -9
  6. {pum-1.1.1 → pum-1.1.3/pum.egg-info}/PKG-INFO +2 -2
  7. {pum-1.1.1 → pum-1.1.3}/.ci/setup_db.sh +0 -0
  8. {pum-1.1.1 → pum-1.1.3}/.github/dependabot.yml +0 -0
  9. {pum-1.1.1 → pum-1.1.3}/.github/workflows/deploy-to-pypi.yml +0 -0
  10. {pum-1.1.1 → pum-1.1.3}/.github/workflows/docs.yml +0 -0
  11. {pum-1.1.1 → pum-1.1.3}/.github/workflows/tests.yml +0 -0
  12. {pum-1.1.1 → pum-1.1.3}/.github/workflows/wheel.yml +0 -0
  13. {pum-1.1.1 → pum-1.1.3}/.github/workflows/windows-tests.yml +0 -0
  14. {pum-1.1.1 → pum-1.1.3}/.gitignore +0 -0
  15. {pum-1.1.1 → pum-1.1.3}/.pre-commit-config.yaml +0 -0
  16. {pum-1.1.1 → pum-1.1.3}/LICENSE +0 -0
  17. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/api.md +0 -0
  18. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/changelog.md +0 -0
  19. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/dump_format.md +0 -0
  20. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/dumper.md +0 -0
  21. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/exceptions.md +0 -0
  22. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/hook_base.md +0 -0
  23. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/hook_handler.md +0 -0
  24. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/parameter_definition.md +0 -0
  25. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/parameter_type.md +0 -0
  26. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/permission.md +0 -0
  27. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/permission_type.md +0 -0
  28. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/pum_config.md +0 -0
  29. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/role.md +0 -0
  30. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/role_manager.md +0 -0
  31. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/schema_migrations.md +0 -0
  32. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/sql_content.md +0 -0
  33. {pum-1.1.1 → pum-1.1.3}/docs/docs/api/upgrader.md +0 -0
  34. {pum-1.1.1 → pum-1.1.3}/docs/docs/assets/images/favicon.ico +0 -0
  35. {pum-1.1.1 → pum-1.1.3}/docs/docs/assets/images/pum-darkmode.png +0 -0
  36. {pum-1.1.1 → pum-1.1.3}/docs/docs/assets/images/pum.png +0 -0
  37. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli/baseline.md +0 -0
  38. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli/check.md +0 -0
  39. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli/dump.md +0 -0
  40. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli/info.md +0 -0
  41. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli/install.md +0 -0
  42. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli/restore.md +0 -0
  43. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli/role.md +0 -0
  44. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli/upgrade.md +0 -0
  45. {pum-1.1.1 → pum-1.1.3}/docs/docs/cli.md +0 -0
  46. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/config_model.md +0 -0
  47. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/configuration.md +0 -0
  48. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/demo_data_model.md +0 -0
  49. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/dependency_model.md +0 -0
  50. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/hook_model.md +0 -0
  51. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/migration_hooks_model.md +0 -0
  52. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/parameter_definition_model.md +0 -0
  53. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/permission_model.md +0 -0
  54. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/pum_model.md +0 -0
  55. {pum-1.1.1 → pum-1.1.3}/docs/docs/configuration/role_model.md +0 -0
  56. {pum-1.1.1 → pum-1.1.3}/docs/docs/getting_started.md +0 -0
  57. {pum-1.1.1 → pum-1.1.3}/docs/docs/hooks.md +0 -0
  58. {pum-1.1.1 → pum-1.1.3}/docs/docs/roles.md +0 -0
  59. {pum-1.1.1 → pum-1.1.3}/docs/mkdocs.yml +0 -0
  60. {pum-1.1.1 → pum-1.1.3}/docs/requirements.txt +0 -0
  61. {pum-1.1.1 → pum-1.1.3}/docs/roles.md +0 -0
  62. {pum-1.1.1 → pum-1.1.3}/docs/update_cli_docs.py +0 -0
  63. {pum-1.1.1 → pum-1.1.3}/pum/__init__.py +0 -0
  64. {pum-1.1.1 → pum-1.1.3}/pum/changelog.py +0 -0
  65. {pum-1.1.1 → pum-1.1.3}/pum/checker.py +0 -0
  66. {pum-1.1.1 → pum-1.1.3}/pum/conf/pum_config_example.yaml +0 -0
  67. {pum-1.1.1 → pum-1.1.3}/pum/config_model.py +0 -0
  68. {pum-1.1.1 → pum-1.1.3}/pum/dependency_handler.py +0 -0
  69. {pum-1.1.1 → pum-1.1.3}/pum/dumper.py +0 -0
  70. {pum-1.1.1 → pum-1.1.3}/pum/exceptions.py +0 -0
  71. {pum-1.1.1 → pum-1.1.3}/pum/hook.py +0 -0
  72. {pum-1.1.1 → pum-1.1.3}/pum/info.py +0 -0
  73. {pum-1.1.1 → pum-1.1.3}/pum/parameter.py +0 -0
  74. {pum-1.1.1 → pum-1.1.3}/pum/role_manager.py +0 -0
  75. {pum-1.1.1 → pum-1.1.3}/pum/schema_migrations.py +0 -0
  76. {pum-1.1.1 → pum-1.1.3}/pum/sql_content.py +0 -0
  77. {pum-1.1.1 → pum-1.1.3}/pum/upgrader.py +0 -0
  78. {pum-1.1.1 → pum-1.1.3}/pum.egg-info/SOURCES.txt +0 -0
  79. {pum-1.1.1 → pum-1.1.3}/pum.egg-info/dependency_links.txt +0 -0
  80. {pum-1.1.1 → pum-1.1.3}/pum.egg-info/entry_points.txt +0 -0
  81. {pum-1.1.1 → pum-1.1.3}/pum.egg-info/requires.txt +0 -0
  82. {pum-1.1.1 → pum-1.1.3}/pum.egg-info/top_level.txt +0 -0
  83. {pum-1.1.1 → pum-1.1.3}/pyproject.toml +0 -0
  84. {pum-1.1.1 → pum-1.1.3}/requirements/base.txt +0 -0
  85. {pum-1.1.1 → pum-1.1.3}/requirements/development.txt +0 -0
  86. {pum-1.1.1 → pum-1.1.3}/scripts/run_postgis.sh +0 -0
  87. {pum-1.1.1 → pum-1.1.3}/setup.cfg +0 -0
  88. {pum-1.1.1 → pum-1.1.3}/test/__init__.py +0 -0
  89. {pum-1.1.1 → pum-1.1.3}/test/data/complex_files_content/changelogs/1.2.3/complex_files_content.sql +0 -0
  90. {pum-1.1.1 → pum-1.1.3}/test/data/custom_directory/.pum.yaml +0 -0
  91. {pum-1.1.1 → pum-1.1.3}/test/data/custom_directory/my_delta_directory/1.2.3/my_delta_directory.sql +0 -0
  92. {pum-1.1.1 → pum-1.1.3}/test/data/custom_migration_schema/.pum.yaml +0 -0
  93. {pum-1.1.1 → pum-1.1.3}/test/data/custom_migration_schema/changelogs/1.2.3/custom_migration_schema.sql +0 -0
  94. {pum-1.1.1 → pum-1.1.3}/test/data/demo_data/.pum.yaml +0 -0
  95. {pum-1.1.1 → pum-1.1.3}/test/data/demo_data/changelogs/1.2.3/single_changelog.sql +0 -0
  96. {pum-1.1.1 → pum-1.1.3}/test/data/demo_data/demo_data/demo_data.sql +0 -0
  97. {pum-1.1.1 → pum-1.1.3}/test/data/dependencies/.pum.yaml +0 -0
  98. {pum-1.1.1 → pum-1.1.3}/test/data/dependencies/changelogs/1.2.3/pre_post_python_parameters.sql +0 -0
  99. {pum-1.1.1 → pum-1.1.3}/test/data/dependencies/changelogs/1.2.4/rename_created_date.sql +0 -0
  100. {pum-1.1.1 → pum-1.1.3}/test/data/dependencies/post/create_schema.sql +0 -0
  101. {pum-1.1.1 → pum-1.1.3}/test/data/dependencies/post/create_view.py +0 -0
  102. {pum-1.1.1 → pum-1.1.3}/test/data/dependencies/pre/drop_view.sql +0 -0
  103. {pum-1.1.1 → pum-1.1.3}/test/data/invalid_changelog_commit/changelogs/1.2.3/invalid_changelog.sql +0 -0
  104. {pum-1.1.1 → pum-1.1.3}/test/data/invalid_changelog_search_path/changelogs/1.2.3/invalid_changelog.sql +0 -0
  105. {pum-1.1.1 → pum-1.1.3}/test/data/min_version/.pum.yaml +0 -0
  106. {pum-1.1.1 → pum-1.1.3}/test/data/min_version/changelogs/1.2.3/roles.sql +0 -0
  107. {pum-1.1.1 → pum-1.1.3}/test/data/multiple_changelogs/changelogs/1.2.3/multiple_changelogs.sql +0 -0
  108. {pum-1.1.1 → pum-1.1.3}/test/data/multiple_changelogs/changelogs/1.2.4/rename_created_date.sql +0 -0
  109. {pum-1.1.1 → pum-1.1.3}/test/data/multiple_changelogs/changelogs/1.3.0/add_created_by_column.sql +0 -0
  110. {pum-1.1.1 → pum-1.1.3}/test/data/multiple_changelogs/changelogs/2.0.0/create_second_table.sql +0 -0
  111. {pum-1.1.1 → pum-1.1.3}/test/data/multiple_changelogs/changelogs/2.0.0/create_third_table.sql +0 -0
  112. {pum-1.1.1 → pum-1.1.3}/test/data/parameters/.pum.yaml +0 -0
  113. {pum-1.1.1 → pum-1.1.3}/test/data/parameters/changelogs/1.2.3/parameters.sql +0 -0
  114. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python/.pum.yaml +0 -0
  115. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python/changelogs/1.2.3/pre_post_python.sql +0 -0
  116. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python/changelogs/1.2.4/rename_created_date.sql +0 -0
  117. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python/post/create_schema.sql +0 -0
  118. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python/post/create_view.py +0 -0
  119. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python/pre/drop_view.sql +0 -0
  120. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_local_import/.pum.yaml +0 -0
  121. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_local_import/changelogs/1.2.3/pre_post_python_local_import.sql +0 -0
  122. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_local_import/post/create_schema.sql +0 -0
  123. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_local_import/post/create_view.py +0 -0
  124. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_local_import/post/folder/my_module.py +0 -0
  125. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_local_import/pre/drop_view.sql +0 -0
  126. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters/.pum.yaml +0 -0
  127. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters/changelogs/1.2.3/pre_post_python_parameters.sql +0 -0
  128. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters/changelogs/1.2.4/rename_created_date.sql +0 -0
  129. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters/post/create_schema.sql +0 -0
  130. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters/post/create_view.py +0 -0
  131. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters/pre/drop_view.sql +0 -0
  132. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters_broken/.pum.yaml +0 -0
  133. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters_broken/changelogs/1.2.3/pre_post_python_parameters_broken.sql +0 -0
  134. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters_broken/changelogs/1.2.4/rename_created_date.sql +0 -0
  135. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters_broken/post/create_schema.sql +0 -0
  136. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters_broken/post/create_view.py +0 -0
  137. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_python_parameters_broken/pre/drop_view.sql +0 -0
  138. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_code/.pum.yaml +0 -0
  139. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_code/changelogs/1.2.3/pre_post_sql_code.sql +0 -0
  140. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_code/changelogs/1.2.4/rename_created_date.sql +0 -0
  141. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_code/post/create_view.sql +0 -0
  142. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_code/pre/drop_view.sql +0 -0
  143. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_files/.pum.yaml +0 -0
  144. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_files/changelogs/1.2.3/pre_post_sql_files.sql +0 -0
  145. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_files/changelogs/1.2.4/rename_created_date.sql +0 -0
  146. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_files/post/create_view.sql +0 -0
  147. {pum-1.1.1 → pum-1.1.3}/test/data/pre_post_sql_files/pre/drop_view.sql +0 -0
  148. {pum-1.1.1 → pum-1.1.3}/test/data/roles/.pum.yaml +0 -0
  149. {pum-1.1.1 → pum-1.1.3}/test/data/roles/changelogs/1.2.3/roles.sql +0 -0
  150. {pum-1.1.1 → pum-1.1.3}/test/data/single_changelog/changelogs/1.2.3/single_changelog.sql +0 -0
  151. {pum-1.1.1 → pum-1.1.3}/test/test_changelog.py +0 -0
  152. {pum-1.1.1 → pum-1.1.3}/test/test_checker.py.disabled +0 -0
  153. {pum-1.1.1 → pum-1.1.3}/test/test_config.py +0 -0
  154. {pum-1.1.1 → pum-1.1.3}/test/test_dumper.py +0 -0
  155. {pum-1.1.1 → pum-1.1.3}/test/test_pum.sh +0 -0
  156. {pum-1.1.1 → pum-1.1.3}/test/test_roles.py +0 -0
  157. {pum-1.1.1 → pum-1.1.3}/test/test_schema_migrations.py +0 -0
  158. {pum-1.1.1 → pum-1.1.3}/test/test_upgrader.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pum
3
- Version: 1.1.1
3
+ Version: 1.1.3
4
4
  Summary: Pum stands for "Postgres Upgrades Manager". It is a Database migration management tool very similar to flyway-db or Liquibase, based on metadata tables.
5
5
  Author-email: Denis Rouzaud <denis@opengis.ch>
6
6
  License-Expression: GPL-2.0-or-later
@@ -58,4 +58,4 @@ PUM (PostgreSQL Upgrades Manager) is a robust database migration management tool
58
58
 
59
59
  Managing database migrations in a Version Control System (VCS) can be challenging, especially for production databases. PUM simplifies this process by embedding version metadata directly into the database, enabling efficient tracking and application of migrations.
60
60
 
61
- PUM was developed to address challenges in the [TEKSI](https://github.com/TESKI) project, an open-source GIS for network management based on [QGIS](http://qgis.org/fr/site/).
61
+ PUM was developed to address challenges in the [TEKSI](https://github.com/TEKSI) project, an open-source GIS for network management based on [QGIS](http://qgis.org/).
@@ -22,4 +22,4 @@ PUM (PostgreSQL Upgrades Manager) is a robust database migration management tool
22
22
 
23
23
  Managing database migrations in a Version Control System (VCS) can be challenging, especially for production databases. PUM simplifies this process by embedding version metadata directly into the database, enabling efficient tracking and application of migrations.
24
24
 
25
- PUM was developed to address challenges in the [TEKSI](https://github.com/TESKI) project, an open-source GIS for network management based on [QGIS](http://qgis.org/fr/site/).
25
+ PUM was developed to address challenges in the [TEKSI](https://github.com/TEKSI) project, an open-source GIS for network management based on [QGIS](http://qgis.org/).
@@ -17,4 +17,4 @@ PUM (PostgreSQL Upgrades Manager) is a robust database migration management tool
17
17
 
18
18
  Managing database migrations in a Version Control System (VCS) can be challenging, especially for production databases. PUM simplifies this process by embedding version metadata directly into the database, enabling efficient tracking and application of migrations.
19
19
 
20
- PUM was developed to address challenges in the [TEKSI](https://github.com/TESKI) project, an open-source GIS for network management based on [QGIS](http://qgis.org/fr/site/).
20
+ PUM was developed to address challenges in the [TEKSI](https://github.com/TEKSI) project, an open-source GIS for network management based on [QGIS](http://qgis.org/).
@@ -349,7 +349,8 @@ def cli() -> int: # noqa: PLR0912
349
349
  demo_data=args.demo_data,
350
350
  )
351
351
  conn.commit()
352
- upg.install_demo_data(name=args.demo_data, connection=conn, parameters=parameters)
352
+ if args.demo_data:
353
+ upg.install_demo_data(name=args.demo_data, connection=conn, parameters=parameters)
353
354
  elif args.command == "role":
354
355
  if not args.action:
355
356
  logger.error(
@@ -18,7 +18,6 @@ from .config_model import ConfigModel
18
18
  from .hook import HookHandler
19
19
  import tempfile
20
20
  import sys
21
- import atexit
22
21
 
23
22
 
24
23
  try:
@@ -250,6 +249,15 @@ class PumConfig:
250
249
  """Return a dictionary of demo data files defined in the configuration."""
251
250
  return {dm.name: dm.file for dm in self.config.demo_data}
252
251
 
252
+ def __del__(self):
253
+ # Cleanup temporary directories and sys.path modifications
254
+ if self.dependency_path:
255
+ # Remove from sys.path if present
256
+ sys.path = [p for p in sys.path if p != str(self.dependency_path)]
257
+ # Remove the directory if it exists and is a TemporaryDirectory
258
+ if hasattr(self, "_temp_dir") and self._temp_dir:
259
+ self.dependency_tmp.cleanup()
260
+
253
261
  def validate(self, install_dependencies: bool = False) -> None:
254
262
  """Validate the changelogs and hooks.
255
263
 
@@ -258,16 +266,10 @@ class PumConfig:
258
266
  """
259
267
 
260
268
  if install_dependencies and self.config.dependencies:
261
- temp_dir = tempfile.TemporaryDirectory()
262
- self.dependency_path = Path(temp_dir.name)
269
+ self.dependency_tmp = tempfile.TemporaryDirectory()
270
+ self.dependency_path = Path(self.dependency_tmp.name)
263
271
  sys.path.insert(0, str(self.dependency_path))
264
272
 
265
- def cleanup():
266
- sys.path = [p for p in sys.path if p != str(self.dependency_path)]
267
- temp_dir.cleanup()
268
-
269
- atexit.register(cleanup)
270
-
271
273
  parameter_defaults = {}
272
274
  for parameter in self.config.parameters:
273
275
  parameter_defaults[parameter.name] = psycopg.sql.Literal(parameter.default)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pum
3
- Version: 1.1.1
3
+ Version: 1.1.3
4
4
  Summary: Pum stands for "Postgres Upgrades Manager". It is a Database migration management tool very similar to flyway-db or Liquibase, based on metadata tables.
5
5
  Author-email: Denis Rouzaud <denis@opengis.ch>
6
6
  License-Expression: GPL-2.0-or-later
@@ -58,4 +58,4 @@ PUM (PostgreSQL Upgrades Manager) is a robust database migration management tool
58
58
 
59
59
  Managing database migrations in a Version Control System (VCS) can be challenging, especially for production databases. PUM simplifies this process by embedding version metadata directly into the database, enabling efficient tracking and application of migrations.
60
60
 
61
- PUM was developed to address challenges in the [TEKSI](https://github.com/TESKI) project, an open-source GIS for network management based on [QGIS](http://qgis.org/fr/site/).
61
+ PUM was developed to address challenges in the [TEKSI](https://github.com/TEKSI) project, an open-source GIS for network management based on [QGIS](http://qgis.org/).
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