Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
Optional('pre_test_commands'): source_code_schema,
Optional("help"): late_bound(help_schema),
Optional("uuid"): basestring,
Optional("config"): dict,
Optional('tests'): late_bound(tests_schema),
Optional("timestamp"): int,
Optional('revision'): object,
Optional('changelog'): basestring,
Optional('release_message'): Or(None, basestring),
Optional('previous_version'): version_schema,
Optional('previous_revision'): object,
Optional(basestring): object
})
def dump_package_data(data, buf, format_=FileFormat.py, skip_attributes=None):
"""Write package data to `buf`.
Args:
data (dict): Data source - must conform to `package_serialise_schema`.
buf (file-like object): Destination stream.
format_ (`FileFormat`): Format to dump data in.
skip_attributes (list of str): List of attributes to not print.
"""
if format_ == FileFormat.txt:
raise ValueError("'txt' format not supported for packages.")
data_ = dict((k, v) for k, v in data.items() if v is not None)
Optional("on_variants"): Or(
bool,
{
"type": "requires",
"value": [package_request_schema]
}
)
})
)
})
# package serialisation schema
package_serialise_schema = Schema({
Required("name"): basestring,
Optional("version"): version_schema,
Optional("description"): basestring,
Optional("authors"): [basestring],
Optional("tools"): late_bound([basestring]),
Optional('requires'): late_bound([package_request_schema]),
Optional('build_requires'): late_bound([package_request_schema]),
Optional('private_build_requires'): late_bound([package_request_schema]),
Optional('variants'): [[package_request_schema]],
Optional('hashed_variants'): bool,
Optional('relocatable'): late_bound(Or(None, bool)),
Optional('cachable'): late_bound(Or(None, bool)),
Optional('pre_commands'): source_code_schema,
package_family_schema_dict = base_resource_schema_dict.copy()
# schema common to both package and variant
#
tests_schema = Schema({
Optional(basestring): Or(
Or(basestring, [basestring]),
extensible_schema_dict({
"command": Or(basestring, [basestring]),
Optional("requires"): [
Or(PackageRequest, And(basestring, Use(PackageRequest)))
],
Optional("run_on"): Or(basestring, [basestring]),
Optional("on_variants"): Or(
bool,
{
"type": "requires",
"value": [
Or(PackageRequest, And(basestring, Use(PackageRequest)))
]
}
)
})
)
})
package_base_schema_dict = base_resource_schema_dict.copy()
package_base_schema_dict.update({
# basics
Optional("base"): basestring,
"type": "requires",
"value": [package_request_schema]
}
)
})
)
})
# package serialisation schema
package_serialise_schema = Schema({
Required("name"): basestring,
Optional("version"): version_schema,
Optional("description"): basestring,
Optional("authors"): [basestring],
Optional("tools"): late_bound([basestring]),
Optional('requires'): late_bound([package_request_schema]),
Optional('build_requires'): late_bound([package_request_schema]),
Optional('private_build_requires'): late_bound([package_request_schema]),
Optional('variants'): [[package_request_schema]],
Optional('hashed_variants'): bool,
Optional('relocatable'): late_bound(Or(None, bool)),
Optional('cachable'): late_bound(Or(None, bool)),
Optional('pre_commands'): source_code_schema,
Optional('commands'): source_code_schema,
Optional('post_commands'): source_code_schema,
Optional('pre_build_commands'): source_code_schema,
package_pod_schema_dict.update({
Optional("base"): basestring,
Optional("version"): And(basestring, Use(Version)),
Optional('description'): large_string_dict,
Optional('authors'): [basestring],
Optional('requires'): late_bound([_package_request_schema]),
Optional('build_requires'): late_bound([_package_request_schema]),
Optional('private_build_requires'): late_bound([_package_request_schema]),
# deliberately not possible to late bind
Optional('variants'): [[_package_request_schema]],
Optional('has_plugins'): late_bound(bool),
Optional('plugin_for'): late_bound([basestring]),
Optional('uuid'): basestring,
Optional('config'): And(dict,
Use(lambda x: create_config(overrides=x))),
Optional('tools'): late_bound([basestring]),
Optional('help'): late_bound(help_schema),
Optional('hashed_variants'): bool,
Optional('relocatable'): late_bound(Or(None, bool)),
Optional('cachable'): late_bound(Or(None, bool)),
Optional('tests'): late_bound(tests_schema),
Optional('pre_commands'): _commands_schema,
Optional('commands'): _commands_schema,
Optional('cachable'): late_bound(Or(None, bool)),
Optional('pre_commands'): source_code_schema,
Optional('commands'): source_code_schema,
Optional('post_commands'): source_code_schema,
Optional('pre_build_commands'): source_code_schema,
Optional('pre_test_commands'): source_code_schema,
Optional("help"): late_bound(help_schema),
Optional("uuid"): basestring,
Optional("config"): dict,
Optional('tests'): late_bound(tests_schema),
Optional("timestamp"): int,
Optional('revision'): object,
Optional('changelog'): basestring,
Optional('release_message'): Or(None, basestring),
Optional('previous_version'): version_schema,
Optional('previous_revision'): object,
Optional(basestring): object
})
def dump_package_data(data, buf, format_=FileFormat.py, skip_attributes=None):
"""Write package data to `buf`.
Args:
data (dict): Data source - must conform to `package_serialise_schema`.
buf (file-like object): Destination stream.
format_ (`FileFormat`): Format to dump data in.
def _to(value):
if isinstance(value, dict):
d = {}
for k, v in value.iteritems():
if isinstance(k, basestring):
k_ = Required(k) if required else Optional(k)
else:
k_ = k
d[k_] = _to(v)
if allow_custom_keys:
d[Optional(basestring)] = (Expand()
if inject_expansion else object)
schema = Schema(d)
else:
if type(value) is type and issubclass(value, Setting):
schema = value.schema
else:
schema = value
if inject_expansion:
schema = And(schema, Expand())
return schema
def _to(value):
if isinstance(value, dict):
d = {}
for k, v in value.items():
if isinstance(k, basestring):
k = Required(k) if required else Optional(k)
d[k] = _to(v)
if allow_custom_keys:
d[Optional(basestring)] = modifier or object
schema = Schema(d)
elif modifier:
schema = And(value, modifier)
else:
schema = value
return schema
def _to(value):
if isinstance(value, dict):
d = {}
for k, v in value.items():
if isinstance(k, basestring):
k = Required(k) if required else Optional(k)
d[k] = _to(v)
if allow_custom_keys:
d[Optional(basestring)] = modifier or object
schema = Schema(d)
elif modifier:
schema = And(value, modifier)
else:
schema = value
return schema