match_spec#
Implements the query language for conda packages (a.k.a, MatchSpec).
The MatchSpec is the conda package specification (e.g. conda==23.3, python<3.7, cryptography * *_0) and is used to communicate the desired packages to install.
Classes#
| The query language for conda packages. | |
Functions#
| 
 | This should reliably pull the build string out of a version + build string combo. | 
| 
 | Examples | 
| 
 | |
| 
 | 
Attributes#
- class MatchSpec(optional=False, target=None, **kwargs)#
- The query language for conda packages. - Any of the fields that comprise a - PackageRecordcan be used to compose a- MatchSpec.- MatchSpeccan be composed with keyword arguments, where keys are any of the attributes of- PackageRecord. Values for keyword arguments are the exact values the attribute should match against. Many fields can also be matched against non-exact values--by including wildcard * and >/< ranges--where supported. Any non-specified field is the equivalent of a full wildcard match.- MatchSpeccan also be composed using a single positional argument, with optional keyword arguments. Keyword arguments also override any conflicting information provided in the positional argument. The positional argument can be either an existing- MatchSpecinstance or a string. Conda has historically had several string representations for equivalent- MatchSpec`s. This :class:`MatchSpecshould accept any existing valid spec string, and correctly compose a- MatchSpecinstance.- A series of rules are now followed for creating the canonical string representation of a - MatchSpecinstance. The canonical string representation can generically be represented by- (channel(/subdir):(namespace):)name(version(build))[key1=value1,key2=value2] - where () indicate optional fields. The rules for constructing a canonical string representation are: - name (i.e. "package name") is required, but its value can be '*'. Its position is always outside the key-value brackets. 
- If version is an exact version, it goes outside the key-value brackets and is prepended by ==. If version is a "fuzzy" value (e.g. 1.11.*), it goes outside the key-value brackets with the .* left off and is prepended by =. Otherwise version is included inside key-value brackets. 
- If version is an exact version, and build is an exact value, build goes outside key-value brackets prepended by a =. Otherwise, build goes inside key-value brackets. build_string is an alias for build. 
- The namespace position is being held for a future conda feature. 
- If channel is included and is an exact value, a :: separator is ued between channel and name. channel can either be a canonical channel name or a channel url. In the canonical string representation, the canonical channel name will always be used. 
- If channel is an exact value and subdir is an exact value, subdir is appended to channel with a / separator. Otherwise, subdir is included in the key-value brackets. 
- Key-value brackets can be delimited by comma, space, or comma+space. Value can optionally be wrapped in single or double quotes, but must be wrapped if value contains a comma, space, or equal sign. The canonical format uses comma delimiters and single quotes. 
- When constructing a - MatchSpecinstance from a string, any key-value pair given inside the key-value brackets overrides any matching parameter given outside the brackets.
 - When - MatchSpecattribute values are simple strings, the are interpreted using the following conventions:- If the string begins with ^ and ends with $, it is converted to a regex. 
- If the string contains an asterisk (*), it is transformed from a glob to a regex. 
- Otherwise, an exact match to the string is sought. 
 - Examples - >>> str(MatchSpec(name='foo', build='py2*', channel='conda-forge')) 'conda-forge::foo[build=py2*]' >>> str(MatchSpec('foo 1.0 py27_0')) 'foo==1.0=py27_0' >>> str(MatchSpec('foo=1.0=py27_0')) 'foo==1.0=py27_0' >>> str(MatchSpec('conda-forge::foo[version=1.0.*]')) 'conda-forge::foo=1.0' >>> str(MatchSpec('conda-forge/linux-64::foo>=1.0')) "conda-forge/linux-64::foo[version='>=1.0']" >>> str(MatchSpec('*/linux-64::foo>=1.0')) "foo[subdir=linux-64,version='>=1.0']" - To fully-specify a package with a full, exact spec, the fields
- channel 
- subdir 
- name 
- version 
- build 
 
 - must be given as exact values. In the future, the namespace field will be added to this list. Alternatively, an exact spec is given by '*[md5=12345678901234567890123456789012]' or '*[sha256=f453db4ffe2271ec492a2913af4e61d4a6c118201f07de757df0eff769b65d2e]'. - property is_name_only_spec#
 - property optional#
 - property target#
 - property original_spec_str#
 - property name#
 - property strictness#
 - property spec#
 - property version#
 - property fn#
 - FIELD_NAMES = ('channel', 'subdir', 'name', 'version', 'build', 'build_number', 'track_features', 'features',...#
 - FIELD_NAMES_SET#
 - _MATCHER_CACHE#
 - classmethod from_dist_str(dist_str)#
 - get_exact_value(field_name)#
 - get_raw_value(field_name)#
 - get(field_name, default=None)#
 - dist_str()#
 - match(rec)#
- Accepts a PackageRecord or a dict, and matches can pull from any field in that record. Returns True for a match, and False for no match. 
 - _match_individual(record, field_name, match_component)#
 - _is_simple()#
 - _is_single()#
 - _to_filename_do_not_use()#
 - __repr__()#
- Return repr(self). 
 - __str__()#
- Return str(self). 
 - __json__()#
 - conda_build_form()#
 - __eq__(other)#
- Return self==value. 
 - __hash__()#
- Return hash(self). 
 - _hash_key()#
 - __contains__(field)#
 - _build_components(**kwargs)#
 - static _make_component(field_name, value)#
 - classmethod merge(match_specs, union=False)#
 - classmethod union(match_specs)#
 - _merge(other, union=False)#
 
- _parse_version_plus_build(v_plus_b)#
- This should reliably pull the build string out of a version + build string combo. .. rubric:: Examples - >>> _parse_version_plus_build("=1.2.3 0") ('=1.2.3', '0') >>> _parse_version_plus_build("1.2.3=0") ('1.2.3', '0') >>> _parse_version_plus_build(">=1.0 , < 2.0 py34_0") ('>=1.0,<2.0', 'py34_0') >>> _parse_version_plus_build(">=1.0 , < 2.0 =py34_0") ('>=1.0,<2.0', 'py34_0') >>> _parse_version_plus_build("=1.2.3 ") ('=1.2.3', None) >>> _parse_version_plus_build(">1.8,<2|==1.7") ('>1.8,<2|==1.7', None) >>> _parse_version_plus_build("* openblas_0") ('*', 'openblas_0') >>> _parse_version_plus_build("* *") ('*', '*') 
- _parse_legacy_dist(dist_str)#
- Examples - >>> _parse_legacy_dist("_license-1.1-py27_1.tar.bz2") ('_license', '1.1', 'py27_1') >>> _parse_legacy_dist("_license-1.1-py27_1") ('_license', '1.1', 'py27_1') 
- _parse_channel(channel_val)#
- _PARSE_CACHE#
- _parse_spec_str(spec_str)#
- class MatchInterface(value)#
- property raw_value#
 - abstract property exact_value#
- If the match value is an exact specification, returns the value. Otherwise returns None. 
 - abstract match(other)#
 - matches(value)#
 - merge(other)#
 - union(other)#
 
- class _StrMatchMixin#
- property exact_value#
 - __str__()#
- Return str(self). 
 - __repr__()#
- Return repr(self). 
 - __eq__(other)#
- Return self==value. 
 - __hash__()#
- Return hash(self). 
 
- class ExactStrMatch(value)#
- Bases: - _StrMatchMixin,- MatchInterface- __slots__ = ('_raw_value',)#
 - match(other)#
 
- class ExactLowerStrMatch(value)#
- Bases: - ExactStrMatch- match(other)#
 
- class GlobStrMatch(value)#
- Bases: - _StrMatchMixin,- MatchInterface- property exact_value#
- If the match value is an exact specification, returns the value. Otherwise returns None. 
 - property matches_all#
 - __slots__ = ('_raw_value', '_re_match')#
 - match(other)#
 
- class GlobLowerStrMatch(value)#
- Bases: - GlobStrMatch
- class SplitStrMatch(value)#
- Bases: - MatchInterface- property exact_value#
- If the match value is an exact specification, returns the value. Otherwise returns None. 
 - __slots__ = ('_raw_value',)#
 - _convert(value)#
 - match(other)#
 - __repr__()#
- Return repr(self). 
 - __str__()#
- Return str(self). 
 - __eq__(other)#
- Return self==value. 
 - __hash__()#
- Return hash(self). 
 
- class FeatureMatch(value)#
- Bases: - MatchInterface- property exact_value#
- If the match value is an exact specification, returns the value. Otherwise returns None. 
 - __slots__ = ('_raw_value',)#
 - _convert(value)#
 - match(other)#
 - __repr__()#
- Return repr(self). 
 - __str__()#
- Return str(self). 
 - __eq__(other)#
- Return self==value. 
 - __hash__()#
- Return hash(self). 
 
- class ChannelMatch(value)#
- Bases: - GlobStrMatch- match(other)#
 - __str__()#
- Return str(self). 
 - __repr__()#
- Return repr(self). 
 
- class CaseInsensitiveStrMatch(value)#
- Bases: - GlobLowerStrMatch- match(other)#
 
- _implementors#