# Template with instructions
type: dagster_dbt.DbtProjectComponent  # Required
attributes:  # Optional: Attributes details
  project:  # Required: The path to the dbt project or a mapping defining a DbtProject
    # Choose one of the following types:
    # Option 1 - DbtProjectArgsModel:
    # project_dir: <string>  # Optional: 
    # target_path: <string>  # Optional: 
    # profiles_dir: <string>  # Optional: 
    # profile: <string>  # Optional: 
    # target: <string>  # Optional: 
    # packaged_project_dir: <string>  # Optional: 
    # state_path: <string>  # Optional: 
    # prepare_project_cli_args: <one of: array of string, string>  # Optional: 
    #
    # Option 2 - RemoteGitDbtProjectManagerModel:
    # repo_url: <string>  # Optional: 
    # repo_relative_path: <string>  # Optional: The relative path to the dbt project within the repository.
    # token: <string>  # Optional: Token for authenticating to the provided repository.
    # profile: <string>  # Optional: The profile to use for the dbt project.
    # target: <string>  # Optional: The target to use for the dbt project.
    #
  cli_args: <one of: array of item, string>  # Optional: Arguments to pass to the dbt CLI when executing. Defaults to `['build']`.
  include_metadata: <one of: array of string, string>  # Optional: Optionally include additional metadata in materializations generated while executing your dbt models
  op:  # Optional: Op related arguments to set on the generated @dbt_assets
    name: <string>  # Optional: 
    tags: <one of: object, string>  # Optional: 
    description: <string>  # Optional: 
    pool: <string>  # Optional: 
    backfill_policy:  # Optional: 
      # Choose one of the following types:
      # Option 1 - SingleRunBackfillPolicyModel:
      # type: <string>  # Optional: 
      #
      # Option 2 - MultiRunBackfillPolicyModel:
      # type: <string>  # Optional: 
      # max_partitions_per_run: <integer>  # Optional: 
      #
  select: <string>  # Optional: The dbt selection string for models in the project you want to include.
  exclude: <string>  # Optional: The dbt selection string for models in the project you want to exclude.
  selector: <string>  # Optional: The dbt selector for models in the project you want to include.
  translation:  # Optional: 
    deps: <one of: array of string, string>  # Optional: The asset keys for the upstream assets that this asset depends on.
    description: <string>  # Optional: Human-readable description of the asset.
    metadata: <one of: object, string>  # Optional: Additional metadata for the asset.
    group_name: <string>  # Optional: Used to organize assets into groups, defaults to 'default'.
    skippable: <one of: boolean, string>  # Optional: Whether this asset can be omitted during materialization, causing downstream dependencies to skip.
    code_version: <string>  # Optional: A version representing the code that produced the asset. Increment this value when the code changes.
    owners: <one of: array of string, string>  # Optional: A list of strings representing owners of the asset. Each string can be a user's email address, or a team name prefixed with `team:`, e.g. `team:finops`.
    tags: <one of: object, string>  # Optional: Tags for filtering and organizing.
    kinds: <one of: array of string, string>  # Optional: A list of strings representing the kinds of the asset. These will be made visible in the Dagster UI.
    automation_condition: <string>  # Optional: The condition under which the asset will be automatically materialized.
    partitions_def:  # Optional: The partitions definition for the asset.
      # Choose one of the following types:
      # Option 1 - HourlyPartitionsDefinitionModel:
      # type: <string>  # Optional: 
      # start_date: <string>  # Optional: 
      # end_date: <string>  # Optional: 
      # timezone: <string>  # Optional: 
      # minute_offset: <integer>  # Optional: 
      #
      # Option 2 - DailyPartitionsDefinitionModel:
      # type: <string>  # Optional: 
      # start_date: <string>  # Optional: 
      # end_date: <string>  # Optional: 
      # timezone: <string>  # Optional: 
      # minute_offset: <integer>  # Optional: 
      # hour_offset: <integer>  # Optional: 
      #
      # Option 3 - WeeklyPartitionsDefinitionModel:
      # type: <string>  # Optional: 
      # start_date: <string>  # Optional: 
      # end_date: <string>  # Optional: 
      # timezone: <string>  # Optional: 
      # minute_offset: <integer>  # Optional: 
      # hour_offset: <integer>  # Optional: 
      # day_offset: <integer>  # Optional: 
      #
      # Option 4 - TimeWindowPartitionsDefinitionModel:
      # type: <string>  # Optional: 
      # start_date: <string>  # Optional: 
      # end_date: <string>  # Optional: 
      # timezone: <string>  # Optional: 
      # fmt: <string>  # Optional: 
      # cron_schedule: <string>  # Optional: 
      #
      # Option 5 - StaticPartitionsDefinitionModel:
      # type: <string>  # Optional: 
      # partition_keys:  # Optional: List of string items
        - <string>
      #
    freshness_policy: <string>  # Optional: The freshness policy for the asset.
    key: <string>  # Optional: 
    key_prefix: <one of: string, array of string>  # Optional: Prefix the existing asset key with the provided value.
  translation_settings:  # Optional: Allows enabling or disabling various features for translating dbt models in to Dagster assets.
    enable_asset_checks: <one of: boolean, string>  # Optional: 
    enable_duplicate_source_asset_keys: <one of: boolean, string>  # Optional: 
    enable_code_references: <one of: boolean, string>  # Optional: 
    enable_dbt_selection_by_name: <one of: boolean, string>  # Optional: 
    enable_source_tests_as_checks: <one of: boolean, string>  # Optional: 
    enable_source_metadata: <one of: boolean, string>  # Optional: 
    enable_dbt_views_as_virtual_assets: <one of: boolean, string>  # Optional: 
  prepare_if_dev: <one of: boolean, string>  # Optional: Whether to prepare the dbt project every time in `dagster dev` or `dg` cli calls.