Exemple #1
0
class hReview(Microformat):
    type = type_of('h-review')
    properties = jsl.DictField(
        required=True,
        properties={
            'name':
            string_array,
            'item':
            jsl.ArrayField(
                jsl.OneOfField([
                    jsl.StringField(),
                    jsl.DocumentField(hCard, as_ref=True),
                    jsl.DocumentField(hItem, as_ref=True),
                    jsl.DocumentField(hProduct, as_ref=True),
                    jsl.DocumentField(hEvent, as_ref=True),
                    jsl.DocumentField(hAdr, as_ref=True),
                    jsl.DocumentField(hGeo, as_ref=True),
                ])),
            'author':
            jsl.ArrayField(
                jsl.OneOfField(
                    [jsl.StringField(),
                     jsl.DocumentField(hCard, as_ref=True)])),
            'published':
            datetime_array,
            'rating':
            jsl.ArrayField(jsl.StringField()),
            'category':
            string_array,
            'url':
            uri_array,
            'content':
            content_array,
        },
    )
Exemple #2
0
class TargetInfo(jsl.Document):
    targetinfo = jsl.OneOfField([
        jsl.OneOfField([jsl.StringField(),
                        jsl.StringField()]),
        jsl.OneOfField([jsl.StringField(),
                        jsl.StringField()]),
        jsl.OneOfField([jsl.StringField(),
                        jsl.ArrayField(jsl.StringField())])
    ])
class LockedDependency(jsl.Document):
    class Options(object):
        definition_id = "metadata_locked_dependency"
        description = "Locked dependency description"

    name = jsl.StringField()
    version = jsl.StringField()
    specification = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    resolved = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    dependencies = jsl.ArrayField(
        jsl.DocumentField(jsl.RECURSIVE_REFERENCE_CONSTANT, as_ref=True))
Exemple #4
0
class TargetInfo(jsl.Document):
    docker = jsl.ArrayField([
        jsl.StringField(),
        jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    ])
    rsync = jsl.ArrayField([
        jsl.StringField(),
        jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    ])
    containers = jsl.ArrayField(
        [jsl.StringField(),
         jsl.ArrayField(jsl.StringField())])
Exemple #5
0
class ExtendsDefinition(jsl.Document):
    inputs = jsl.ArrayField(
        jsl.OneOfField([
            jsl.DocumentField(ExtendsChannelValue, as_ref=True),
            jsl.DocumentField(ExtendsChannelInputRef, as_ref=True)
        ]))
    outputs = jsl.ArrayField(
        jsl.OneOfField([
            jsl.DocumentField(ExtendsChannelValue, as_ref=True),
            jsl.DocumentField(ExtendsChannelOutputRef, as_ref=True)
        ]))
    name = jsl.StringField(required=True)
Exemple #6
0
class hEvent(Microformat):
    type = type_of('h-event')
    properties = jsl.DictField(
        required=True,
        properties={
            'name':
            string_array,
            'summary':
            string_array,
            'start':
            datetime_array,
            'end':
            datetime_array,
            'duration':
            string_array,
            'description':
            string_array,
            'url':
            uri_array,
            'category':
            string_array,
            'location':
            jsl.ArrayField(
                jsl.OneOfField([
                    jsl.StringField(),
                    jsl.DocumentField(hGeo, as_ref=True),
                    jsl.DocumentField(hAdr, as_ref=True),
                    jsl.DocumentField(hCard, as_ref=True),
                ])),
        },
    )
Exemple #7
0
class hCite(Microformat):
    type = type_of('h-cite')
    properties = jsl.DictField(
        required=True,
        properties={
            'name':
            string_array,
            'published':
            datetime_array,
            'author':
            jsl.ArrayField(
                jsl.OneOfField(
                    [jsl.StringField(),
                     jsl.DocumentField(hCard, as_ref=True)])),
            'url':
            uri_array,
            'uid':
            uri_array,
            'publication':
            string_array,
            'accessed':
            datetime_array,
            'content':
            content_array,
        },
    )
Exemple #8
0
class Disjunction(jsl.Document):
    terms = jsl.ArrayField(jsl.OneOfField([
        jsl.DocumentField("Conjunction", as_ref=True),
        jsl.DocumentField("Disjunction", as_ref=True),
        jsl.DocumentField("Literal", as_ref=True)
    ], required=True), required=True)
    type = jsl.StringField(pattern="^disjunction$")
class TermDocument(jsl.Document):
    term = jsl.OneOfField([
        jsl.DocumentField(Conjunction, as_ref=True),
        jsl.DocumentField(Disjunction, as_ref=True),
        jsl.DocumentField(Literal, as_ref=True)
    ],
                          required=True)
Exemple #10
0
class hAdr(Microformat):
    type = type_of('h-adr')
    properties = jsl.DictField(
        required=True,
        properties={
            'street-address':
            string_array,
            'extended-address':
            string_array,
            'post-office-box':
            string_array,
            'locality':
            string_array,
            'region':
            string_array,
            'postal-code':
            string_array,
            'country-name':
            string_array,
            'label':
            string_array,
            'geo':
            jsl.ArrayField(
                jsl.OneOfField(
                    [jsl.StringField(),
                     jsl.DocumentField(hGeo, as_ref=True)])),
            'latitude':
            latitude,
            'longitude':
            longitude,
            'altitude':
            altitude,
        },
    )
Exemple #11
0
class ComponentInfo(jsl.Document):
    class Options:
        description = "Information about a single component"
        definition_id = "component_info"

    blackduck_details = jsl.DocumentField(BlackduckDetails, as_ref=True, required=True)
    cve_details = jsl.ArrayField(jsl.DocumentField(CVEDetail, as_ref=True), required=True)
    ecosystem = jsl.StringField(required=True)
    github_details = jsl.DocumentField(GithubDetails, as_ref=True, required=True)
    id = jsl.StringField(required=True)
    latest_version = jsl.OneOfField([jsl.StringField(), jsl.NullField()], required=True)
    licenses = jsl.ArrayField(jsl.StringField(), required=True)
    name = jsl.StringField(required=True)
    package_dependents_count = jsl.NumberField(required=True)
    version = jsl.StringField(required=True)

    with jsl.Scope(lambda v: v >= ROLE_v1_1_0) as added_in_v1_1_0:
        added_in_v1_1_0.dependents_count = jsl.NumberField(required=True)

    with jsl.Scope(lambda v: v >= ROLE_v1_2_0) as added_in_v1_2_0:
        added_in_v1_2_0.relative_usage = jsl.StringField(required=True)

    with jsl.Scope(lambda v: v >= ROLE_v2_0_0) as added_in_v2_0_0:
        added_in_v2_0_0.redhat_usage = jsl.DocumentField(RedHatUsage, as_ref=True, required=True)

    with jsl.Scope(lambda v: v >= ROLE_v2_0_3) as added_in_v2_0_3:
        added_in_v2_0_3.metadata = jsl.DocumentField(ComponentMetadata, as_ref=True, required=True)
class ComponentAnalysis(JSLSchemaBaseWithRelease):
    class Options(object):
        definition_id = "component_analysis"
        description = "Software component analysis"

    ecosystem = jsl.StringField(
        description="Language ecosystem providing the component",
        required=True)
    package = jsl.StringField(description="Component name", required=True)
    version = jsl.StringField(description="Component version", required=True)
    latest_version = jsl.OneOfField(
        [jsl.StringField(), jsl.NullField()],
        description=
        "Latest version available of this component (null if unknown)",
        required=True)
    started_at = jsl.DateTimeField(
        description="Date/time component analysis was started", required=True)
    finished_at = jsl.DateTimeField(
        description="Date/time component analysis was finished", required=True)
    access_count = jsl.NumberField(
        description="Number of times this component has been queried",
        required=True)
    dependents_count = jsl.Var({
        lambda v: v >= ROLE_v1_1_0:
        jsl.NumberField(description="Number of dependent GitHub projects",
                        required=True)
    })

    analyses = jsl.DocumentField(AnalysisSet, as_ref=True, required=True)
    package_info = jsl.DictField(
        description="Additional information related to the package",
        additional_properties=True,
        required=False)
Exemple #13
0
class ParameterHelpLink(jsl.Document):
    link_text = jsl.StringField(required=True, default="Learn More")
    link_url_type = jsl.StringField(enum=["internal", "external"],
                                    required=True,
                                    default="external")
    link_url = jsl.OneOfField([jsl.UriField(required=True)], required=True)
    link_tip = jsl.StringField(required=False)
Exemple #14
0
class hRecipe(Microformat):
    type = type_of('h-recipe')
    properties = jsl.DictField(
        required=True,
        properties={
            'name':
            string_array,
            'ingredient':
            content_array,
            'yield':
            string_array,
            'instructions':
            content_array,
            'duration':
            string_array,
            'photo':
            photo_field,
            'summary':
            content_array,
            'author':
            jsl.ArrayField(
                jsl.OneOfField(
                    [jsl.StringField(),
                     jsl.DocumentField(hCard, as_ref=True)])),
            'published':
            datetime_array,
            'nutrition':
            string_array,
            'category':
            string_array,
        },
    )
Exemple #15
0
class AugeasLensProperties(jsl.Document):
    class Options(object):
        definition_id = 'AugeasLensProperties'

    name = jsl.StringField(required=True)
    value = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    properties = jsl.ArrayField(
        jsl.DocumentField(jsl.RECURSIVE_REFERENCE_CONSTANT))
class LockedDependency(jsl.Document):
    """JSL schema for locked dependency description."""
    class Options(object):
        """JSL schema for locked dependency description."""

        definition_id = "metadata_locked_dependency"
        description = "Locked dependency description"

    name = jsl.StringField()
    version = jsl.StringField()
    specification = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    resolved = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    dependencies = jsl.ArrayField(
        jsl.DocumentField(jsl.RECURSIVE_REFERENCE_CONSTANT, as_ref=True))
    with added_in(ROLE_v3_3_0) as added_in_v3_3_0:
        added_in_v3_3_0.subpackages = jsl.ArrayField(
            jsl.StringField())  # go glide
Exemple #17
0
class ActorDefinition(jsl.Document):
    inputs = jsl.ArrayField(jsl.DocumentField(ChannelSpec, as_ref=True))
    output = jsl.OneOfField([
        jsl.DocumentField(ChannelSpec, as_ref=True),
        jsl.ArrayField(jsl.DocumentField(ChannelSpec, as_ref=True))
    ])
    description = jsl.StringField()
    extends = jsl.DocumentField(ExtendsDefinition, as_ref=True)
    executor = None  # This needs to be defined on runtime and needs to be a jsl.OneOfField
class Dependency(jsl.Document):
    class Options(object):
        definition_id = 'dependency_object'
        description = 'Dependency Object'

    ecosystem = jsl.StringField(required=True)
    name = jsl.StringField(required=True)
    version = jsl.OneOfField([jsl.StringField(), jsl.NullField()], required=True)
    declaration = jsl.StringField(required=True)
    resolved_at = jsl.StringField(required=True)
class LinguistDetail(jsl.Document):
    class Options(object):
        definition_id = "linguist_details"
        description = "Details of Linguist run on one file"

    path = jsl.StringField(required=True)
    output = jsl.OneOfField(
        [jsl.DocumentField(LinguistOutput, as_ref=True), jsl.NullField()],
        required=True
    )
    type = jsl.ArrayField(jsl.StringField(), required=True)
Exemple #20
0
class hReviewAggregate(Microformat):
    type = type_of('h-review-aggregate')
    properties = jsl.DictField(
        required=True,
        properties={
            'name':
            string_array,
            'rating':
            jsl.ArrayField(
                jsl.OneOfField([
                    jsl.StringField(),
                    jsl.DocumentField(hRating, as_ref=True)
                ])),
            'item':
            jsl.ArrayField(
                jsl.OneOfField([
                    jsl.StringField(),
                    jsl.DocumentField(hCard, as_ref=True),
                    jsl.DocumentField(hItem, as_ref=True),
                    jsl.DocumentField(hProduct, as_ref=True),
                    jsl.DocumentField(hEvent, as_ref=True),
                    jsl.DocumentField(hAdr, as_ref=True),
                    jsl.DocumentField(hGeo, as_ref=True),
                ])),
            'average':
            string_array,
            'best':
            string_array,
            'worst':
            string_array,
            'count':
            string_array,
            'votes':
            string_array,
            'category':
            string_array,
            'url':
            uri_array,
        },
    )
class MOTable(jsl.Document):
    name = jsl.StringField(required=True, description='Name of the table')
    file_name_prefix = jsl.StringField(
        required=True, description='The file name prefix used for this table.')
    description = jsl.StringField(
        description='Data dictionary entry for this table')
    primary_key = jsl.OneOfField(
        [jsl.StringField(), jsl.BooleanField(enum=[False])],
        description='The name of the primary key of this table '
        'or false if the table fails to have one')
    fields = jsl.ArrayField(
        jsl.OneOfField([
            jsl.DocumentField(MOStringField, as_ref=True),
            jsl.DocumentField(MODateField, as_ref=True),
            jsl.DocumentField(MOIntegerField, as_ref=True),
            jsl.DocumentField(MOBooleanField, as_ref=True),
            jsl.DocumentField(MODecimalField, as_ref=True),
            jsl.DocumentField(MOForeignKeyField, as_ref=True)
        ]),
        required=True,
        min_items=1,
        description='The ordered list of fields as they will appear in the file'
    )
Exemple #22
0
class hProduct(Microformat):
    type = type_of('h-product')
    properties = jsl.DictField(
        required=True,
        properties={
            'name':
            string_array,
            'photo':
            photo_field,
            'brand':
            jsl.ArrayField(
                jsl.OneOfField(
                    [jsl.StringField(),
                     jsl.DocumentField(hCard, as_ref=True)])),
            'category':
            string_array,
            'description':
            content_array,
            'url':
            uri_array,
            'identifier':
            jsl.ArrayField(
                jsl.DictField(properties={
                    'type': jsl.StringField(),
                    'value': jsl.StringField()
                })),
            'review':
            jsl.ArrayField(
                jsl.OneOfField([
                    jsl.StringField(),
                    jsl.DocumentField('hReview', as_ref=True),
                    jsl.DocumentField('hReviewAggregate', as_ref=True),
                ])),
            'price':
            string_array,
        },
    )
Exemple #23
0
class ModularAlert(jsl.Document):
    short_name = jsl.StringField(required=True)
    label = jsl.StringField(required=True)
    description = jsl.StringField(required=False)
    icon_path = jsl.StringField(required=False)
    largeIcon = jsl.StringField(required=False)
    smallIcon = jsl.StringField(required=False)
    code = jsl.StringField(required=False)
    uuid = jsl.StringField(required=False)
    active_response = jsl.DictField(
        required=False,
        additional_properties=True,
        properties={
            "supports_adhoc":
            jsl.BooleanField(required=False),
            "drilldown_uri":
            jsl.StringField(required=False),
            "group":
            jsl.ArrayField(jsl.StringField(), required=False, min_items=1),
            "category":
            jsl.ArrayField(jsl.StringField(), required=False, min_items=1),
            "task":
            jsl.ArrayField(jsl.StringField(), required=True, min_items=1),
            "subject":
            jsl.ArrayField(jsl.StringField(), required=True, min_items=1),
            "index":
            jsl.StringField(required=False, pattern=r"^[\w\-:]{0,50}$"),
            "sourcetype":
            jsl.StringField(required=False, pattern=r"^[\w\-:]{0,50}$"),
            "technology":
            jsl.ArrayField(jsl.DocumentField(Technology, as_ref=True),
                           required=True,
                           min_items=1)
        })
    parameters = jsl.ArrayField(jsl.OneOfField([
        jsl.DocumentField(CheckboxParameter, as_ref=True),
        jsl.DocumentField(DropdownlistParameter, as_ref=True),
        jsl.DocumentField(RadioParameter, as_ref=True),
        jsl.DocumentField(PasswordParameter, as_ref=True),
        jsl.DocumentField(TextareaParameter, as_ref=True),
        jsl.DocumentField(TextParameter, as_ref=True),
        jsl.DocumentField(SplunksearchdropdownParameter, as_ref=True)
    ]),
                                required=False)
    alert_props = jsl.DocumentField(ModularAlertProps,
                                    as_ref=True,
                                    required=False)
Exemple #24
0
class MicroformatsDocument(jsl.Document):
    class Options:
        additional_properties = True

    items = jsl.ArrayField(
        jsl.OneOfField([
            jsl.DocumentField(hGeo, as_ref=True),
            jsl.DocumentField(hAdr, as_ref=True),
            jsl.DocumentField(hCard, as_ref=True),
            jsl.DocumentField(hItem, as_ref=True),
            jsl.DocumentField(hProduct, as_ref=True),
            jsl.DocumentField(hEntry, as_ref=True),
            jsl.DocumentField(hEvent, as_ref=True),
            jsl.DocumentField(hReview, as_ref=True),
            jsl.DocumentField(hReviewAggregate, as_ref=True),
            jsl.DocumentField(hRecipe, as_ref=True),
            jsl.DocumentField(hResume, as_ref=True),
            jsl.DocumentField(hFeed, as_ref=True),
        ]))
Exemple #25
0
class hFeed(Microformat):
    type = type_of('h-feed')
    properties = jsl.DictField(
        required=True,
        properties={
            'name':
            string_array,
            'author':
            jsl.ArrayField(
                jsl.OneOfField(
                    [jsl.StringField(),
                     jsl.DocumentField(hCard, as_ref=True)])),
            'url':
            uri_array,
            'photo':
            photo_field,
            'summary':
            content_array,
            'children':
            jsl.ArrayField(jsl.DocumentField(hEntry, as_ref=True)),
        },
    )
Exemple #26
0
class hResume(Microformat):
    type = type_of('h-resume')
    properties = jsl.DictField(
        required=True,
        properties={
            'name':
            string_array,
            'summary':
            content_array,
            'contact':
            jsl.ArrayField(
                jsl.OneOfField(
                    [jsl.StringField(),
                     jsl.DocumentField(hCard, as_ref=True)])),
            'education':
            jsl.ArrayField(jsl.DocumentField(hEvent, as_ref=True)),
            'experience':
            jsl.ArrayField(jsl.DocumentField(hEvent, as_ref=True)),
            'skill':
            string_array,
            'affiliation':
            jsl.ArrayField(jsl.DocumentField(hCard, as_ref=True)),
        },
    )
Exemple #27
0
class MercatorResult(JSLSchemaBaseWithRelease):
    """JSL schema for Mercator worker results."""

    class Options(object):
        """JSL schema for Mercator worker results."""

        definition_id = "metadata"
        description = "Result of Mercator worker"

    # TODO: Any ideas how to reuse MetadataDict here ?
    with jsl.Scope(lambda v: v in (ROLE_v1_0_1, ROLE_v1_1_0)) as v1_0_1_v1_1_0:
        v1_0_1_v1_1_0.npm_shrinkwrap = jsl.OneOfField(
            [jsl.DocumentField(NpmShrinkwrap, as_ref=True), jsl.NullField()])
    with jsl.Scope(lambda v: v < ROLE_v1_1_0) as before_v1_1_0:
        before_v1_1_0.maintainers = jsl.OneOfField(
            [jsl.ArrayField(jsl.DocumentField(Maintainer, as_ref=True)), jsl.NullField()])
    with jsl.Scope(ROLE_v1_1_0) as v1_1_0:
        v1_1_0.contributors = jsl.OneOfField(
            [jsl.ArrayField(jsl.StringField()), jsl.NullField()])
        v1_1_0.maintainers = jsl.OneOfField(
            [jsl.ArrayField(jsl.StringField()), jsl.NullField()])
    with jsl.Scope(lambda v: v < ROLE_v2_0_0) as before_v2_0_0:
        # some of these may be missing in some ecosystem, so no required=True
        before_v2_0_0.author = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
        before_v2_0_0.bug_reporting = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
        before_v2_0_0.code_repository = jsl.OneOfField(
            [jsl.DocumentField(CodeRepository, as_ref=True), jsl.NullField()]
        )
        before_v2_0_0.declared_license = jsl.OneOfField(
            [jsl.StringField(), jsl.NullField()]
        )
        before_v2_0_0.dependencies = jsl.OneOfField(
            [jsl.ArrayField(jsl.StringField()), jsl.NullField()]
        )
        before_v2_0_0.description = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
        before_v2_0_0.devel_dependencies = jsl.OneOfField(
            [jsl.ArrayField(jsl.StringField()), jsl.NullField()]
        )
        # engines are NPM thingie and can contain lots of various keys
        # so we just allow pretty much anything in that dict
        before_v2_0_0.engines = jsl.OneOfField(
            [jsl.DictField(additional_properties=True), jsl.NullField()]
        )
        before_v2_0_0.files = jsl.OneOfField(
            [jsl.ArrayField(jsl.StringField()), jsl.NullField()]
        )
        before_v2_0_0.git_head = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
        before_v2_0_0.homepage = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
        before_v2_0_0.keywords = jsl.OneOfField(
            [jsl.ArrayField(jsl.StringField()), jsl.NullField()]
        )

        before_v2_0_0.maintainers = jsl.OneOfField(
                [jsl.ArrayField(jsl.StringField()), jsl.NullField()])

        # metadata is a rubygems thing and can contain arbitrary key/value pairs
        before_v2_0_0.metadata = jsl.OneOfField(
            [jsl.DictField(additional_properties=True), jsl.NullField()]
                )
        before_v2_0_0.name = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
        before_v2_0_0.platform = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
        before_v2_0_0.readme = jsl.OneOfField([jsl.StringField(), jsl.NullField()])

        before_v2_0_0.scripts = jsl.OneOfField(
            [jsl.DictField(additional_properties=True), jsl.NullField()]
        )
        before_v2_0_0.version = jsl.OneOfField([jsl.StringField(), jsl.NullField()])


# 2.0.0

    with jsl.Scope(ROLE_v2_0_0) as v2_0_0:
        v2_0_0.details = jsl.ArrayField(jsl.OneOfField(
            [jsl.DocumentField(MetadataDict, as_ref=True),
             jsl.DocumentField(NpmShrinkwrap, as_ref=True)]
        ))

# 2.1.0
    with added_in(ROLE_v2_1_0) as since_v2_1_0:
        since_v2_1_0.details = jsl.ArrayField(jsl.DocumentField(MetadataDict, as_ref=True))

# 3.1.0
    with added_in(ROLE_v3_1_0) as since_v3_1:
        since_v3_1.status = jsl.StringField(enum=["success", "error"], required=True)
        since_v3_1.summary = jsl.ArrayField(jsl.StringField(), required=True)
Exemple #28
0
class MetadataDict(jsl.Document):
    """JSL schema for generic metadata dict in details list."""

    class Options(object):
        """JSL schema for generic metadata dict in details list."""

        definition_id = "details_metadata"
        description = "generic metadata dict in details list"

    # some of these may be missing in some ecosystem, so no required=True
    author = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    bug_reporting = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    code_repository = jsl.OneOfField(
        [jsl.DocumentField(CodeRepository, as_ref=True), jsl.NullField()]
    )

    with removed_in(ROLE_v3_2_0) as removed_in_v3_2_0:
        removed_in_v3_2_0.declared_license = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    with added_in(ROLE_v3_2_0) as added_in_v3_2_0:
        added_in_v3_2_0.declared_licenses = jsl.OneOfField([jsl.ArrayField(jsl.StringField()),
                                                            jsl.NullField()])

    dependencies = jsl.OneOfField(
        [jsl.ArrayField(jsl.StringField()), jsl.NullField()]
    )
    description = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    devel_dependencies = jsl.OneOfField(
        [jsl.ArrayField(jsl.StringField()), jsl.NullField()]
    )
    # engines are NPM thingie and can contain lots of various keys
    # so we just allow pretty much anything in that dict
    engines = jsl.OneOfField(
        [jsl.DictField(additional_properties=True), jsl.NullField()]
    )
    files = jsl.OneOfField(
        [jsl.ArrayField(jsl.StringField()), jsl.NullField()]
    )
    git_head = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    homepage = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    keywords = jsl.OneOfField(
        [jsl.ArrayField(jsl.StringField()), jsl.NullField()]
    )

    # metadata is a rubygems thing and can contain arbitrary key/value pairs
    metadata = jsl.OneOfField(
        [jsl.DictField(additional_properties=True), jsl.NullField()]
    )
    name = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    platform = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    readme = jsl.OneOfField([jsl.StringField(), jsl.NullField()])
    scripts = jsl.OneOfField(
        [jsl.DictField(additional_properties=True), jsl.NullField()]
    )
    version = jsl.OneOfField([jsl.StringField(), jsl.NullField()])

    with jsl.Scope(lambda v: v in (ROLE_v1_0_1, ROLE_v1_1_0)) as v1_0_1_v1_1_0:
        v1_0_1_v1_1_0.npm_shrinkwrap = jsl.OneOfField(
            [jsl.DocumentField(NpmShrinkwrap, as_ref=True), jsl.NullField()])
    with jsl.Scope(lambda v: v < ROLE_v1_1_0) as before_v1_1_0:
        before_v1_1_0.maintainers = jsl.OneOfField(
                    [jsl.ArrayField(jsl.DocumentField(Maintainer, as_ref=True)), jsl.NullField()])
    with added_in(ROLE_v1_1_0) as since_v1_1_0:
        since_v1_1_0.contributors = jsl.OneOfField(
                    [jsl.ArrayField(jsl.StringField()), jsl.NullField()])
        since_v1_1_0.maintainers = jsl.OneOfField(
                    [jsl.ArrayField(jsl.StringField()), jsl.NullField()])
    with jsl.Scope(ROLE_v2_0_0) as v2_0_0:
        v2_0_0._system = jsl.StringField()
    with jsl.Scope(lambda v: ROLE_v2_1_0 <= v < ROLE_v3_0_0) as since_v2_1_0:
        since_v2_1_0._bayesian_dependency_tree_lock = jsl.OneOfField([
            jsl.DocumentField(LockFile, as_ref=True), jsl.NullField()
        ])
    with added_in(ROLE_v2_1_1) as since_v2_1_1:
        since_v2_1_1._tests_implemented = jsl.BooleanField()
    with added_in(ROLE_v3_0_0) as since_v3_0_0:
        since_v3_0_0.ecosystem = jsl.StringField()
        since_v3_0_0._dependency_tree_lock = jsl.OneOfField([
            jsl.DocumentField(LockFile, as_ref=True), jsl.NullField()
        ])
    with added_in(ROLE_v3_1_1) as since_v3_1_1:
        since_v3_1_1.path = jsl.OneOfField(
            [jsl.StringField(), jsl.NullField()],
            required=False
        )
Exemple #29
0
import json
import jsl


class SubTrialEndTime(jsl.Document):
    start_code = jsl.IntField(required=True)
    end_time = jsl.NumberField(minimum=0, required=True)


class SubTrialEndCode(jsl.Document):
    start_code = jsl.IntField(required=True)
    end_code = jsl.IntField(required=True)


SubTrial = jsl.OneOfField(
    [jsl.DocumentField(SubTrialEndTime),
     jsl.DocumentField(SubTrialEndCode)])


class CDTTableImportParamsSchemaCommon(jsl.Document):
    comment = jsl.StringField()
    subtrials = jsl.ArrayField(items=SubTrial,
                               unique_items=True,
                               required=True,
                               min_items=1)
    margin_before = jsl.NumberField(
        minimum=0, required=True)  # 0.3 by default in previous implementation.
    margin_after = jsl.NumberField(
        minimum=0, required=True)  # 0.3 by default in previous implementation.
    trial_to_condition_func = jsl.StringField(
        required=True
Exemple #30
0
class DockerInfo(jsl.Document):
    path = jsl.OneOfField([jsl.IntField(), jsl.StringField()])
    systemd_state = jsl.OneOfField([jsl.IntField(), jsl.StringField()])
    info = jsl.OneOfField([jsl.IntField(), jsl.StringField()])