dbt-common 1.29.0__tar.gz → 1.30.0__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 (105) hide show
  1. {dbt_common-1.29.0 → dbt_common-1.30.0}/CHANGELOG.md +14 -1
  2. {dbt_common-1.29.0 → dbt_common-1.30.0}/PKG-INFO +1 -1
  3. dbt_common-1.30.0/dbt_common/__about__.py +1 -0
  4. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/clients/system.py +3 -0
  5. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/record.py +14 -10
  6. dbt_common-1.29.0/dbt_common/__about__.py +0 -1
  7. {dbt_common-1.29.0 → dbt_common-1.30.0}/.gitignore +0 -0
  8. {dbt_common-1.29.0 → dbt_common-1.30.0}/LICENSE +0 -0
  9. {dbt_common-1.29.0 → dbt_common-1.30.0}/README.md +0 -0
  10. {dbt_common-1.29.0 → dbt_common-1.30.0}/codecov.yml +0 -0
  11. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/__init__.py +0 -0
  12. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/behavior_flags.py +0 -0
  13. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/clients/__init__.py +0 -0
  14. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/clients/_jinja_blocks.py +0 -0
  15. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/clients/agate_helper.py +0 -0
  16. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/clients/jinja.py +0 -0
  17. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/constants.py +0 -0
  18. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/context.py +0 -0
  19. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/__init__.py +0 -0
  20. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/config/__init__.py +0 -0
  21. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/config/base.py +0 -0
  22. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/config/materialization.py +0 -0
  23. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/config/metadata.py +0 -0
  24. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/config/properties.py +0 -0
  25. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/constraints.py +0 -0
  26. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/metadata.py +0 -0
  27. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/contracts/util.py +0 -0
  28. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/dataclass_schema.py +0 -0
  29. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/README.md +0 -0
  30. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/__init__.py +0 -0
  31. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/base_types.py +0 -0
  32. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/contextvars.py +0 -0
  33. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/event_handler.py +0 -0
  34. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/event_manager.py +0 -0
  35. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/event_manager_client.py +0 -0
  36. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/format.py +0 -0
  37. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/functions.py +0 -0
  38. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/helpers.py +0 -0
  39. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/interfaces.py +0 -0
  40. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/logger.py +0 -0
  41. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/types.py +0 -0
  42. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/events/types_pb2.py +0 -0
  43. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/__init__.py +0 -0
  44. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/base.py +0 -0
  45. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/cache.py +0 -0
  46. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/connection.py +0 -0
  47. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/contracts.py +0 -0
  48. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/events.py +0 -0
  49. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/jinja.py +0 -0
  50. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/macros.py +0 -0
  51. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/exceptions/system.py +0 -0
  52. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/helper_types.py +0 -0
  53. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/invocation.py +0 -0
  54. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/py.typed +0 -0
  55. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/semver.py +0 -0
  56. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/tests.py +0 -0
  57. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/ui.py +0 -0
  58. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/utils/__init__.py +0 -0
  59. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/utils/casting.py +0 -0
  60. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/utils/connection.py +0 -0
  61. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/utils/dict.py +0 -0
  62. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/utils/encoding.py +0 -0
  63. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/utils/executor.py +0 -0
  64. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/utils/formatting.py +0 -0
  65. {dbt_common-1.29.0 → dbt_common-1.30.0}/dbt_common/utils/jinja.py +0 -0
  66. {dbt_common-1.29.0 → dbt_common-1.30.0}/docs/README.md +0 -0
  67. {dbt_common-1.29.0 → dbt_common-1.30.0}/docs/arch/adr-0001-build-tooling.md +0 -0
  68. {dbt_common-1.29.0 → dbt_common-1.30.0}/docs/guides/record_replay.md +0 -0
  69. {dbt_common-1.29.0 → dbt_common-1.30.0}/pyproject.toml +0 -0
  70. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/agate/__init__.pyi +0 -0
  71. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/agate/data_types.pyi +0 -0
  72. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/colorama/__init__.pyi +0 -0
  73. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/isodate/__init__.pyi +0 -0
  74. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/__init__.pyi +0 -0
  75. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/config.pyi +0 -0
  76. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/__init__.pyi +0 -0
  77. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/const.pyi +0 -0
  78. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/helpers.pyi +0 -0
  79. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/__init__.pyi +0 -0
  80. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/code/__init__.pyi +0 -0
  81. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/code/builder.pyi +0 -0
  82. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/code/lines.pyi +0 -0
  83. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/helpers.pyi +0 -0
  84. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/mixin.pyi +0 -0
  85. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/types/__init__.pyi +0 -0
  86. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/types/common.pyi +0 -0
  87. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/types/pack.pyi +0 -0
  88. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/core/meta/types/unpack.pyi +0 -0
  89. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/dialect.pyi +0 -0
  90. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/exceptions.pyi +0 -0
  91. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/helper.pyi +0 -0
  92. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/jsonschema/__init__.pyi +0 -0
  93. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/jsonschema/annotations.pyi +0 -0
  94. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/jsonschema/builder.pyi +0 -0
  95. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/jsonschema/dialects.pyi +0 -0
  96. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/jsonschema/models.pyi +0 -0
  97. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/jsonschema/schema.pyi +0 -0
  98. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/mixins/__init__.pyi +0 -0
  99. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/mixins/dict.pyi +0 -0
  100. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/mixins/json.pyi +0 -0
  101. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/mixins/msgpack.pyi +0 -0
  102. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/mixins/orjson.pyi +0 -0
  103. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/mixins/toml.pyi +0 -0
  104. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/mixins/yaml.pyi +0 -0
  105. {dbt_common-1.29.0 → dbt_common-1.30.0}/third-party-stubs/mashumaro/types.pyi +0 -0
@@ -5,6 +5,20 @@
5
5
  - "Breaking changes" listed under a version may require action from end users or external maintainers when upgrading to that version.
6
6
  - Do not edit this file directly. This file is auto-generated using [changie](https://github.com/miniscruff/changie). For details on how to document a change, see [the contributing guide](https://github.com/dbt-labs/dbt-common/blob/main/CONTRIBUTING.md#adding-changelog-entry)
7
7
 
8
+ ## dbt-common 1.30.0 - September 11, 2025
9
+
10
+ ### Fixes
11
+
12
+ - Fix edge-case in system.rename that deleted source before moving cuasing FileNotFoundError ([#307](https://github.com/dbt-labs/dbt-common/issues/307))
13
+
14
+ ### Under the Hood
15
+
16
+ - Lock recordings.json during streamed recording ([#312](https://github.com/dbt-labs/dbt-common/issues/312))
17
+
18
+ ### Contributors
19
+ - [@ahaugerud](https://github.com/ahaugerud) ([#307](https://github.com/dbt-labs/dbt-common/issues/307))
20
+
21
+
8
22
  ## dbt-common 1.29.0 - September 04, 2025
9
23
 
10
24
  ### Security
@@ -14,7 +28,6 @@
14
28
  ### Contributors
15
29
  - [@joshuataylor](https://github.com/joshuataylor) ([#303](https://github.com/dbt-labs/dbt-common/pull/303))
16
30
 
17
-
18
31
  ## dbt-common 1.28.0 - August 14, 2025
19
32
 
20
33
  ### Dependencies
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dbt-common
3
- Version: 1.29.0
3
+ Version: 1.30.0
4
4
  Summary: The shared common utilities that dbt-core and adapter implementations use
5
5
  Project-URL: Homepage, https://github.com/dbt-labs/dbt-common
6
6
  Project-URL: Repository, https://github.com/dbt-labs/dbt-common.git
@@ -0,0 +1 @@
1
+ version = "1.30.0"
@@ -600,6 +600,9 @@ def rename(from_path: str, to_path: str, force: bool = False) -> None:
600
600
  to_path = convert_path(to_path)
601
601
  is_symlink = path_is_symlink(to_path)
602
602
 
603
+ if from_path == to_path:
604
+ return
605
+
603
606
  if os.path.exists(to_path) and force:
604
607
  if is_symlink:
605
608
  remove_file(to_path)
@@ -179,6 +179,7 @@ class Recorder:
179
179
 
180
180
  self._record_added = False
181
181
  self._recording_file: Optional[TextIO] = None
182
+ self._recording_file_lock = Lock()
182
183
  if mode == RecorderMode.RECORD and not in_memory:
183
184
  self._recording_file = open(current_recording_path, "w")
184
185
  self._recording_file.write("[")
@@ -200,16 +201,19 @@ class Recorder:
200
201
  self._counter += 1
201
202
 
202
203
  if self._recording_file is not None:
203
- if self._record_added:
204
- self._recording_file.write(",")
205
- try:
206
- dct = Recorder._get_tagged_dict(record, rec_cls_name)
207
- json.dump(dct, self._recording_file)
208
- self._record_added = True
209
- except Exception:
210
- json.dump(
211
- {"type": "RecordingError", "record_type": rec_cls_name}, self._recording_file
212
- )
204
+ # Lock recording file during streamed recording to avoid race conditions across recording threads
205
+ with self._recording_file_lock:
206
+ if self._record_added:
207
+ self._recording_file.write(",")
208
+ try:
209
+ dct = Recorder._get_tagged_dict(record, rec_cls_name)
210
+ json.dump(dct, self._recording_file)
211
+ self._record_added = True
212
+ except Exception:
213
+ json.dump(
214
+ {"type": "RecordingError", "record_type": rec_cls_name},
215
+ self._recording_file,
216
+ )
213
217
  else:
214
218
  if rec_cls_name not in self._records_by_type:
215
219
  self._records_by_type[rec_cls_name] = []
@@ -1 +0,0 @@
1
- version = "1.29.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes