Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
FileSystemPackageResource.key,
location=self.location,
name=self.name,
version=self.get("version"))
return package
# -- 'combined' resource types
class FileSystemCombinedPackageFamilyResource(PackageFamilyResource):
key = "filesystem.family.combined"
repository_type = "filesystem"
schema = Schema({
Optional("versions"): [
And(basestring, Use(Version))
],
Optional("version_overrides"): {
And(basestring, Use(VersionRange)): dict
}
})
@property
def ext(self):
return self.get("ext")
@property
def filepath(self):
filename = "%s.%s" % (self.name, self.ext)
return os.path.join(self.location, filename)
def _uri(self):
Optional("requires"): [package_request_schema],
Optional("run_on"): Or(basestring, [basestring]),
Optional("on_variants"): Or(
bool,
{
"type": "requires",
"value": [package_request_schema]
}
)
})
)
})
package_schema = Schema({
Optional("requires_rez_version"): And(basestring, Use(Version)),
Required("name"): basestring,
Optional("base"): basestring,
Optional("version"): Or(basestring,
And(Version, Use(str))),
Optional('description'): basestring,
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('hashed_variants'): bool,
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
@cached_class_property
def schema(cls):
from rez.utils.platform_ import platform_
# Note that this bakes the physical / logical cores at the time the
# config is read... which should be fine
return Or(
And(int, lambda x: x > 0),
And("physical_cores", Use(lambda x: platform_.physical_cores)),
And("logical_cores", Use(lambda x: platform_.logical_cores)),
)
"type": "requires",
"value": [package_request_schema]
}
)
})
)
})
package_schema = Schema({
Optional("requires_rez_version"): And(basestring, Use(Version)),
Required("name"): basestring,
Optional("base"): basestring,
Optional("version"): Or(basestring,
And(Version, Use(str))),
Optional('description'): basestring,
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('hashed_variants'): bool,
Optional('relocatable'): late_bound(Or(None, bool)),
Optional('cachable'): late_bound(Or(None, bool)),
Optional('uuid'): basestring,
try:
v = int(v)
except ValueError:
try:
v = float(v)
except ValueError:
pass
result[k] = v
return result
class OptionalDict(Dict):
schema = Or(And(None, Use(lambda x: {})),
dict)
class OptionalDictOrDictList(Setting):
schema = Or(And(None, Use(lambda x: [])),
And(dict, Use(lambda x: [x])),
[dict])
class SuiteVisibility_(Str):
@cached_class_property
def schema(cls):
from rez.resolved_context import SuiteVisibility
return Or(*(x.name for x in SuiteVisibility))
from rez.package_py_utils import expand_requirement
from rez.vendor.schema.schema import Schema, Optional, Or, Use, And
from rez.vendor.six import six
from rez.vendor.version.version import Version
from contextlib import contextmanager
import os
basestring = six.string_types[0]
# this schema will automatically harden request strings like 'python-*'; see
# the 'expand_requires' function for more info.
#
package_request_schema = Or(And(basestring, Use(expand_requirement)),
And(PackageRequest, Use(str)))
tests_schema = Schema({
Optional(basestring): Or(
Or(basestring, [basestring]),
extensible_schema_dict({
"command": Or(basestring, [basestring]),
Optional("requires"): [package_request_schema],
Optional("run_on"): Or(basestring, [basestring]),
Optional("on_variants"): Or(
bool,
{
"type": "requires",
"value": [package_request_schema]
}
)
})
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
variant_schema = Schema(variant_schema_dict)
# ------------------------------------------------------------------------------
# schemas for converting from POD datatypes
# ------------------------------------------------------------------------------
_commands_schema = Or(SourceCode, # commands as converted function
callable, # commands as function
basestring, # commands in text block
[basestring]) # old-style (rez-1) commands
_function_schema = Or(SourceCode, callable)
_package_request_schema = And(basestring, Use(PackageRequest))
package_pod_schema_dict = base_resource_schema_dict.copy()
large_string_dict = And(basestring, Use(lambda x: dedent(x).strip()))
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]),