I wish I could find a way to have configuration fo...
# dagster-feedback
b
I wish I could find a way to have configuration for ops that would (when partially specified, failing to meet all of the required schema) • not fail to load the entire repository location (painful) • show the specified configuration in the run launcher and be editable • allow the ‘add missing scaffolding’ in the UI (which is super awesome) • block the launch run button when missing required config options I’ve tried ConfigMapping and the configured api, as well as using default options in the config_schema but none of these options show both what exists for the specified schema and what’s missing. I would love to see some sort of permissive (and transparent) partial config, but I’m not sure if that goes against the ethos of ‘failing early’ The closest I got was to specify a field as <str, or whatever> but default_value=None, this allows the repository to load, and errors early on execution, but is not transparent about what the default is set to. However, if in the run launcher I manually type in the op config to null, this is what I’d hope to see when I write default_value=None, rather than just hiding that the value is specified in the background (see image)
Copy code
from dagster import op, job, repository,Field

@op(config_schema={'example_config':str,'other_config':Field(str,default_value=None)})
def example_op():
    ...

def retreives_config_from_somewhere_else():
    #oops someone forgot to specify 'other_config'
    return {'ops':{'example_op':{'config':{'example_config':'test'}}}}

@job(config=retreives_config_from_somewhere_else())
def example_job():
    example_op()

@repository
def example_repo():
    return [example_job]
below fails to load the entire repository location, which is not great if we’re trying to manage a lot of similar but configurable jobs in the same repository. if someone fails to specify something, I’d rather it not block out the whole repo in dagit
Copy code
from dagster import op, job, repository

@op(config_schema={'example_config':str,'other_config':str})
def example_op():
    ...

def retreives_config_from_somewhere_else():
    #oops someone forgot to specify 'other_config'
    return {'ops':{'example_op':{'config':{'example_config':'test'}}}}

@job(config=retreives_config_from_somewhere_else())
def example_job():
    example_op()

@repository
def example_repo():
    return [example_job]
this of course loads fine, but does not allow partial configuration
Copy code
from dagster import op, job, repository

@op(config_schema={'example_config':str,'other_config':str})
def example_op():
    ...

@job
def example_job():
    example_op()

@repository
def example_repo():
    return [example_job]
p
cc @chris
c
Hi Brooke! When we added the config argument to job creation, partial config specification is something we explicitly decided not to enable at first. However, this does not preclude us from doing so in the future. I've created this issue to track, feel free to upvote / share your use case.
dagster yay 1
b
thank you!