dagster-dbt 0.28.1__tar.gz → 0.28.2__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.
- {dagster_dbt-0.28.1/dagster_dbt.egg-info → dagster_dbt-0.28.2}/PKG-INFO +3 -4
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/asset_decorator.py +2 -2
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud/asset_defs.py +2 -2
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud/utils.py +2 -2
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud_v2/asset_decorator.py +2 -1
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/compat.py +1 -2
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/components/dbt_project/component.py +64 -12
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/core/dbt_cli_invocation.py +1 -2
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/core/dbt_event_iterator.py +2 -2
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/dbt_project_manager.py +3 -1
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/include/pyproject.toml.jinja +1 -1
- dagster_dbt-0.28.2/dagster_dbt/version.py +1 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2/dagster_dbt.egg-info}/PKG-INFO +3 -4
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt.egg-info/requires.txt +1 -1
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/setup.py +2 -3
- dagster_dbt-0.28.1/dagster_dbt/version.py +0 -1
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/LICENSE +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/MANIFEST.in +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/README.md +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/__init__.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/asset_specs.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/asset_utils.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cli/__init__.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cli/app.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud/__init__.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud/cli.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud/ops.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud/resources.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud/types.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud_v2/__init__.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud_v2/cli_invocation.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud_v2/client.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud_v2/resources.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud_v2/run_handler.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud_v2/sensor_builder.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/cloud_v2/types.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/components/__init__.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/components/dbt_project/__init__.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/components/dbt_project/scaffolder.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/core/__init__.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/core/dbt_cli_event.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/core/resource.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/core/utils.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/dagster_dbt_translator.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/dbt_core_version.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/dbt_manifest.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/dbt_manifest_asset_selection.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/dbt_project.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/dbt_version.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/errors.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/freshness_builder.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/include/__init__.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/include/scaffold/__init__.py.jinja +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/include/scaffold/assets.py.jinja +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/include/scaffold/definitions.py.jinja +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/include/scaffold/project.py.jinja +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/include/scaffold/schedules.py.jinja +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/include/setup.py.jinja +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/metadata_set.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/py.typed +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt/utils.py +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt.egg-info/SOURCES.txt +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt.egg-info/dependency_links.txt +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt.egg-info/entry_points.txt +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt.egg-info/not-zip-safe +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/dagster_dbt.egg-info/top_level.txt +0 -0
- {dagster_dbt-0.28.1 → dagster_dbt-0.28.2}/setup.cfg +0 -0
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dagster-dbt
|
|
3
|
-
Version: 0.28.
|
|
3
|
+
Version: 0.28.2
|
|
4
4
|
Summary: A Dagster integration for dbt
|
|
5
5
|
Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-dbt
|
|
6
6
|
Author: Dagster Labs
|
|
7
7
|
Author-email: hello@dagsterlabs.com
|
|
8
8
|
License: Apache-2.0
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.10
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
13
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
14
|
Classifier: Operating System :: OS Independent
|
|
16
|
-
Requires-Python: >=3.
|
|
15
|
+
Requires-Python: >=3.10,<3.14
|
|
17
16
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: dagster==1.12.
|
|
17
|
+
Requires-Dist: dagster==1.12.2
|
|
19
18
|
Requires-Dist: dbt-core<1.11,>=1.7
|
|
20
19
|
Requires-Dist: gitpython
|
|
21
20
|
Requires-Dist: Jinja2
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import shlex
|
|
3
3
|
from argparse import ArgumentParser, Namespace
|
|
4
|
-
from collections.abc import Mapping, Sequence
|
|
4
|
+
from collections.abc import Callable, Mapping, Sequence
|
|
5
5
|
from contextlib import suppress
|
|
6
|
-
from typing import Any,
|
|
6
|
+
from typing import Any, Optional, Union, cast
|
|
7
7
|
|
|
8
8
|
import dagster._check as check
|
|
9
9
|
from dagster import (
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from enum import Enum
|
|
3
|
-
from typing import TYPE_CHECKING, Any
|
|
3
|
+
from typing import TYPE_CHECKING, Any, TypeAlias
|
|
4
4
|
|
|
5
5
|
from packaging import version
|
|
6
|
-
from typing_extensions import TypeAlias
|
|
7
6
|
|
|
8
7
|
# it's unclear exactly which dbt import adds a handler to the root logger, but something certainly does!
|
|
9
8
|
# on this line, we keep track of the set of handlers that are on the root logger BEFORE any dbt imports
|
|
@@ -6,7 +6,7 @@ from contextvars import ContextVar
|
|
|
6
6
|
from dataclasses import dataclass, field, replace
|
|
7
7
|
from functools import cached_property
|
|
8
8
|
from pathlib import Path
|
|
9
|
-
from typing import Annotated, Any, Literal, Optional, Union
|
|
9
|
+
from typing import Annotated, Any, Literal, Optional, TypeAlias, Union
|
|
10
10
|
|
|
11
11
|
import dagster as dg
|
|
12
12
|
from dagster._annotations import public
|
|
@@ -25,10 +25,17 @@ from dagster.components.utils.translation import (
|
|
|
25
25
|
)
|
|
26
26
|
from dagster_shared import check
|
|
27
27
|
from dagster_shared.serdes.objects.models.defs_state_info import DefsStateManagementType
|
|
28
|
-
from typing_extensions import TypeAlias
|
|
29
28
|
|
|
30
|
-
from dagster_dbt.
|
|
31
|
-
|
|
29
|
+
from dagster_dbt.asset_utils import (
|
|
30
|
+
DAGSTER_DBT_EXCLUDE_METADATA_KEY,
|
|
31
|
+
DAGSTER_DBT_SELECT_METADATA_KEY,
|
|
32
|
+
DAGSTER_DBT_SELECTOR_METADATA_KEY,
|
|
33
|
+
DBT_DEFAULT_EXCLUDE,
|
|
34
|
+
DBT_DEFAULT_SELECT,
|
|
35
|
+
DBT_DEFAULT_SELECTOR,
|
|
36
|
+
build_dbt_specs,
|
|
37
|
+
get_node,
|
|
38
|
+
)
|
|
32
39
|
from dagster_dbt.components.dbt_project.scaffolder import DbtProjectComponentScaffolder
|
|
33
40
|
from dagster_dbt.core.resource import DbtCliResource
|
|
34
41
|
from dagster_dbt.dagster_dbt_translator import (
|
|
@@ -193,6 +200,13 @@ class DbtProjectComponent(StateBackedComponent, dg.Resolvable):
|
|
|
193
200
|
examples=["tag:skip_dagster"],
|
|
194
201
|
),
|
|
195
202
|
] = DBT_DEFAULT_EXCLUDE
|
|
203
|
+
selector: Annotated[
|
|
204
|
+
str,
|
|
205
|
+
Resolver.default(
|
|
206
|
+
description="The dbt selector for models in the project you want to include.",
|
|
207
|
+
examples=["custom_selector"],
|
|
208
|
+
),
|
|
209
|
+
] = DBT_DEFAULT_SELECTOR
|
|
196
210
|
translation: Annotated[
|
|
197
211
|
Optional[TranslationFn[Mapping[str, Any]]],
|
|
198
212
|
TranslationFnResolver(template_vars_for_translation_fn=lambda data: {"node": data}),
|
|
@@ -218,11 +232,38 @@ class DbtProjectComponent(StateBackedComponent, dg.Resolvable):
|
|
|
218
232
|
@property
|
|
219
233
|
def defs_state_config(self) -> DefsStateConfig:
|
|
220
234
|
return DefsStateConfig(
|
|
221
|
-
key=f"
|
|
235
|
+
key=f"DbtProjectComponent[{self._project_manager.defs_state_discriminator}]",
|
|
222
236
|
management_type=DefsStateManagementType.LOCAL_FILESYSTEM,
|
|
223
237
|
refresh_if_dev=self.prepare_if_dev,
|
|
224
238
|
)
|
|
225
239
|
|
|
240
|
+
@property
|
|
241
|
+
def op_config_schema(self) -> Optional[type[dg.Config]]:
|
|
242
|
+
return None
|
|
243
|
+
|
|
244
|
+
@property
|
|
245
|
+
def config_cls(self) -> Optional[type[dg.Config]]:
|
|
246
|
+
"""Internal property that returns the config schema for the op.
|
|
247
|
+
|
|
248
|
+
Delegates to op_config_schema for backwards compatibility and consistency
|
|
249
|
+
with other component types.
|
|
250
|
+
"""
|
|
251
|
+
return self.op_config_schema
|
|
252
|
+
|
|
253
|
+
def _get_op_spec(self, project: DbtProject) -> OpSpec:
|
|
254
|
+
default = self.op or OpSpec(name=project.name)
|
|
255
|
+
# always inject required tags
|
|
256
|
+
return default.model_copy(
|
|
257
|
+
update=dict(
|
|
258
|
+
tags={
|
|
259
|
+
**(default.tags or {}),
|
|
260
|
+
**({DAGSTER_DBT_SELECT_METADATA_KEY: self.select} if self.select else {}),
|
|
261
|
+
**({DAGSTER_DBT_EXCLUDE_METADATA_KEY: self.exclude} if self.exclude else {}),
|
|
262
|
+
**({DAGSTER_DBT_SELECTOR_METADATA_KEY: self.selector} if self.selector else {}),
|
|
263
|
+
}
|
|
264
|
+
)
|
|
265
|
+
)
|
|
266
|
+
|
|
226
267
|
@cached_property
|
|
227
268
|
def translator(self) -> "DagsterDbtTranslator":
|
|
228
269
|
return DbtProjectComponentTranslator(self, self.translation_settings)
|
|
@@ -333,15 +374,26 @@ class DbtProjectComponent(StateBackedComponent, dg.Resolvable):
|
|
|
333
374
|
|
|
334
375
|
res_ctx = context.resolution_context
|
|
335
376
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
name=self.op.name if self.op else project.name,
|
|
340
|
-
op_tags=self.op.tags if self.op else None,
|
|
341
|
-
dagster_dbt_translator=self.translator,
|
|
377
|
+
asset_specs, check_specs = build_dbt_specs(
|
|
378
|
+
translator=validate_translator(self.translator),
|
|
379
|
+
manifest=validate_manifest(project.manifest_path),
|
|
342
380
|
select=self.select,
|
|
343
381
|
exclude=self.exclude,
|
|
344
|
-
|
|
382
|
+
selector=self.selector,
|
|
383
|
+
project=project,
|
|
384
|
+
io_manager_key=None,
|
|
385
|
+
)
|
|
386
|
+
op_spec = self._get_op_spec(project)
|
|
387
|
+
|
|
388
|
+
@dg.multi_asset(
|
|
389
|
+
specs=asset_specs,
|
|
390
|
+
check_specs=check_specs,
|
|
391
|
+
can_subset=True,
|
|
392
|
+
name=op_spec.name,
|
|
393
|
+
op_tags=op_spec.tags,
|
|
394
|
+
backfill_policy=op_spec.backfill_policy,
|
|
395
|
+
pool=op_spec.pool,
|
|
396
|
+
config_schema=self.config_cls.to_fields_dict() if self.config_cls else None,
|
|
345
397
|
)
|
|
346
398
|
def _fn(context: dg.AssetExecutionContext):
|
|
347
399
|
with _set_resolution_context(res_ctx):
|
|
@@ -8,7 +8,7 @@ import sys
|
|
|
8
8
|
from collections.abc import Iterator, Mapping, Sequence
|
|
9
9
|
from dataclasses import dataclass, field, replace
|
|
10
10
|
from pathlib import Path
|
|
11
|
-
from typing import Any, Final, NamedTuple, Optional, Union, cast
|
|
11
|
+
from typing import Any, Final, Literal, NamedTuple, Optional, Union, cast
|
|
12
12
|
|
|
13
13
|
import orjson
|
|
14
14
|
from dagster import (
|
|
@@ -24,7 +24,6 @@ from dagster import (
|
|
|
24
24
|
from dagster._annotations import public
|
|
25
25
|
from dagster._core.errors import DagsterExecutionInterruptedError
|
|
26
26
|
from packaging import version
|
|
27
|
-
from typing_extensions import Literal
|
|
28
27
|
|
|
29
28
|
from dagster_dbt.compat import BaseAdapter, BaseColumn, BaseRelation
|
|
30
29
|
from dagster_dbt.core.dbt_cli_event import (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
from collections.abc import Iterator
|
|
1
|
+
from collections.abc import Callable, Iterator
|
|
2
2
|
from concurrent.futures import ThreadPoolExecutor
|
|
3
|
-
from typing import TYPE_CHECKING, Any,
|
|
3
|
+
from typing import TYPE_CHECKING, Any, Optional, Union, cast
|
|
4
4
|
|
|
5
5
|
from dagster import (
|
|
6
6
|
AssetCheckResult,
|
|
@@ -9,7 +9,6 @@ from urllib.parse import quote, urlparse, urlunparse
|
|
|
9
9
|
from dagster._core.errors import DagsterInvalidDefinitionError
|
|
10
10
|
from dagster.components.resolved.base import Resolvable
|
|
11
11
|
from dagster.components.resolved.model import Resolver
|
|
12
|
-
from git import Repo
|
|
13
12
|
|
|
14
13
|
from dagster_dbt.dbt_project import DbtProject
|
|
15
14
|
|
|
@@ -151,6 +150,9 @@ class RemoteGitDbtProjectManager(DbtProjectManager, Resolvable):
|
|
|
151
150
|
return urlunparse(parts._replace(netloc=f"{token}@{parts.netloc}"))
|
|
152
151
|
|
|
153
152
|
def sync(self, state_path: Path) -> None:
|
|
153
|
+
# defer git import to avoid side-effects on import
|
|
154
|
+
from git import Repo
|
|
155
|
+
|
|
154
156
|
Repo.clone_from(self._get_clone_url(), self._local_project_dir(state_path), depth=1)
|
|
155
157
|
project = self.get_project(state_path)
|
|
156
158
|
project.preparer.prepare(project)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.28.2"
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dagster-dbt
|
|
3
|
-
Version: 0.28.
|
|
3
|
+
Version: 0.28.2
|
|
4
4
|
Summary: A Dagster integration for dbt
|
|
5
5
|
Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-dbt
|
|
6
6
|
Author: Dagster Labs
|
|
7
7
|
Author-email: hello@dagsterlabs.com
|
|
8
8
|
License: Apache-2.0
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.10
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
13
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
14
|
Classifier: Operating System :: OS Independent
|
|
16
|
-
Requires-Python: >=3.
|
|
15
|
+
Requires-Python: >=3.10,<3.14
|
|
17
16
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: dagster==1.12.
|
|
17
|
+
Requires-Dist: dagster==1.12.2
|
|
19
18
|
Requires-Dist: dbt-core<1.11,>=1.7
|
|
20
19
|
Requires-Dist: gitpython
|
|
21
20
|
Requires-Dist: Jinja2
|
|
@@ -28,7 +28,6 @@ setup(
|
|
|
28
28
|
description="A Dagster integration for dbt",
|
|
29
29
|
url="https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-dbt",
|
|
30
30
|
classifiers=[
|
|
31
|
-
"Programming Language :: Python :: 3.9",
|
|
32
31
|
"Programming Language :: Python :: 3.10",
|
|
33
32
|
"Programming Language :: Python :: 3.11",
|
|
34
33
|
"Programming Language :: Python :: 3.12",
|
|
@@ -38,9 +37,9 @@ setup(
|
|
|
38
37
|
],
|
|
39
38
|
packages=find_packages(exclude=["dagster_dbt_tests*"]),
|
|
40
39
|
include_package_data=True,
|
|
41
|
-
python_requires=">=3.
|
|
40
|
+
python_requires=">=3.10,<3.14",
|
|
42
41
|
install_requires=[
|
|
43
|
-
"dagster==1.12.
|
|
42
|
+
"dagster==1.12.2",
|
|
44
43
|
# Follow the version support constraints for dbt Core: https://docs.getdbt.com/docs/dbt-versions/core
|
|
45
44
|
f"dbt-core>=1.7,<{DBT_CORE_VERSION_UPPER_BOUND}",
|
|
46
45
|
"gitpython",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.28.1"
|
|
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
|