2023-03-17 09:22:31 +00:00
<!doctype html>
< html lang = "en" class = "no-js" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< link rel = "canonical" href = "https://preserves.dev/python/latest/values/" >
< link rel = "prev" href = "../text/" >
< link rel = "icon" href = "../assets/images/favicon.png" >
< meta name = "generator" content = "mkdocs-1.4.2, mkdocs-material-9.1.3" >
< title > Representations of Values - Python Preserves< / title >
< link rel = "stylesheet" href = "../assets/stylesheets/main.c4a75a56.min.css" >
< link rel = "stylesheet" href = "../assets/stylesheets/palette.a0c5b2b5.min.css" >
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
< link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback" >
< style > : root { --md-text-font : "Roboto" ; --md-code-font : "Roboto Mono" } < / style >
< link rel = "stylesheet" href = "../assets/_mkdocstrings.css" >
< script > _ _md _scope = new URL ( ".." , location ) , _ _md _hash = e => [ ... e ] . reduce ( ( e , _ ) => ( e << 5 ) - e + _ . charCodeAt ( 0 ) , 0 ) , _ _md _get = ( e , _ = localStorage , t = _ _md _scope ) => JSON . parse ( _ . getItem ( t . pathname + "." + e ) ) , _ _md _set = ( e , _ , t = localStorage , a = _ _md _scope ) => { try { t . setItem ( a . pathname + "." + e , JSON . stringify ( _ ) ) } catch ( e ) { } } < / script >
< / head >
< body dir = "ltr" data-md-color-scheme = "default" data-md-color-primary = "" data-md-color-accent = "" >
< input class = "md-toggle" data-md-toggle = "drawer" type = "checkbox" id = "__drawer" autocomplete = "off" >
< input class = "md-toggle" data-md-toggle = "search" type = "checkbox" id = "__search" autocomplete = "off" >
< label class = "md-overlay" for = "__drawer" > < / label >
< div data-md-component = "skip" >
< a href = "#representations-of-values" class = "md-skip" >
Skip to content
< / a >
< / div >
< div data-md-component = "announce" >
< / div >
< div data-md-color-scheme = "default" data-md-component = "outdated" hidden >
< / div >
< header class = "md-header md-header--shadow" data-md-component = "header" >
< nav class = "md-header__inner md-grid" aria-label = "Header" >
< a href = ".." title = "Python Preserves" class = "md-header__button md-logo" aria-label = "Python Preserves" data-md-component = "logo" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z" / > < / svg >
< / a >
< label class = "md-header__button md-icon" for = "__drawer" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z" / > < / svg >
< / label >
< div class = "md-header__title" data-md-component = "header-title" >
< div class = "md-header__ellipsis" >
< div class = "md-header__topic" >
< span class = "md-ellipsis" >
Python Preserves
< / span >
< / div >
< div class = "md-header__topic" data-md-component = "header-topic" >
< span class = "md-ellipsis" >
Representations of Values
< / span >
< / div >
< / div >
< / div >
< label class = "md-header__button md-icon" for = "__search" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z" / > < / svg >
< / label >
< div class = "md-search" data-md-component = "search" role = "dialog" >
< label class = "md-search__overlay" for = "__search" > < / label >
< div class = "md-search__inner" role = "search" >
< form class = "md-search__form" name = "search" >
< input type = "text" class = "md-search__input" name = "query" aria-label = "Search" placeholder = "Search" autocapitalize = "off" autocorrect = "off" autocomplete = "off" spellcheck = "false" data-md-component = "search-query" required >
< label class = "md-search__icon md-icon" for = "__search" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z" / > < / svg >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z" / > < / svg >
< / label >
< nav class = "md-search__options" aria-label = "Search" >
< button type = "reset" class = "md-search__icon md-icon" title = "Clear" aria-label = "Clear" tabindex = "-1" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z" / > < / svg >
< / button >
< / nav >
< / form >
< div class = "md-search__output" >
< div class = "md-search__scrollwrap" data-md-scrollfix >
< div class = "md-search-result" data-md-component = "search-result" >
< div class = "md-search-result__meta" >
Initializing search
< / div >
< ol class = "md-search-result__list" role = "presentation" > < / ol >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "md-header__source" >
< a href = "https://gitlab.com/preserves/preserves" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!-- ! Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --> < path d = "M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z" / > < / svg >
< / div >
< div class = "md-source__repository" >
GitLab
< / div >
< / a >
< / div >
< / nav >
< / header >
< div class = "md-container" data-md-component = "container" >
< main class = "md-main" data-md-component = "main" >
< div class = "md-main__inner md-grid" >
< div class = "md-sidebar md-sidebar--primary" data-md-component = "sidebar" data-md-type = "navigation" >
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--primary" aria-label = "Navigation" data-md-level = "0" >
< label class = "md-nav__title" for = "__drawer" >
< a href = ".." title = "Python Preserves" class = "md-nav__button md-logo" aria-label = "Python Preserves" data-md-component = "logo" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z" / > < / svg >
< / a >
Python Preserves
< / label >
< div class = "md-nav__source" >
< a href = "https://gitlab.com/preserves/preserves" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!-- ! Font Awesome Free 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --> < path d = "M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z" / > < / svg >
< / div >
< div class = "md-source__repository" >
GitLab
< / div >
< / a >
< / div >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = ".." class = "md-nav__link" >
Overview
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../api/" class = "md-nav__link" >
The top-level preserves package
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../binary/" class = "md-nav__link" >
Machine-oriented binary syntax
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../compare/" class = "md-nav__link" >
Comparing Values
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../error/" class = "md-nav__link" >
Codec errors
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../fold/" class = "md-nav__link" >
Traversing values
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../merge/" class = "md-nav__link" >
Merging values
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../path/" class = "md-nav__link" >
Preserves Path
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../schema/" class = "md-nav__link" >
Preserves Schema
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../text/" class = "md-nav__link" >
Human-readable text syntax
< / a >
< / li >
< li class = "md-nav__item md-nav__item--active" >
< input class = "md-nav__toggle md-toggle" type = "checkbox" id = "__toc" >
< label class = "md-nav__link md-nav__link--active" for = "__toc" >
Representations of Values
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< a href = "./" class = "md-nav__link md-nav__link--active" >
Representations of Values
< / a >
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
Table of contents
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#preserves.values" class = "md-nav__link" >
preserves.values
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Annotated" class = "md-nav__link" >
Annotated
< / a >
< nav class = "md-nav" aria-label = "Annotated" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#preserves.values.Annotated.peel" class = "md-nav__link" >
peel()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Annotated.strip" class = "md-nav__link" >
strip()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Embedded" class = "md-nav__link" >
Embedded
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Float" class = "md-nav__link" >
Float
< / a >
< nav class = "md-nav" aria-label = "Float" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#preserves.values.Float.from_bytes" class = "md-nav__link" >
from_bytes()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Float.to_bytes" class = "md-nav__link" >
to_bytes()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.ImmutableDict" class = "md-nav__link" >
ImmutableDict
< / a >
< nav class = "md-nav" aria-label = "ImmutableDict" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#preserves.values.ImmutableDict.from_kvs" class = "md-nav__link" >
from_kvs()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Record" class = "md-nav__link" >
Record
< / a >
< nav class = "md-nav" aria-label = "Record" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#preserves.values.Record.makeBasicConstructor" class = "md-nav__link" >
makeBasicConstructor()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Record.makeConstructor" class = "md-nav__link" >
makeConstructor()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.RecordConstructorInfo" class = "md-nav__link" >
RecordConstructorInfo
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Symbol" class = "md-nav__link" >
Symbol
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.annotate" class = "md-nav__link" >
annotate()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.cmp_floats" class = "md-nav__link" >
cmp_floats()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.dict_kvs" class = "md-nav__link" >
dict_kvs()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.is_annotated" class = "md-nav__link" >
is_annotated()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.preserve" class = "md-nav__link" >
preserve()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.strip_annotations" class = "md-nav__link" >
strip_annotations()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-sidebar md-sidebar--secondary" data-md-component = "sidebar" data-md-type = "toc" >
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
Table of contents
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#preserves.values" class = "md-nav__link" >
preserves.values
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Annotated" class = "md-nav__link" >
Annotated
< / a >
< nav class = "md-nav" aria-label = "Annotated" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#preserves.values.Annotated.peel" class = "md-nav__link" >
peel()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Annotated.strip" class = "md-nav__link" >
strip()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Embedded" class = "md-nav__link" >
Embedded
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Float" class = "md-nav__link" >
Float
< / a >
< nav class = "md-nav" aria-label = "Float" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#preserves.values.Float.from_bytes" class = "md-nav__link" >
from_bytes()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Float.to_bytes" class = "md-nav__link" >
to_bytes()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.ImmutableDict" class = "md-nav__link" >
ImmutableDict
< / a >
< nav class = "md-nav" aria-label = "ImmutableDict" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#preserves.values.ImmutableDict.from_kvs" class = "md-nav__link" >
from_kvs()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Record" class = "md-nav__link" >
Record
< / a >
< nav class = "md-nav" aria-label = "Record" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#preserves.values.Record.makeBasicConstructor" class = "md-nav__link" >
makeBasicConstructor()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Record.makeConstructor" class = "md-nav__link" >
makeConstructor()
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.RecordConstructorInfo" class = "md-nav__link" >
RecordConstructorInfo
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.Symbol" class = "md-nav__link" >
Symbol
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.annotate" class = "md-nav__link" >
annotate()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.cmp_floats" class = "md-nav__link" >
cmp_floats()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.dict_kvs" class = "md-nav__link" >
dict_kvs()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.is_annotated" class = "md-nav__link" >
is_annotated()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.preserve" class = "md-nav__link" >
preserve()
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#preserves.values.strip_annotations" class = "md-nav__link" >
strip_annotations()
< / a >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-content" data-md-component = "content" >
< article class = "md-content__inner md-typeset" >
< h1 id = "representations-of-values" > Representations of Values< / h1 >
< p > Python's strings, byte strings, integers, booleans, and double-precision floats stand directly
for their Preserves counterparts. Wrapper objects for < a class = "autorefs autorefs-internal" href = "#preserves.values.Float" > Float< / a > and
< a class = "autorefs autorefs-internal" href = "#preserves.values.Symbol" > Symbol< / a > complete the suite of atomic types.< / p >
< p > Python's lists and tuples correspond to Preserves < code > Sequence< / code > s, and dicts and sets to
< code > Dictionary< / code > and < code > Set< / code > values, respectively. Preserves < code > Record< / code > s are represented by
< a class = "autorefs autorefs-internal" href = "#preserves.values.Record" > Record< / a > objects. Finally, embedded values are represented by
< a class = "autorefs autorefs-internal" href = "#preserves.values.Embedded" > Embedded< / a > objects.< / p >
< div class = "doc doc-object doc-module" >
< a id = "preserves.values" > < / a >
< div class = "doc doc-contents first" >
< p > The < a class = "autorefs autorefs-internal" href = "#preserves.values" > preserves.values< / a > module implements the core representations of Preserves
< a href = "https://preserves.dev/preserves.html#semantics" > < code > Value< / code > s< / a > as Python values.< / p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-class" >
< h2 id = "preserves.values.Annotated" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > Annotated< / span > < span class = "p" > (< / span > < span class = "n" > item< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code > object< / code > < / p >
< p > A Preserves < code > Value< / code > along with a sequence of < code > Value< / code > s < em > annotating< / em > it. Compares equal to
the underlying < code > Value< / code > , ignoring the annotations. See the < a href = "https://preserves.dev/preserves-text.html#annotations" > specification document for more
about annotations< / a > .< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "kn" > import< / span > < span class = "nn" > preserves< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "o" > =< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span > < span class = "s1" > ' ' ' < / span >
< span class = "s1" > ... ; A comment< / span >
< span class = "s1" > ... [1 2 3]< / span >
< span class = "s1" > ... ' ' ' < / span > < span class = "p" > ,< / span > < span class = "n" > include_annotations< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span >
< span class = "o" > @< / span > < span class = "s1" > ' A comment' < / span > < span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > ,< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "o" > .< / span > < span class = "n" > item< / span >
< span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > ,< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "o" > .< / span > < span class = "n" > annotations< / span >
< span class = "p" > [< / span > < span class = "s1" > ' A comment' < / span > < span class = "p" > ]< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "o" > ==< / span > < span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > ,< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span >
< span class = "kc" > True< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "o" > ==< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span > < span class = "s1" > ' @xyz [1 2 3]' < / span > < span class = "p" > ,< / span > < span class = "n" > include_annotations< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span >
< span class = "kc" > True< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "n" > Traceback< / span > < span class = "p" > (< / span > < span class = "n" > most< / span > < span class = "n" > recent< / span > < span class = "n" > call< / span > < span class = "n" > last< / span > < span class = "p" > ):< / span >
< span class = "o" > ...< / span >
< span class = "ne" > TypeError< / span > < span class = "p" > :< / span > < span class = "s1" > ' Annotated' < / span > < span class = "nb" > object< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "n" > subscriptable< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "o" > .< / span > < span class = "n" > item< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "mi" > 1< / span >
< span class = "o" > > > > < / span > < span class = "nb" > type< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "o" > .< / span > < span class = "n" > item< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ])< / span >
< span class = "o" > < < / span > < span class = "k" > class< / span > < span class = "err" > ' < / span > < span class = "nc" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > values< / span > < span class = "o" > .< / span > < span class = "n" > Annotated< / span > < span class = "s1" > ' > < / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "o" > .< / span > < span class = "n" > item< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > annotations< / span >
< span class = "p" > []< / span >
< span class = "o" > > > > < / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > ))< / span >
< span class = "o" > @< / span > < span class = "s2" > " A comment" < / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "mi" > 2< / span > < span class = "mi" > 3< / span > < span class = "p" > ]< / span >
< span class = "o" > > > > < / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > ,< / span > < span class = "n" > include_annotations< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ))< / span >
< span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "mi" > 2< / span > < span class = "mi" > 3< / span > < span class = "p" > ]< / span >
< / code > < / pre > < / div >
< p > < strong > Attributes:< / strong > < / p >
< table >
< thead >
< tr >
< th > Name< / th >
< th > Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > item< / code > < / td >
< td >
< code > Value< / code >
< / td >
< td > < p > the underlying annotated < code > Value< / code > < / p > < / td >
< / tr >
< tr >
< td > < code > annotations< / code > < / td >
< td >
< code > list[Value]< / code >
< / td >
< td > < p > the annotations attached to < code > self.item< / code > < / p > < / td >
< / tr >
< / tbody >
< / table >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 575< / span >
< span class = "normal" > 576< / span >
< span class = "normal" > 577< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > item< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > annotations< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > item< / span > < span class = "o" > =< / span > < span class = "n" > item< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-function" >
< h3 id = "preserves.values.Annotated.peel" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > peel< / span > < span class = "p" > ()< / span > < / code >
< / h3 >
< div class = "doc doc-contents " >
< p > Calls < a class = "autorefs autorefs-internal" href = "#preserves.values.strip_annotations" > strip_annotations< / a > on < code > self< / code > with < code > depth=1< / code > .< / p >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 598< / span >
< span class = "normal" > 599< / span >
< span class = "normal" > 600< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > peel< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "w" > < / span > < span class = "sd" > " " " Calls [strip_annotations][preserves.values.strip_annotations] on `self` with `depth=1`." " " < / span >
< span class = "k" > return< / span > < span class = "n" > strip_annotations< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h3 id = "preserves.values.Annotated.strip" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > strip< / span > < span class = "p" > (< / span > < span class = "n" > depth< / span > < span class = "o" > =< / span > < span class = "n" > inf< / span > < span class = "p" > )< / span > < / code >
< / h3 >
< div class = "doc doc-contents " >
< p > Calls < a class = "autorefs autorefs-internal" href = "#preserves.values.strip_annotations" > strip_annotations< / a > on < code > self< / code > and < code > depth< / code > .< / p >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 594< / span >
< span class = "normal" > 595< / span >
< span class = "normal" > 596< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > strip< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > depth< / span > < span class = "o" > =< / span > < span class = "n" > inf< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "w" > < / span > < span class = "sd" > " " " Calls [strip_annotations][preserves.values.strip_annotations] on `self` and `depth`." " " < / span >
< span class = "k" > return< / span > < span class = "n" > strip_annotations< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > depth< / span > < span class = "p" > )< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "doc doc-object doc-class" >
< h2 id = "preserves.values.Embedded" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > Embedded< / span > < span class = "p" > (< / span > < span class = "n" > embeddedValue< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p > Representation of a Preserves < code > Embedded< / code > value. For more on the meaning and use of
embedded values, < a href = "https://preserves.dev/preserves.html#embeddeds" > see the specification< / a > .< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "kn" > import< / span > < span class = "nn" > io< / span >
< span class = "o" > > > > < / span > < span class = "n" > e< / span > < span class = "o" > =< / span > < span class = "n" > Embedded< / span > < span class = "p" > (< / span > < span class = "n" > io< / span > < span class = "o" > .< / span > < span class = "n" > StringIO< / span > < span class = "p" > (< / span > < span class = "s1" > ' some text' < / span > < span class = "p" > ))< / span >
< span class = "o" > > > > < / span > < span class = "n" > e< / span > < span class = "c1" > # doctest: +ELLIPSIS< / span >
< span class = "c1" > #!< _io.StringIO object at ...> < / span >
< span class = "o" > > > > < / span > < span class = "n" > e< / span > < span class = "o" > .< / span > < span class = "n" > embeddedValue< / span > < span class = "c1" > # doctest: +ELLIPSIS< / span >
< span class = "o" > < < / span > < span class = "n" > _io< / span > < span class = "o" > .< / span > < span class = "n" > StringIO< / span > < span class = "nb" > object< / span > < span class = "n" > at< / span > < span class = "o" > ...> < / span >
< / code > < / pre > < / div >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "kn" > import< / span > < span class = "nn" > preserves< / span >
< span class = "o" > > > > < / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > Embedded< / span > < span class = "p" > (< / span > < span class = "kc" > None< / span > < span class = "p" > )))< / span >
< span class = "n" > Traceback< / span > < span class = "p" > (< / span > < span class = "n" > most< / span > < span class = "n" > recent< / span > < span class = "n" > call< / span > < span class = "n" > last< / span > < span class = "p" > ):< / span >
< span class = "o" > ...< / span >
< span class = "ne" > TypeError< / span > < span class = "p" > :< / span > < span class = "n" > Cannot< / span > < span class = "n" > preserves< / span > < span class = "o" > -< / span > < span class = "nb" > format< / span > < span class = "p" > :< / span > < span class = "kc" > None< / span >
< span class = "o" > > > > < / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > Embedded< / span > < span class = "p" > (< / span > < span class = "kc" > None< / span > < span class = "p" > ),< / span > < span class = "n" > format_embedded< / span > < span class = "o" > =< / span > < span class = "k" > lambda< / span > < span class = "n" > x< / span > < span class = "p" > :< / span > < span class = "s1" > ' abcdef' < / span > < span class = "p" > ))< / span >
< span class = "c1" > #!" abcdef" < / span >
< / code > < / pre > < / div >
< p > < strong > Attributes:< / strong > < / p >
< table >
< thead >
< tr >
< th > Name< / th >
< th > Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > embeddedValue< / code > < / td >
< td >
< / td >
< td > < p > any Python value; could be a platform object, could be a representation of a
Preserves < code > Value< / code > , could be < code > None< / code > , could be anything!< / p > < / td >
< / tr >
< / tbody >
< / table >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 720< / span >
< span class = "normal" > 721< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > embeddedValue< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > embeddedValue< / span > < span class = "o" > =< / span > < span class = "n" > embeddedValue< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< div class = "doc doc-children" >
< / div >
< / div >
< / div >
< div class = "doc doc-object doc-class" >
< h2 id = "preserves.values.Float" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code > object< / code > < / p >
< p > Wrapper for treating a Python double-precision floating-point value as a
single-precision (32-bit) float, from Preserves' perspective. (Python lacks native
single-precision floating point support.)< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "mf" > 3.45< / span > < span class = "p" > )< / span >
< span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "mf" > 3.45< / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "kn" > import< / span > < span class = "nn" > preserves< / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "mf" > 3.45< / span > < span class = "p" > ))< / span >
< span class = "s1" > ' 3.45f' < / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "mf" > 3.45< / span > < span class = "p" > )< / span >
< span class = "s1" > ' 3.45' < / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span > < span class = "s1" > ' 3.45f' < / span > < span class = "p" > )< / span >
< span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "mf" > 3.45< / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span > < span class = "s1" > ' 3.45' < / span > < span class = "p" > )< / span >
< span class = "mf" > 3.45< / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > encode< / span > < span class = "p" > (< / span > < span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "mf" > 3.45< / span > < span class = "p" > ))< / span >
< span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x82< / span > < span class = "s1" > @< / span > < span class = "se" > \\\xcc\xcd< / span > < span class = "s1" > ' < / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > encode< / span > < span class = "p" > (< / span > < span class = "mf" > 3.45< / span > < span class = "p" > )< / span >
< span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x83< / span > < span class = "s1" > @< / span > < span class = "se" > \x0b\x99\x99\x99\x99\x99\x9a< / span > < span class = "s1" > ' < / span >
< / code > < / pre > < / div >
< p > < strong > Attributes:< / strong > < / p >
< table >
< thead >
< tr >
< th > Name< / th >
< th > Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > value< / code > < / td >
< td >
< code > float< / code >
< / td >
< td > < p > the double-precision representation of intended single-precision value< / p > < / td >
< / tr >
< / tbody >
< / table >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 69< / span >
< span class = "normal" > 70< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > value< / span > < span class = "o" > =< / span > < span class = "n" > value< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-function" >
< h3 id = "preserves.values.Float.from_bytes" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > from_bytes< / span > < span class = "p" > (< / span > < span class = "n" > bs< / span > < span class = "p" > )< / span > < / code >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-staticmethod" > < code > staticmethod< / code > < / small >
< / span >
< / h3 >
< div class = "doc doc-contents " >
< p > Converts a 4-byte-long byte string to a 32-bit single-precision floating point value
wrapped in a < a class = "autorefs autorefs-internal" href = "#preserves.values.Float" > Float< / a > instance. Takes care to preserve the
quiet/signalling bit-pattern of NaN values, unlike its < code > struct.unpack('> f', ...)< / code >
equivalent.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > Float< / span > < span class = "o" > .< / span > < span class = "n" > from_bytes< / span > < span class = "p" > (< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )< / span >
< span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "n" > nan< / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "n" > Float< / span > < span class = "o" > .< / span > < span class = "n" > from_bytes< / span > < span class = "p" > (< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > to_bytes< / span > < span class = "p" > ()< / span >
< span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span >
< span class = "o" > > > > < / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "n" > nan< / span >
< span class = "o" > > > > < / span > < span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ])< / span > < span class = "o" > .< / span > < span class = "n" > to_bytes< / span > < span class = "p" > ()< / span >
< span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\xc0\x00< / span > < span class = "s1" > {' < / span >
< span class = "o" > > > > < / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > pack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ])< / span >
< span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\xc0\x00< / span > < span class = "s1" > {' < / span >
< / code > < / pre > < / div >
< p > (Note well the difference between < code > 7f80007b< / code > and < code > 7fc0007b< / code > !)< / p >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 135< / span >
< span class = "normal" > 136< / span >
< span class = "normal" > 137< / span >
< span class = "normal" > 138< / span >
< span class = "normal" > 139< / span >
< span class = "normal" > 140< / span >
< span class = "normal" > 141< / span >
< span class = "normal" > 142< / span >
< span class = "normal" > 143< / span >
< span class = "normal" > 144< / span >
< span class = "normal" > 145< / span >
< span class = "normal" > 146< / span >
< span class = "normal" > 147< / span >
< span class = "normal" > 148< / span >
< span class = "normal" > 149< / span >
< span class = "normal" > 150< / span >
< span class = "normal" > 151< / span >
< span class = "normal" > 152< / span >
< span class = "normal" > 153< / span >
< span class = "normal" > 154< / span >
< span class = "normal" > 155< / span >
< span class = "normal" > 156< / span >
< span class = "normal" > 157< / span >
< span class = "normal" > 158< / span >
< span class = "normal" > 159< / span >
< span class = "normal" > 160< / span >
< span class = "normal" > 161< / span >
< span class = "normal" > 162< / span >
< span class = "normal" > 163< / span >
< span class = "normal" > 164< / span >
< span class = "normal" > 165< / span >
< span class = "normal" > 166< / span >
< span class = "normal" > 167< / span >
< span class = "normal" > 168< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "nd" > @staticmethod< / span >
< span class = "k" > def< / span > < span class = "nf" > from_bytes< / span > < span class = "p" > (< / span > < span class = "n" > bs< / span > < span class = "p" > ):< / span >
< span class = "w" > < / span > < span class = "sd" > " " " Converts a 4-byte-long byte string to a 32-bit single-precision floating point value< / span >
< span class = "sd" > wrapped in a [Float][preserves.values.Float] instance. Takes care to preserve the< / span >
< span class = "sd" > quiet/signalling bit-pattern of NaN values, unlike its `struct.unpack(' > f' , ...)`< / span >
< span class = "sd" > equivalent.< / span >
< span class = "sd" > ```python< / span >
< span class = "sd" > > > > Float.from_bytes(b' \\x7f\\x80\\x00{' )< / span >
< span class = "sd" > Float(nan)< / span >
< span class = "sd" > > > > Float.from_bytes(b' \\x7f\\x80\\x00{' ).to_bytes()< / span >
< span class = "sd" > b' \\x7f\\x80\\x00{' < / span >
< span class = "sd" > > > > struct.unpack(' > f' , b' \\x7f\\x80\\x00{' )[0]< / span >
< span class = "sd" > nan< / span >
< span class = "sd" > > > > Float(struct.unpack(' > f' , b' \\x7f\\x80\\x00{' )[0]).to_bytes()< / span >
< span class = "sd" > b' \\x7f\\xc0\\x00{' < / span >
< span class = "sd" > > > > struct.pack(' > f' , struct.unpack(' > f' , b' \\x7f\\x80\\x00{' )[0])< / span >
< span class = "sd" > b' \\x7f\\xc0\\x00{' < / span >
< span class = "sd" > ```< / span >
< span class = "sd" > (Note well the difference between `7f80007b` and `7fc0007b`!)< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > vf< / span > < span class = "o" > =< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > I' < / span > < span class = "p" > ,< / span > < span class = "n" > bs< / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > vf< / span > < span class = "o" > & < / span > < span class = "mh" > 0x7f800000< / span > < span class = "p" > )< / span > < span class = "o" > ==< / span > < span class = "mh" > 0x7f800000< / span > < span class = "p" > :< / span >
< span class = "c1" > # NaN or inf. Preserve quiet/signalling bit by manually expanding to double-precision.< / span >
< span class = "n" > sign< / span > < span class = "o" > =< / span > < span class = "n" > vf< / span > < span class = "o" > > > < / span > < span class = "mi" > 31< / span >
< span class = "n" > payload< / span > < span class = "o" > =< / span > < span class = "n" > vf< / span > < span class = "o" > & < / span > < span class = "mh" > 0x007fffff< / span >
< span class = "n" > dbs< / span > < span class = "o" > =< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > pack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > Q' < / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > sign< / span > < span class = "o" > < < < / span > < span class = "mi" > 63< / span > < span class = "p" > )< / span > < span class = "o" > |< / span > < span class = "mh" > 0x7ff0000000000000< / span > < span class = "o" > |< / span > < span class = "p" > (< / span > < span class = "n" > payload< / span > < span class = "o" > < < < / span > < span class = "mi" > 29< / span > < span class = "p" > ))< / span >
< span class = "k" > return< / span > < span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > d' < / span > < span class = "p" > ,< / span > < span class = "n" > dbs< / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ])< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "n" > bs< / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ])< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h3 id = "preserves.values.Float.to_bytes" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > to_bytes< / span > < span class = "p" > ()< / span > < / code >
< / h3 >
< div class = "doc doc-contents " >
< p > Converts this 32-bit single-precision floating point value to its binary32 format,
taking care to preserve the quiet/signalling bit-pattern of NaN values, unlike its
< code > struct.pack('> f', ...)< / code > equivalent.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > Float< / span > < span class = "o" > .< / span > < span class = "n" > from_bytes< / span > < span class = "p" > (< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )< / span >
< span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "n" > nan< / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "n" > Float< / span > < span class = "o" > .< / span > < span class = "n" > from_bytes< / span > < span class = "p" > (< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > to_bytes< / span > < span class = "p" > ()< / span >
< span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span >
< span class = "o" > > > > < / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "n" > nan< / span >
< span class = "o" > > > > < / span > < span class = "n" > Float< / span > < span class = "p" > (< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ])< / span > < span class = "o" > .< / span > < span class = "n" > to_bytes< / span > < span class = "p" > ()< / span >
< span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\xc0\x00< / span > < span class = "s1" > {' < / span >
< span class = "o" > > > > < / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > pack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\x80\x00< / span > < span class = "s1" > {' < / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ])< / span >
< span class = "sa" > b< / span > < span class = "s1" > ' < / span > < span class = "se" > \x7f\xc0\x00< / span > < span class = "s1" > {' < / span >
< / code > < / pre > < / div >
< p > (Note well the difference between < code > 7f80007b< / code > and < code > 7fc0007b< / code > !)< / p >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 91< / span >
< span class = "normal" > 92< / span >
< span class = "normal" > 93< / span >
< span class = "normal" > 94< / span >
< span class = "normal" > 95< / span >
< span class = "normal" > 96< / span >
< span class = "normal" > 97< / span >
< span class = "normal" > 98< / span >
< span class = "normal" > 99< / span >
< span class = "normal" > 100< / span >
< span class = "normal" > 101< / span >
< span class = "normal" > 102< / span >
< span class = "normal" > 103< / span >
< span class = "normal" > 104< / span >
< span class = "normal" > 105< / span >
< span class = "normal" > 106< / span >
< span class = "normal" > 107< / span >
< span class = "normal" > 108< / span >
< span class = "normal" > 109< / span >
< span class = "normal" > 110< / span >
< span class = "normal" > 111< / span >
< span class = "normal" > 112< / span >
< span class = "normal" > 113< / span >
< span class = "normal" > 114< / span >
< span class = "normal" > 115< / span >
< span class = "normal" > 116< / span >
< span class = "normal" > 117< / span >
< span class = "normal" > 118< / span >
< span class = "normal" > 119< / span >
< span class = "normal" > 120< / span >
< span class = "normal" > 121< / span >
< span class = "normal" > 122< / span >
< span class = "normal" > 123< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > to_bytes< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "w" > < / span > < span class = "sd" > " " " Converts this 32-bit single-precision floating point value to its binary32 format,< / span >
< span class = "sd" > taking care to preserve the quiet/signalling bit-pattern of NaN values, unlike its< / span >
< span class = "sd" > `struct.pack(' > f' , ...)` equivalent.< / span >
< span class = "sd" > ```python< / span >
< span class = "sd" > > > > Float.from_bytes(b' \\x7f\\x80\\x00{' )< / span >
< span class = "sd" > Float(nan)< / span >
< span class = "sd" > > > > Float.from_bytes(b' \\x7f\\x80\\x00{' ).to_bytes()< / span >
< span class = "sd" > b' \\x7f\\x80\\x00{' < / span >
< span class = "sd" > > > > struct.unpack(' > f' , b' \\x7f\\x80\\x00{' )[0]< / span >
< span class = "sd" > nan< / span >
< span class = "sd" > > > > Float(struct.unpack(' > f' , b' \\x7f\\x80\\x00{' )[0]).to_bytes()< / span >
< span class = "sd" > b' \\x7f\\xc0\\x00{' < / span >
< span class = "sd" > > > > struct.pack(' > f' , struct.unpack(' > f' , b' \\x7f\\x80\\x00{' )[0])< / span >
< span class = "sd" > b' \\x7f\\xc0\\x00{' < / span >
< span class = "sd" > ```< / span >
< span class = "sd" > (Note well the difference between `7f80007b` and `7fc0007b`!)< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "n" > math< / span > < span class = "o" > .< / span > < span class = "n" > isnan< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > value< / span > < span class = "p" > )< / span > < span class = "ow" > or< / span > < span class = "n" > math< / span > < span class = "o" > .< / span > < span class = "n" > isinf< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "n" > dbs< / span > < span class = "o" > =< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > pack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > d' < / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "n" > vd< / span > < span class = "o" > =< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > unpack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > Q' < / span > < span class = "p" > ,< / span > < span class = "n" > dbs< / span > < span class = "p" > )[< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "n" > sign< / span > < span class = "o" > =< / span > < span class = "n" > vd< / span > < span class = "o" > > > < / span > < span class = "mi" > 63< / span >
< span class = "n" > payload< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > vd< / span > < span class = "o" > > > < / span > < span class = "mi" > 29< / span > < span class = "p" > )< / span > < span class = "o" > & < / span > < span class = "mh" > 0x007fffff< / span >
< span class = "n" > vf< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > sign< / span > < span class = "o" > < < < / span > < span class = "mi" > 31< / span > < span class = "p" > )< / span > < span class = "o" > |< / span > < span class = "mh" > 0x7f800000< / span > < span class = "o" > |< / span > < span class = "n" > payload< / span >
< span class = "k" > return< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > pack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > I' < / span > < span class = "p" > ,< / span > < span class = "n" > vf< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > struct< / span > < span class = "o" > .< / span > < span class = "n" > pack< / span > < span class = "p" > (< / span > < span class = "s1" > ' > f' < / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "doc doc-object doc-class" >
< h2 id = "preserves.values.ImmutableDict" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > ImmutableDict< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code > dict< / code > < / p >
< p > A subclass of Python's built-in < code > dict< / code > that overrides methods that could mutate the
dictionary, causing them to raise < code > TypeError('Immutable')< / code > if called.< / p >
< p > Implements the < code > __hash__< / code > method, allowing < a class = "autorefs autorefs-internal" href = "#preserves.values.ImmutableDict" > ImmutableDict< / a >
instances to be used whereever immutable data are permitted; in particular, as keys in
other dictionaries.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > d< / span > < span class = "o" > =< / span > < span class = "n" > ImmutableDict< / span > < span class = "p" > ([(< / span > < span class = "s1" > ' a' < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > ),< / span > < span class = "p" > (< / span > < span class = "s1" > ' b' < / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > )])< / span >
< span class = "o" > > > > < / span > < span class = "n" > d< / span >
< span class = "p" > {< / span > < span class = "s1" > ' a' < / span > < span class = "p" > :< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "s1" > ' b' < / span > < span class = "p" > :< / span > < span class = "mi" > 2< / span > < span class = "p" > }< / span >
< span class = "o" > > > > < / span > < span class = "n" > d< / span > < span class = "p" > [< / span > < span class = "s1" > ' c' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "mi" > 3< / span >
< span class = "n" > Traceback< / span > < span class = "p" > (< / span > < span class = "n" > most< / span > < span class = "n" > recent< / span > < span class = "n" > call< / span > < span class = "n" > last< / span > < span class = "p" > ):< / span >
< span class = "o" > ...< / span >
< span class = "ne" > TypeError< / span > < span class = "p" > :< / span > < span class = "n" > Immutable< / span >
< span class = "o" > > > > < / span > < span class = "k" > del< / span > < span class = "n" > d< / span > < span class = "p" > [< / span > < span class = "s1" > ' b' < / span > < span class = "p" > ]< / span >
< span class = "n" > Traceback< / span > < span class = "p" > (< / span > < span class = "n" > most< / span > < span class = "n" > recent< / span > < span class = "n" > call< / span > < span class = "n" > last< / span > < span class = "p" > ):< / span >
< span class = "o" > ...< / span >
< span class = "ne" > TypeError< / span > < span class = "p" > :< / span > < span class = "n" > Immutable< / span >
< / code > < / pre > < / div >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 461< / span >
< span class = "normal" > 462< / span >
< span class = "normal" > 463< / span >
< span class = "normal" > 464< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s1" > ' __hash' < / span > < span class = "p" > ):< / span > < span class = "k" > raise< / span > < span class = "ne" > TypeError< / span > < span class = "p" > (< / span > < span class = "s1" > ' Immutable' < / span > < span class = "p" > )< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > ImmutableDict< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > __hash< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-function" >
< h3 id = "preserves.values.ImmutableDict.from_kvs" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > from_kvs< / span > < span class = "p" > (< / span > < span class = "n" > kvs< / span > < span class = "p" > )< / span > < / code >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-staticmethod" > < code > staticmethod< / code > < / small >
< / span >
< / h3 >
< div class = "doc doc-contents " >
< p > Constructs an < a class = "autorefs autorefs-internal" href = "#preserves.values.ImmutableDict" > ImmutableDict< / a > from a sequence of
alternating keys and values; compare to the
< a class = "autorefs autorefs-internal" href = "#preserves.values.ImmutableDict" > ImmutableDict< / a > constructor, which takes a sequence of
key-value pairs.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > ImmutableDict< / span > < span class = "o" > .< / span > < span class = "n" > from_kvs< / span > < span class = "p" > ([< / span > < span class = "s1" > ' a' < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "s1" > ' b' < / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > ])< / span >
< span class = "p" > {< / span > < span class = "s1" > ' a' < / span > < span class = "p" > :< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "s1" > ' b' < / span > < span class = "p" > :< / span > < span class = "mi" > 2< / span > < span class = "p" > }< / span >
< span class = "o" > > > > < / span > < span class = "n" > ImmutableDict< / span > < span class = "o" > .< / span > < span class = "n" > from_kvs< / span > < span class = "p" > ([< / span > < span class = "s1" > ' a' < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "s1" > ' b' < / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > ])[< / span > < span class = "s1" > ' c' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "mi" > 3< / span >
< span class = "n" > Traceback< / span > < span class = "p" > (< / span > < span class = "n" > most< / span > < span class = "n" > recent< / span > < span class = "n" > call< / span > < span class = "n" > last< / span > < span class = "p" > ):< / span >
< span class = "o" > ...< / span >
< span class = "ne" > TypeError< / span > < span class = "p" > :< / span > < span class = "n" > Immutable< / span >
< / code > < / pre > < / div >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 482< / span >
2023-03-17 09:22:31 +00:00
< span class = "normal" > 483< / span >
< span class = "normal" > 484< / span >
< span class = "normal" > 485< / span >
< span class = "normal" > 486< / span >
< span class = "normal" > 487< / span >
< span class = "normal" > 488< / span >
< span class = "normal" > 489< / span >
< span class = "normal" > 490< / span >
< span class = "normal" > 491< / span >
< span class = "normal" > 492< / span >
< span class = "normal" > 493< / span >
< span class = "normal" > 494< / span >
< span class = "normal" > 495< / span >
< span class = "normal" > 496< / span >
< span class = "normal" > 497< / span >
< span class = "normal" > 498< / span >
< span class = "normal" > 499< / span >
< span class = "normal" > 500< / span >
< span class = "normal" > 501< / span >
< span class = "normal" > 502< / span >
< span class = "normal" > 503< / span >
< span class = "normal" > 504< / span >
< span class = "normal" > 505< / span >
< span class = "normal" > 506< / span >
< span class = "normal" > 507< / span >
< span class = "normal" > 508< / span >
< span class = "normal" > 509< / span >
< span class = "normal" > 510< / span >
< span class = "normal" > 511< / span >
2023-03-17 14:24:53 +00:00
< span class = "normal" > 512< / span >
< span class = "normal" > 513< / span >
< span class = "normal" > 514< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "nd" > @staticmethod< / span >
2023-03-17 09:22:31 +00:00
< span class = "k" > def< / span > < span class = "nf" > from_kvs< / span > < span class = "p" > (< / span > < span class = "n" > kvs< / span > < span class = "p" > ):< / span >
< span class = "w" > < / span > < span class = "sd" > " " " Constructs an [ImmutableDict][preserves.values.ImmutableDict] from a sequence of< / span >
< span class = "sd" > alternating keys and values; compare to the< / span >
< span class = "sd" > [ImmutableDict][preserves.values.ImmutableDict] constructor, which takes a sequence of< / span >
< span class = "sd" > key-value pairs.< / span >
< span class = "sd" > ```python< / span >
< span class = "sd" > > > > ImmutableDict.from_kvs([' a' , 1, ' b' , 2])< / span >
< span class = "sd" > {' a' : 1, ' b' : 2}< / span >
< span class = "sd" > > > > ImmutableDict.from_kvs([' a' , 1, ' b' , 2])[' c' ] = 3< / span >
< span class = "sd" > Traceback (most recent call last):< / span >
< span class = "sd" > ...< / span >
< span class = "sd" > TypeError: Immutable< / span >
< span class = "sd" > ```< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > i< / span > < span class = "o" > =< / span > < span class = "nb" > iter< / span > < span class = "p" > (< / span > < span class = "n" > kvs< / span > < span class = "p" > )< / span >
< span class = "n" > result< / span > < span class = "o" > =< / span > < span class = "n" > ImmutableDict< / span > < span class = "p" > ()< / span >
< span class = "n" > result_proxy< / span > < span class = "o" > =< / span > < span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > ImmutableDict< / span > < span class = "p" > ,< / span > < span class = "n" > result< / span > < span class = "p" > )< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "k" > while< / span > < span class = "kc" > True< / span > < span class = "p" > :< / span >
< span class = "n" > k< / span > < span class = "o" > =< / span > < span class = "nb" > next< / span > < span class = "p" > (< / span > < span class = "n" > i< / span > < span class = "p" > )< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > v< / span > < span class = "o" > =< / span > < span class = "nb" > next< / span > < span class = "p" > (< / span > < span class = "n" > i< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > StopIteration< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "n" > DecodeError< / span > < span class = "p" > (< / span > < span class = "s2" > " Missing dictionary value" < / span > < span class = "p" > )< / span >
< span class = "n" > result_proxy< / span > < span class = "o" > .< / span > < span class = "fm" > __setitem__< / span > < span class = "p" > (< / span > < span class = "n" > k< / span > < span class = "p" > ,< / span > < span class = "n" > v< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > StopIteration< / span > < span class = "p" > :< / span >
< span class = "k" > pass< / span >
< span class = "k" > return< / span > < span class = "n" > result< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "doc doc-object doc-class" >
< h2 id = "preserves.values.Record" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > Record< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code > object< / code > < / p >
< p > Representation of Preserves < code > Record< / code > s, which are a pair of a < em > label< / em > < code > Value< / code > and a sequence of < em > field< / em > < code > Value< / code > s.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > r< / span > < span class = "o" > =< / span > < span class = "n" > Record< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' label' < / span > < span class = "p" > ),< / span > < span class = "p" > [< / span > < span class = "s1" > ' field1' < / span > < span class = "p" > ,< / span > < span class = "p" > [< / span > < span class = "s1" > ' field2item1' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' field2item2' < / span > < span class = "p" > ]])< / span >
< span class = "o" > > > > < / span > < span class = "n" > r< / span >
< span class = "c1" > #label(' field1' , [' field2item1' , ' field2item2' ])< / span >
< span class = "o" > > > > < / span > < span class = "n" > r< / span > < span class = "o" > .< / span > < span class = "n" > key< / span >
< span class = "c1" > #label< / span >
< span class = "o" > > > > < / span > < span class = "n" > r< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span >
< span class = "p" > (< / span > < span class = "s1" > ' field1' < / span > < span class = "p" > ,< / span > < span class = "p" > [< / span > < span class = "s1" > ' field2item1' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' field2item2' < / span > < span class = "p" > ])< / span >
< span class = "o" > > > > < / span > < span class = "kn" > import< / span > < span class = "nn" > preserves< / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > r< / span > < span class = "p" > )< / span >
< span class = "s1" > ' < label " field1" [" field2item1" " field2item2" ]> ' < / span >
< span class = "o" > > > > < / span > < span class = "n" > r< / span > < span class = "o" > ==< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span > < span class = "s1" > ' < label " field1" [" field2item1" " field2item2" ]> ' < / span > < span class = "p" > )< / span >
< span class = "kc" > True< / span >
< / code > < / pre > < / div >
< p > < strong > Parameters:< / strong > < / p >
< table >
< thead >
< tr >
< th > Name< / th >
< th > Type< / th >
< th > Description< / th >
< th > Default< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > key< / code > < / td >
< td >
< code > Value< / code >
< / td >
< td > < p > the < code > Record< / code > 's label< / p > < / td >
< td >
< em > required< / em >
< / td >
< / tr >
< tr >
< td > < code > fields< / code > < / td >
< td >
< code > iterable[Value]< / code >
< / td >
< td > < p > the fields of the < code > Record< / code > < / p > < / td >
< td >
< em > required< / em >
< / td >
< / tr >
< / tbody >
< / table >
< p > < strong > Attributes:< / strong > < / p >
< table >
< thead >
< tr >
< th > Name< / th >
< th > Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > key< / code > < / td >
< td >
< code > Value< / code >
< / td >
< td > < p > the < code > Record< / code > 's label< / p > < / td >
< / tr >
< tr >
< td > < code > fields< / code > < / td >
< td >
< code > tuple[Value]< / code >
< / td >
< td > < p > the fields of the < code > Record< / code > < / p > < / td >
< / tr >
< / tbody >
< / table >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 273< / span >
< span class = "normal" > 274< / span >
< span class = "normal" > 275< / span >
< span class = "normal" > 276< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "n" > key< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "nb" > tuple< / span > < span class = "p" > (< / span > < span class = "n" > fields< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > __hash< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-function" >
< h3 id = "preserves.values.Record.makeBasicConstructor" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > makeBasicConstructor< / span > < span class = "p" > (< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span > < span class = "n" > fieldNames< / span > < span class = "p" > )< / span > < / code >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-staticmethod" > < code > staticmethod< / code > < / small >
< / span >
< / h3 >
< div class = "doc doc-contents " >
< p > Constructs and returns a "constructor" for < code > Record< / code > s having a certain < code > label< / code > and
number of fields.< / p >
< details class = "deprecated" >
< summary > Deprecated< / summary >
< p > Use < a class = "autorefs autorefs-internal" href = "../schema/#preserves.schema" > preserves.schema< / a > definitions instead.< / p >
< / details > < p > The "constructor" is a callable function that accepts < code > len(fields)< / code > arguments and
returns a < a class = "autorefs autorefs-internal" href = "#preserves.values.Record" > Record< / a > with < code > label< / code > as its label and the arguments
to the constructor as field values.< / p >
< p > In addition, the "constructor" has a < code > constructorInfo< / code > attribute holding a
< a class = "autorefs autorefs-internal" href = "#preserves.values.RecordConstructorInfo" > RecordConstructorInfo< / a > object, an < code > isClassOf< / code >
attribute holding a unary function that returns < code > True< / code > iff its argument is a
< a class = "autorefs autorefs-internal" href = "#preserves.values.Record" > Record< / a > with label < code > label< / code > and arity < code > len(fieldNames)< / code > , and
an < code > ensureClassOf< / code > attribute that raises an < code > Exception< / code > if < code > isClassOf< / code > returns false on
its argument and returns the argument otherwise.< / p >
< p > Finally, for each field name < code > f< / code > in < code > fieldNames< / code > , the "constructor" object has an
attribute < code > _f< / code > that is a unary function that retrieves the < code > f< / code > field from the passed in
argument.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > =< / span > < span class = "n" > Record< / span > < span class = "o" > .< / span > < span class = "n" > makeBasicConstructor< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' date' < / span > < span class = "p" > ),< / span > < span class = "s1" > ' year month day' < / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "p" > (< / span > < span class = "mi" > 1969< / span > < span class = "p" > ,< / span > < span class = "mi" > 7< / span > < span class = "p" > ,< / span > < span class = "mi" > 16< / span > < span class = "p" > )< / span >
< span class = "c1" > #date(1969, 7, 16)< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > constructorInfo< / span >
< span class = "c1" > #date/3< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > isClassOf< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > (< / span > < span class = "mi" > 1969< / span > < span class = "p" > ,< / span > < span class = "mi" > 7< / span > < span class = "p" > ,< / span > < span class = "mi" > 16< / span > < span class = "p" > ))< / span >
< span class = "kc" > True< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > isClassOf< / span > < span class = "p" > (< / span > < span class = "n" > Record< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' date' < / span > < span class = "p" > ),< / span > < span class = "p" > [< / span > < span class = "mi" > 1969< / span > < span class = "p" > ,< / span > < span class = "mi" > 7< / span > < span class = "p" > ,< / span > < span class = "mi" > 16< / span > < span class = "p" > ]))< / span >
< span class = "kc" > True< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > isClassOf< / span > < span class = "p" > (< / span > < span class = "n" > Record< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' date' < / span > < span class = "p" > ),< / span > < span class = "p" > [< / span > < span class = "mi" > 1969< / span > < span class = "p" > ]))< / span >
< span class = "kc" > False< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > ensureClassOf< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > (< / span > < span class = "mi" > 1969< / span > < span class = "p" > ,< / span > < span class = "mi" > 7< / span > < span class = "p" > ,< / span > < span class = "mi" > 16< / span > < span class = "p" > ))< / span >
< span class = "c1" > #date(1969, 7, 16)< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > ensureClassOf< / span > < span class = "p" > (< / span > < span class = "n" > Record< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' date' < / span > < span class = "p" > ),< / span > < span class = "p" > [< / span > < span class = "mi" > 1969< / span > < span class = "p" > ]))< / span >
< span class = "n" > Traceback< / span > < span class = "p" > (< / span > < span class = "n" > most< / span > < span class = "n" > recent< / span > < span class = "n" > call< / span > < span class = "n" > last< / span > < span class = "p" > ):< / span >
< span class = "o" > ...< / span >
< span class = "ne" > TypeError< / span > < span class = "p" > :< / span > < span class = "n" > Record< / span > < span class = "p" > :< / span > < span class = "n" > expected< / span > < span class = "c1" > #date/3, got #date(1969)< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > _year< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > (< / span > < span class = "mi" > 1969< / span > < span class = "p" > ,< / span > < span class = "mi" > 7< / span > < span class = "p" > ,< / span > < span class = "mi" > 16< / span > < span class = "p" > ))< / span >
< span class = "mi" > 1969< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > _month< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > (< / span > < span class = "mi" > 1969< / span > < span class = "p" > ,< / span > < span class = "mi" > 7< / span > < span class = "p" > ,< / span > < span class = "mi" > 16< / span > < span class = "p" > ))< / span >
< span class = "mi" > 7< / span >
< span class = "o" > > > > < / span > < span class = "n" > c< / span > < span class = "o" > .< / span > < span class = "n" > _day< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > (< / span > < span class = "mi" > 1969< / span > < span class = "p" > ,< / span > < span class = "mi" > 7< / span > < span class = "p" > ,< / span > < span class = "mi" > 16< / span > < span class = "p" > ))< / span >
< span class = "mi" > 16< / span >
< / code > < / pre > < / div >
< p > < strong > Parameters:< / strong > < / p >
< table >
< thead >
< tr >
< th > Name< / th >
< th > Type< / th >
< th > Description< / th >
< th > Default< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > label< / code > < / td >
< td >
< code > Value< / code >
< / td >
< td > < p > Label to use for constructed/matched < code > Record< / code > s< / p > < / td >
< td >
< em > required< / em >
< / td >
< / tr >
< tr >
< td > < code > fieldNames< / code > < / td >
< td >
< code > tuple[str] | list[str] | str< / code >
< / td >
< td > < p > Names of the < code > Record< / code > 's fields< / p > < / td >
< td >
< em > required< / em >
< / td >
< / tr >
< / tbody >
< / table >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 321< / span >
2023-03-17 09:22:31 +00:00
< span class = "normal" > 322< / span >
< span class = "normal" > 323< / span >
< span class = "normal" > 324< / span >
< span class = "normal" > 325< / span >
< span class = "normal" > 326< / span >
< span class = "normal" > 327< / span >
< span class = "normal" > 328< / span >
< span class = "normal" > 329< / span >
< span class = "normal" > 330< / span >
< span class = "normal" > 331< / span >
< span class = "normal" > 332< / span >
< span class = "normal" > 333< / span >
< span class = "normal" > 334< / span >
< span class = "normal" > 335< / span >
< span class = "normal" > 336< / span >
< span class = "normal" > 337< / span >
< span class = "normal" > 338< / span >
< span class = "normal" > 339< / span >
< span class = "normal" > 340< / span >
< span class = "normal" > 341< / span >
< span class = "normal" > 342< / span >
< span class = "normal" > 343< / span >
< span class = "normal" > 344< / span >
< span class = "normal" > 345< / span >
< span class = "normal" > 346< / span >
< span class = "normal" > 347< / span >
< span class = "normal" > 348< / span >
< span class = "normal" > 349< / span >
< span class = "normal" > 350< / span >
< span class = "normal" > 351< / span >
< span class = "normal" > 352< / span >
< span class = "normal" > 353< / span >
< span class = "normal" > 354< / span >
< span class = "normal" > 355< / span >
< span class = "normal" > 356< / span >
< span class = "normal" > 357< / span >
< span class = "normal" > 358< / span >
< span class = "normal" > 359< / span >
< span class = "normal" > 360< / span >
< span class = "normal" > 361< / span >
< span class = "normal" > 362< / span >
< span class = "normal" > 363< / span >
< span class = "normal" > 364< / span >
< span class = "normal" > 365< / span >
< span class = "normal" > 366< / span >
< span class = "normal" > 367< / span >
< span class = "normal" > 368< / span >
< span class = "normal" > 369< / span >
< span class = "normal" > 370< / span >
< span class = "normal" > 371< / span >
< span class = "normal" > 372< / span >
< span class = "normal" > 373< / span >
< span class = "normal" > 374< / span >
< span class = "normal" > 375< / span >
< span class = "normal" > 376< / span >
< span class = "normal" > 377< / span >
< span class = "normal" > 378< / span >
< span class = "normal" > 379< / span >
< span class = "normal" > 380< / span >
< span class = "normal" > 381< / span >
< span class = "normal" > 382< / span >
< span class = "normal" > 383< / span >
< span class = "normal" > 384< / span >
< span class = "normal" > 385< / span >
< span class = "normal" > 386< / span >
< span class = "normal" > 387< / span >
< span class = "normal" > 388< / span >
< span class = "normal" > 389< / span >
< span class = "normal" > 390< / span >
< span class = "normal" > 391< / span >
< span class = "normal" > 392< / span >
< span class = "normal" > 393< / span >
< span class = "normal" > 394< / span >
< span class = "normal" > 395< / span >
< span class = "normal" > 396< / span >
< span class = "normal" > 397< / span >
2023-03-17 14:24:53 +00:00
< span class = "normal" > 398< / span >
< span class = "normal" > 399< / span >
< span class = "normal" > 400< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "nd" > @staticmethod< / span >
2023-03-17 09:22:31 +00:00
< span class = "k" > def< / span > < span class = "nf" > makeBasicConstructor< / span > < span class = "p" > (< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span > < span class = "n" > fieldNames< / span > < span class = "p" > ):< / span >
< span class = "w" > < / span > < span class = "sd" > " " " Constructs and returns a " constructor" for `Record`s having a certain `label` and< / span >
< span class = "sd" > number of fields.< / span >
< span class = "sd" > Deprecated:< / span >
< span class = "sd" > Use [preserves.schema][] definitions instead.< / span >
< span class = "sd" > The " constructor" is a callable function that accepts `len(fields)` arguments and< / span >
< span class = "sd" > returns a [Record][preserves.values.Record] with `label` as its label and the arguments< / span >
< span class = "sd" > to the constructor as field values.< / span >
< span class = "sd" > In addition, the " constructor" has a `constructorInfo` attribute holding a< / span >
< span class = "sd" > [RecordConstructorInfo][preserves.values.RecordConstructorInfo] object, an `isClassOf`< / span >
< span class = "sd" > attribute holding a unary function that returns `True` iff its argument is a< / span >
< span class = "sd" > [Record][preserves.values.Record] with label `label` and arity `len(fieldNames)`, and< / span >
< span class = "sd" > an `ensureClassOf` attribute that raises an `Exception` if `isClassOf` returns false on< / span >
< span class = "sd" > its argument and returns the argument otherwise.< / span >
< span class = "sd" > Finally, for each field name `f` in `fieldNames`, the " constructor" object has an< / span >
< span class = "sd" > attribute `_f` that is a unary function that retrieves the `f` field from the passed in< / span >
< span class = "sd" > argument.< / span >
< span class = "sd" > ```python< / span >
< span class = "sd" > > > > c = Record.makeBasicConstructor(Symbol(' date' ), ' year month day' )< / span >
< span class = "sd" > > > > c(1969, 7, 16)< / span >
< span class = "sd" > #date(1969, 7, 16)< / span >
< span class = "sd" > > > > c.constructorInfo< / span >
< span class = "sd" > #date/3< / span >
< span class = "sd" > > > > c.isClassOf(c(1969, 7, 16))< / span >
< span class = "sd" > True< / span >
< span class = "sd" > > > > c.isClassOf(Record(Symbol(' date' ), [1969, 7, 16]))< / span >
< span class = "sd" > True< / span >
< span class = "sd" > > > > c.isClassOf(Record(Symbol(' date' ), [1969]))< / span >
< span class = "sd" > False< / span >
< span class = "sd" > > > > c.ensureClassOf(c(1969, 7, 16))< / span >
< span class = "sd" > #date(1969, 7, 16)< / span >
< span class = "sd" > > > > c.ensureClassOf(Record(Symbol(' date' ), [1969]))< / span >
< span class = "sd" > Traceback (most recent call last):< / span >
< span class = "sd" > ...< / span >
< span class = "sd" > TypeError: Record: expected #date/3, got #date(1969)< / span >
< span class = "sd" > > > > c._year(c(1969, 7, 16))< / span >
< span class = "sd" > 1969< / span >
< span class = "sd" > > > > c._month(c(1969, 7, 16))< / span >
< span class = "sd" > 7< / span >
< span class = "sd" > > > > c._day(c(1969, 7, 16))< / span >
< span class = "sd" > 16< / span >
< span class = "sd" > ```< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > label (Value): Label to use for constructed/matched `Record`s< / span >
< span class = "sd" > fieldNames (tuple[str] | list[str] | str): Names of the `Record`' s fields< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "nb" > type< / span > < span class = "p" > (< / span > < span class = "n" > fieldNames< / span > < span class = "p" > )< / span > < span class = "o" > ==< / span > < span class = "nb" > str< / span > < span class = "p" > :< / span >
< span class = "n" > fieldNames< / span > < span class = "o" > =< / span > < span class = "n" > fieldNames< / span > < span class = "o" > .< / span > < span class = "n" > split< / span > < span class = "p" > ()< / span >
< span class = "n" > arity< / span > < span class = "o" > =< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > fieldNames< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > ctor< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > fields< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > fields< / span > < span class = "p" > )< / span > < span class = "o" > !=< / span > < span class = "n" > arity< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "ne" > Exception< / span > < span class = "p" > (< / span > < span class = "s2" > " Record: cannot instantiate < / span > < span class = "si" > %r< / span > < span class = "s2" > expecting < / span > < span class = "si" > %d< / span > < span class = "s2" > fields with < / span > < span class = "si" > %d< / span > < span class = "s2" > fields" < / span > < span class = "o" > %< / span > < span class = "p" > (< / span >
< span class = "n" > label< / span > < span class = "p" > ,< / span >
< span class = "n" > arity< / span > < span class = "p" > ,< / span >
< span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > fields< / span > < span class = "p" > )))< / span >
< span class = "k" > return< / span > < span class = "n" > Record< / span > < span class = "p" > (< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "p" > )< / span >
< span class = "n" > ctor< / span > < span class = "o" > .< / span > < span class = "n" > constructorInfo< / span > < span class = "o" > =< / span > < span class = "n" > RecordConstructorInfo< / span > < span class = "p" > (< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span > < span class = "n" > arity< / span > < span class = "p" > )< / span >
< span class = "n" > ctor< / span > < span class = "o" > .< / span > < span class = "n" > isClassOf< / span > < span class = "o" > =< / span > < span class = "k" > lambda< / span > < span class = "n" > v< / span > < span class = "p" > :< / span > \
< span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "n" > Record< / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "n" > v< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "o" > ==< / span > < span class = "n" > label< / span > < span class = "ow" > and< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > )< / span > < span class = "o" > ==< / span > < span class = "n" > arity< / span >
< span class = "k" > def< / span > < span class = "nf" > ensureClassOf< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > ctor< / span > < span class = "o" > .< / span > < span class = "n" > isClassOf< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "ne" > TypeError< / span > < span class = "p" > (< / span > < span class = "s2" > " Record: expected < / span > < span class = "si" > %r< / span > < span class = "s2" > /< / span > < span class = "si" > %d< / span > < span class = "s2" > , got < / span > < span class = "si" > %r< / span > < span class = "s2" > " < / span > < span class = "o" > %< / span > < span class = "p" > (< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span > < span class = "n" > arity< / span > < span class = "p" > ,< / span > < span class = "n" > v< / span > < span class = "p" > ))< / span >
< span class = "k" > return< / span > < span class = "n" > v< / span >
< span class = "n" > ctor< / span > < span class = "o" > .< / span > < span class = "n" > ensureClassOf< / span > < span class = "o" > =< / span > < span class = "n" > ensureClassOf< / span >
< span class = "k" > for< / span > < span class = "n" > fieldIndex< / span > < span class = "ow" > in< / span > < span class = "nb" > range< / span > < span class = "p" > (< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > fieldNames< / span > < span class = "p" > )):< / span >
< span class = "n" > fieldName< / span > < span class = "o" > =< / span > < span class = "n" > fieldNames< / span > < span class = "p" > [< / span > < span class = "n" > fieldIndex< / span > < span class = "p" > ]< / span >
< span class = "c1" > # Stupid python scoping bites again< / span >
< span class = "k" > def< / span > < span class = "nf" > getter< / span > < span class = "p" > (< / span > < span class = "n" > fieldIndex< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "k" > lambda< / span > < span class = "n" > v< / span > < span class = "p" > :< / span > < span class = "n" > ensureClassOf< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > )[< / span > < span class = "n" > fieldIndex< / span > < span class = "p" > ]< / span >
< span class = "nb" > setattr< / span > < span class = "p" > (< / span > < span class = "n" > ctor< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _' < / span > < span class = "o" > +< / span > < span class = "n" > fieldName< / span > < span class = "p" > ,< / span > < span class = "n" > getter< / span > < span class = "p" > (< / span > < span class = "n" > fieldIndex< / span > < span class = "p" > ))< / span >
< span class = "k" > return< / span > < span class = "n" > ctor< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h3 id = "preserves.values.Record.makeConstructor" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > makeConstructor< / span > < span class = "p" > (< / span > < span class = "n" > labelSymbolText< / span > < span class = "p" > ,< / span > < span class = "n" > fieldNames< / span > < span class = "p" > )< / span > < / code >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-staticmethod" > < code > staticmethod< / code > < / small >
< / span >
< / h3 >
< div class = "doc doc-contents " >
< p > Equivalent to < code > Record.makeBasicConstructor(Symbol(labelSymbolText), fieldNames)< / code > .< / p >
< details class = "deprecated" >
< summary > Deprecated< / summary >
< p > Use < a class = "autorefs autorefs-internal" href = "../schema/#preserves.schema" > preserves.schema< / a > definitions instead.< / p >
< / details >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 311< / span >
2023-03-17 09:22:31 +00:00
< span class = "normal" > 312< / span >
< span class = "normal" > 313< / span >
< span class = "normal" > 314< / span >
< span class = "normal" > 315< / span >
< span class = "normal" > 316< / span >
2023-03-17 14:24:53 +00:00
< span class = "normal" > 317< / span >
< span class = "normal" > 318< / span >
< span class = "normal" > 319< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "nd" > @staticmethod< / span >
2023-03-17 09:22:31 +00:00
< span class = "k" > def< / span > < span class = "nf" > makeConstructor< / span > < span class = "p" > (< / span > < span class = "n" > labelSymbolText< / span > < span class = "p" > ,< / span > < span class = "n" > fieldNames< / span > < span class = "p" > ):< / span >
< span class = "w" > < / span > < span class = "sd" > " " " < / span >
< span class = "sd" > Equivalent to `Record.makeBasicConstructor(Symbol(labelSymbolText), fieldNames)`.< / span >
< span class = "sd" > Deprecated:< / span >
< span class = "sd" > Use [preserves.schema][] definitions instead.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "n" > Record< / span > < span class = "o" > .< / span > < span class = "n" > makeBasicConstructor< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "n" > labelSymbolText< / span > < span class = "p" > ),< / span > < span class = "n" > fieldNames< / span > < span class = "p" > )< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "doc doc-object doc-class" >
< h2 id = "preserves.values.RecordConstructorInfo" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > RecordConstructorInfo< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > arity< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code > object< / code > < / p >
< p > Describes the shape of a < code > Record< / code > constructor, namely its < em > label< / em > and its < em > arity< / em > (field
count).< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > RecordConstructorInfo< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' label' < / span > < span class = "p" > ),< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span >
< span class = "c1" > #label/3< / span >
< / code > < / pre > < / div >
< p > < strong > Attributes:< / strong > < / p >
< table >
< thead >
< tr >
< th > Name< / th >
< th > Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > key< / code > < / td >
< td >
< code > Value< / code >
< / td >
< td > < p > the label of matching < code > Record< / code > s< / p > < / td >
< / tr >
< tr >
< td > < code > arity< / code > < / td >
< td >
< code > int< / code >
< / td >
< td > < p > the number of fields in matching < code > Record< / code > s< / p > < / td >
< / tr >
< / tbody >
< / table >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 416< / span >
< span class = "normal" > 417< / span >
< span class = "normal" > 418< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > arity< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "n" > key< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > arity< / span > < span class = "o" > =< / span > < span class = "n" > arity< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< div class = "doc doc-children" >
< / div >
< / div >
< / div >
< div class = "doc doc-object doc-class" >
< h2 id = "preserves.values.Symbol" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code > object< / code > < / p >
< p > Representation of Preserves < code > Symbol< / code > s.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' xyz' < / span > < span class = "p" > )< / span >
< span class = "c1" > #xyz< / span >
< span class = "o" > > > > < / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' xyz' < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > name< / span >
< span class = "s1" > ' xyz' < / span >
< span class = "o" > > > > < / span > < span class = "kn" > import< / span > < span class = "nn" > preserves< / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' xyz' < / span > < span class = "p" > ))< / span >
< span class = "s1" > ' xyz' < / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > Symbol< / span > < span class = "p" > (< / span > < span class = "s1" > ' hello world' < / span > < span class = "p" > ))< / span >
< span class = "s1" > ' |hello world|' < / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span > < span class = "s1" > ' xyz' < / span > < span class = "p" > )< / span >
< span class = "c1" > #xyz< / span >
< span class = "o" > > > > < / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span > < span class = "s1" > ' |hello world|' < / span > < span class = "p" > )< / span >
< span class = "c1" > #hello world< / span >
< / code > < / pre > < / div >
< p > < strong > Attributes:< / strong > < / p >
< table >
< thead >
< tr >
< th > Name< / th >
< th > Type< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > name< / code > < / td >
< td >
2023-03-17 14:24:53 +00:00
< code > str | < a class = "autorefs autorefs-internal" title = "preserves.values.Symbol" href = "#preserves.values.Symbol" > Symbol< / a > < / code >
2023-03-17 09:22:31 +00:00
< / td >
2023-03-17 14:24:53 +00:00
< td > < p > The symbol's text label. If an existing < a class = "autorefs autorefs-internal" href = "#preserves.values.Symbol" > Symbol< / a > is passed
in, the existing Symbol's < code > name< / code > is used as the < code > name< / code > for the new Symbol.< / p > < / td >
2023-03-17 09:22:31 +00:00
< / tr >
< / tbody >
< / table >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 202< / span >
< span class = "normal" > 203< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > name< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "n" > name< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > Symbol< / span > < span class = "p" > )< / span > < span class = "k" > else< / span > < span class = "n" > name< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< div class = "doc doc-children" >
< / div >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h2 id = "preserves.values.annotate" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > annotate< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > anns< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p > Wraps < code > v< / code > in an < a class = "autorefs autorefs-internal" href = "#preserves.values.Annotated" > Annotated< / a > object, if it isn't already
wrapped, and appends each of the < code > anns< / code > to the < a class = "autorefs autorefs-internal" href = "#preserves.values.Annotated" > Annotated< / a > 's
< code > annotations< / code > sequence. NOTE: Does not recursively ensure that any parts of the argument
< code > v< / code > are themselves wrapped in < a class = "autorefs autorefs-internal" href = "#preserves.values.Annotated" > Annotated< / a > objects!< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "kn" > import< / span > < span class = "nn" > preserves< / span >
< span class = "o" > > > > < / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > annotate< / span > < span class = "p" > (< / span > < span class = "mi" > 123< / span > < span class = "p" > ,< / span > < span class = "s2" > " A comment" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Another comment" < / span > < span class = "p" > )))< / span >
< span class = "o" > @< / span > < span class = "s2" > " A comment" < / span > < span class = "o" > @< / span > < span class = "s2" > " Another comment" < / span > < span class = "mi" > 123< / span >
< / code > < / pre > < / div >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 664< / span >
2023-03-17 09:22:31 +00:00
< span class = "normal" > 665< / span >
< span class = "normal" > 666< / span >
< span class = "normal" > 667< / span >
< span class = "normal" > 668< / span >
< span class = "normal" > 669< / span >
< span class = "normal" > 670< / span >
< span class = "normal" > 671< / span >
< span class = "normal" > 672< / span >
< span class = "normal" > 673< / span >
< span class = "normal" > 674< / span >
< span class = "normal" > 675< / span >
< span class = "normal" > 676< / span >
< span class = "normal" > 677< / span >
< span class = "normal" > 678< / span >
2023-03-17 14:24:53 +00:00
< span class = "normal" > 679< / span >
< span class = "normal" > 680< / span >
< span class = "normal" > 681< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > annotate< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > anns< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "w" > < / span > < span class = "sd" > " " " Wraps `v` in an [Annotated][preserves.values.Annotated] object, if it isn' t already< / span >
< span class = "sd" > wrapped, and appends each of the `anns` to the [Annotated][preserves.values.Annotated]' s< / span >
< span class = "sd" > `annotations` sequence. NOTE: Does not recursively ensure that any parts of the argument< / span >
< span class = "sd" > `v` are themselves wrapped in [Annotated][preserves.values.Annotated] objects!< / span >
< span class = "sd" > ```python< / span >
< span class = "sd" > > > > import preserves< / span >
< span class = "sd" > > > > print(preserves.stringify(annotate(123, " A comment" , " Another comment" )))< / span >
< span class = "sd" > @" A comment" @" Another comment" 123< / span >
< span class = "sd" > ```< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > is_annotated< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ):< / span >
< span class = "n" > v< / span > < span class = "o" > =< / span > < span class = "n" > Annotated< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > )< / span >
< span class = "k" > for< / span > < span class = "n" > a< / span > < span class = "ow" > in< / span > < span class = "n" > anns< / span > < span class = "p" > :< / span >
< span class = "n" > v< / span > < span class = "o" > .< / span > < span class = "n" > annotations< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > v< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h2 id = "preserves.values.cmp_floats" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > cmp_floats< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > ,< / span > < span class = "n" > b< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p > Implements the < code > totalOrder< / code > predicate defined in section 5.10 of < a href = "https://dx.doi.org/10.1109/IEEESTD.2008.4610935" > IEEE Std
754-2008< / a > .< / p >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 31< / span >
< span class = "normal" > 32< / span >
< span class = "normal" > 33< / span >
< span class = "normal" > 34< / span >
< span class = "normal" > 35< / span >
< span class = "normal" > 36< / span >
< span class = "normal" > 37< / span >
< span class = "normal" > 38< / span >
< span class = "normal" > 39< / span >
< span class = "normal" > 40< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > cmp_floats< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > ,< / span > < span class = "n" > b< / span > < span class = "p" > ):< / span >
< span class = "w" > < / span > < span class = "sd" > " " " Implements the `totalOrder` predicate defined in section 5.10 of [IEEE Std< / span >
< span class = "sd" > 754-2008](https://dx.doi.org/10.1109/IEEESTD.2008.4610935).< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > a< / span > < span class = "o" > =< / span > < span class = "n" > float_to_int< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > )< / span >
< span class = "n" > b< / span > < span class = "o" > =< / span > < span class = "n" > float_to_int< / span > < span class = "p" > (< / span > < span class = "n" > b< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > a< / span > < span class = "o" > & < / span > < span class = "mh" > 0x8000000000000000< / span > < span class = "p" > :< / span > < span class = "n" > a< / span > < span class = "o" > =< / span > < span class = "n" > a< / span > < span class = "o" > ^< / span > < span class = "mh" > 0x7fffffffffffffff< / span >
< span class = "k" > if< / span > < span class = "n" > b< / span > < span class = "o" > & < / span > < span class = "mh" > 0x8000000000000000< / span > < span class = "p" > :< / span > < span class = "n" > b< / span > < span class = "o" > =< / span > < span class = "n" > b< / span > < span class = "o" > ^< / span > < span class = "mh" > 0x7fffffffffffffff< / span >
< span class = "k" > return< / span > < span class = "n" > a< / span > < span class = "o" > -< / span > < span class = "n" > b< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h2 id = "preserves.values.dict_kvs" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > dict_kvs< / span > < span class = "p" > (< / span > < span class = "n" > d< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p > Generator function yielding a sequence of alternating keys and values from < code > d< / code > . In some
sense the inverse of < a class = "autorefs autorefs-internal" href = "#preserves.values.ImmutableDict.from_kvs" > ImmutableDict.from_kvs< / a > .< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "n" > dict_kvs< / span > < span class = "p" > ({< / span > < span class = "s1" > ' a' < / span > < span class = "p" > :< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "s1" > ' b' < / span > < span class = "p" > :< / span > < span class = "mi" > 2< / span > < span class = "p" > }))< / span >
< span class = "p" > [< / span > < span class = "s1" > ' a' < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "s1" > ' b' < / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > ]< / span >
< / code > < / pre > < / div >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 516< / span >
2023-03-17 09:22:31 +00:00
< span class = "normal" > 517< / span >
< span class = "normal" > 518< / span >
< span class = "normal" > 519< / span >
< span class = "normal" > 520< / span >
< span class = "normal" > 521< / span >
< span class = "normal" > 522< / span >
< span class = "normal" > 523< / span >
< span class = "normal" > 524< / span >
< span class = "normal" > 525< / span >
2023-03-17 14:24:53 +00:00
< span class = "normal" > 526< / span >
< span class = "normal" > 527< / span >
< span class = "normal" > 528< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > dict_kvs< / span > < span class = "p" > (< / span > < span class = "n" > d< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "w" > < / span > < span class = "sd" > " " " Generator function yielding a sequence of alternating keys and values from `d`. In some< / span >
< span class = "sd" > sense the inverse of [ImmutableDict.from_kvs][preserves.values.ImmutableDict.from_kvs].< / span >
< span class = "sd" > ```python< / span >
< span class = "sd" > > > > list(dict_kvs({' a' : 1, ' b' : 2}))< / span >
< span class = "sd" > [' a' , 1, ' b' , 2]< / span >
< span class = "sd" > ```< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > for< / span > < span class = "n" > k< / span > < span class = "ow" > in< / span > < span class = "n" > d< / span > < span class = "p" > :< / span >
< span class = "k" > yield< / span > < span class = "n" > k< / span >
< span class = "k" > yield< / span > < span class = "n" > d< / span > < span class = "p" > [< / span > < span class = "n" > k< / span > < span class = "p" > ]< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h2 id = "preserves.values.is_annotated" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > is_annotated< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p > < code > True< / code > iff < code > v< / code > is an instance of < a class = "autorefs autorefs-internal" href = "#preserves.values.Annotated" > Annotated< / a > .< / p >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 614< / span >
< span class = "normal" > 615< / span >
< span class = "normal" > 616< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > is_annotated< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "w" > < / span > < span class = "sd" > " " " `True` iff `v` is an instance of [Annotated][preserves.values.Annotated]." " " < / span >
< span class = "k" > return< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "n" > Annotated< / span > < span class = "p" > )< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h2 id = "preserves.values.preserve" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > preserve< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p > Converts < code > v< / code > to a representation of a Preserves < code > Value< / code > by (repeatedly) setting< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "n" > v< / span > < span class = "o" > =< / span > < span class = "n" > v< / span > < span class = "o" > .< / span > < span class = "n" > __preserve__< / span > < span class = "p" > ()< / span >
< / code > < / pre > < / div >
< p > while < code > v< / code > has a < code > __preserve__< / code > method. Parsed < a class = "autorefs autorefs-internal" href = "../schema/#preserves.schema" > Schema< / a >
values are able to render themselves to their serialized representations this way.< / p >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 13< / span >
< span class = "normal" > 14< / span >
< span class = "normal" > 15< / span >
< span class = "normal" > 16< / span >
< span class = "normal" > 17< / span >
< span class = "normal" > 18< / span >
< span class = "normal" > 19< / span >
< span class = "normal" > 20< / span >
< span class = "normal" > 21< / span >
< span class = "normal" > 22< / span >
< span class = "normal" > 23< / span >
< span class = "normal" > 24< / span >
< span class = "normal" > 25< / span >
< span class = "normal" > 26< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > preserve< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ):< / span >
< span class = "w" > < / span > < span class = "sd" > " " " Converts `v` to a representation of a Preserves `Value` by (repeatedly) setting< / span >
< span class = "sd" > ```python< / span >
< span class = "sd" > v = v.__preserve__()< / span >
< span class = "sd" > ```< / span >
< span class = "sd" > while `v` has a `__preserve__` method. Parsed [Schema][preserves.schema]< / span >
< span class = "sd" > values are able to render themselves to their serialized representations this way.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > while< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "s1" > ' __preserve__' < / span > < span class = "p" > ):< / span >
< span class = "n" > v< / span > < span class = "o" > =< / span > < span class = "n" > v< / span > < span class = "o" > .< / span > < span class = "n" > __preserve__< / span > < span class = "p" > ()< / span >
< span class = "k" > return< / span > < span class = "n" > v< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< div class = "doc doc-object doc-function" >
< h2 id = "preserves.values.strip_annotations" class = "doc doc-heading" >
< code class = "highlight language-python" > < span class = "n" > strip_annotations< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "n" > depth< / span > < span class = "o" > =< / span > < span class = "n" > inf< / span > < span class = "p" > )< / span > < / code >
< / h2 >
< div class = "doc doc-contents " >
< p > Exposes < code > depth< / code > layers of raw structure of
potentially-< a class = "autorefs autorefs-internal" href = "#preserves.values.Annotated" > Annotated< / a > < code > Value< / code > s. If < code > depth==0< / code > or < code > v< / code > is not
< a class = "autorefs autorefs-internal" href = "#preserves.values.Annotated" > Annotated< / a > , just returns < code > v< / code > . Otherwise, descends recursively
into the structure of < code > v.item< / code > .< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "o" > > > > < / span > < span class = "kn" > import< / span > < span class = "nn" > preserves< / span >
< span class = "o" > > > > < / span > < span class = "n" > a< / span > < span class = "o" > =< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span > < span class = "s1" > ' @" A comment" [@a 1 @b 2 @c 3]' < / span > < span class = "p" > ,< / span > < span class = "n" > include_annotations< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span >
< span class = "o" > > > > < / span > < span class = "n" > is_annotated< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > )< / span >
< span class = "kc" > True< / span >
< span class = "o" > > > > < / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > ))< / span >
< span class = "o" > @< / span > < span class = "s2" > " A comment" < / span > < span class = "p" > [< / span > < span class = "nd" > @a< / span > < span class = "mi" > 1< / span > < span class = "nd" > @b< / span > < span class = "mi" > 2< / span > < span class = "nd" > @c< / span > < span class = "mi" > 3< / span > < span class = "p" > ]< / span >
< span class = "o" > > > > < / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > strip_annotations< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > )))< / span >
< span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "mi" > 2< / span > < span class = "mi" > 3< / span > < span class = "p" > ]< / span >
< span class = "o" > > > > < / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > preserves< / span > < span class = "o" > .< / span > < span class = "n" > stringify< / span > < span class = "p" > (< / span > < span class = "n" > strip_annotations< / span > < span class = "p" > (< / span > < span class = "n" > a< / span > < span class = "p" > ,< / span > < span class = "n" > depth< / span > < span class = "o" > =< / span > < span class = "mi" > 1< / span > < span class = "p" > )))< / span >
< span class = "p" > [< / span > < span class = "nd" > @a< / span > < span class = "mi" > 1< / span > < span class = "nd" > @b< / span > < span class = "mi" > 2< / span > < span class = "nd" > @c< / span > < span class = "mi" > 3< / span > < span class = "p" > ]< / span >
< / code > < / pre > < / div >
< details class = "quote" >
< summary > Source code in < code > preserves/values.py< / code > < / summary >
2023-03-17 14:24:53 +00:00
< div class = "highlight" > < table class = "highlighttable" > < tr > < td class = "linenos" > < div class = "linenodiv" > < pre > < span > < / span > < span class = "normal" > 618< / span >
2023-03-17 09:22:31 +00:00
< span class = "normal" > 619< / span >
< span class = "normal" > 620< / span >
< span class = "normal" > 621< / span >
< span class = "normal" > 622< / span >
< span class = "normal" > 623< / span >
< span class = "normal" > 624< / span >
< span class = "normal" > 625< / span >
< span class = "normal" > 626< / span >
< span class = "normal" > 627< / span >
< span class = "normal" > 628< / span >
< span class = "normal" > 629< / span >
< span class = "normal" > 630< / span >
< span class = "normal" > 631< / span >
< span class = "normal" > 632< / span >
< span class = "normal" > 633< / span >
< span class = "normal" > 634< / span >
< span class = "normal" > 635< / span >
< span class = "normal" > 636< / span >
< span class = "normal" > 637< / span >
< span class = "normal" > 638< / span >
< span class = "normal" > 639< / span >
< span class = "normal" > 640< / span >
< span class = "normal" > 641< / span >
< span class = "normal" > 642< / span >
< span class = "normal" > 643< / span >
< span class = "normal" > 644< / span >
< span class = "normal" > 645< / span >
< span class = "normal" > 646< / span >
< span class = "normal" > 647< / span >
< span class = "normal" > 648< / span >
< span class = "normal" > 649< / span >
< span class = "normal" > 650< / span >
< span class = "normal" > 651< / span >
< span class = "normal" > 652< / span >
< span class = "normal" > 653< / span >
< span class = "normal" > 654< / span >
< span class = "normal" > 655< / span >
< span class = "normal" > 656< / span >
< span class = "normal" > 657< / span >
< span class = "normal" > 658< / span >
< span class = "normal" > 659< / span >
2023-03-17 14:24:53 +00:00
< span class = "normal" > 660< / span >
< span class = "normal" > 661< / span >
< span class = "normal" > 662< / span > < / pre > < / div > < / td > < td class = "code" > < div > < pre > < span > < / span > < code > < span class = "k" > def< / span > < span class = "nf" > strip_annotations< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "n" > depth< / span > < span class = "o" > =< / span > < span class = "n" > inf< / span > < span class = "p" > ):< / span >
2023-03-17 09:22:31 +00:00
< span class = "w" > < / span > < span class = "sd" > " " " Exposes `depth` layers of raw structure of< / span >
< span class = "sd" > potentially-[Annotated][preserves.values.Annotated] `Value`s. If `depth==0` or `v` is not< / span >
< span class = "sd" > [Annotated][preserves.values.Annotated], just returns `v`. Otherwise, descends recursively< / span >
< span class = "sd" > into the structure of `v.item`.< / span >
< span class = "sd" > ```python< / span >
< span class = "sd" > > > > import preserves< / span >
< span class = "sd" > > > > a = preserves.parse(' @" A comment" [@a 1 @b 2 @c 3]' , include_annotations=True)< / span >
< span class = "sd" > > > > is_annotated(a)< / span >
< span class = "sd" > True< / span >
< span class = "sd" > > > > print(preserves.stringify(a))< / span >
< span class = "sd" > @" A comment" [@a 1 @b 2 @c 3]< / span >
< span class = "sd" > > > > print(preserves.stringify(strip_annotations(a)))< / span >
< span class = "sd" > [1 2 3]< / span >
< span class = "sd" > > > > print(preserves.stringify(strip_annotations(a, depth=1)))< / span >
< span class = "sd" > [@a 1 @b 2 @c 3]< / span >
< span class = "sd" > ```< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "n" > depth< / span > < span class = "o" > ==< / span > < span class = "mi" > 0< / span > < span class = "p" > :< / span > < span class = "k" > return< / span > < span class = "n" > v< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > is_annotated< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ):< / span > < span class = "k" > return< / span > < span class = "n" > v< / span >
< span class = "n" > next_depth< / span > < span class = "o" > =< / span > < span class = "n" > depth< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span >
< span class = "k" > def< / span > < span class = "nf" > walk< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > strip_annotations< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "n" > next_depth< / span > < span class = "p" > )< / span >
< span class = "n" > v< / span > < span class = "o" > =< / span > < span class = "n" > v< / span > < span class = "o" > .< / span > < span class = "n" > item< / span >
< span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "n" > Record< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > Record< / span > < span class = "p" > (< / span > < span class = "n" > strip_annotations< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > depth< / span > < span class = "p" > ),< / span > < span class = "nb" > tuple< / span > < span class = "p" > (< / span > < span class = "n" > walk< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > v< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > ))< / span >
< span class = "k" > elif< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "nb" > list< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "nb" > tuple< / span > < span class = "p" > (< / span > < span class = "n" > walk< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > v< / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "nb" > tuple< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "nb" > tuple< / span > < span class = "p" > (< / span > < span class = "n" > walk< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > v< / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "nb" > set< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "nb" > frozenset< / span > < span class = "p" > (< / span > < span class = "n" > walk< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > v< / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "nb" > frozenset< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "nb" > frozenset< / span > < span class = "p" > (< / span > < span class = "n" > walk< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > v< / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ,< / span > < span class = "nb" > dict< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > ImmutableDict< / span > < span class = "o" > .< / span > < span class = "n" > from_kvs< / span > < span class = "p" > (< / span > < span class = "n" > walk< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > dict_kvs< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ))< / span >
< span class = "k" > elif< / span > < span class = "n" > is_annotated< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span > < span class = "s1" > ' Improper annotation structure' < / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > v< / span >
< / code > < / pre > < / div > < / td > < / tr > < / table > < / div >
< / details >
< / div >
< / div >
< / div >
< / div >
< / div >
< hr >
< div class = "md-source-file" >
< small >
Last update:
< span class = "git-revision-date-localized-plugin git-revision-date-localized-plugin-date" > March 16, 2023< / span >
< br >
Created:
< span class = "git-revision-date-localized-plugin git-revision-date-localized-plugin-date" > March 16, 2023< / span >
< / small >
< / div >
< / article >
< / div >
< / div >
< / main >
< footer class = "md-footer" >
< div class = "md-footer-meta md-typeset" >
< div class = "md-footer-meta__inner md-grid" >
< div class = "md-copyright" >
Made with
< a href = "https://squidfunk.github.io/mkdocs-material/" target = "_blank" rel = "noopener" >
Material for MkDocs
< / a >
< / div >
< / div >
< / div >
< / footer >
< / div >
< div class = "md-dialog" data-md-component = "dialog" >
< div class = "md-dialog__inner md-typeset" > < / div >
< / div >
< script id = "__config" type = "application/json" > { "base" : ".." , "features" : [ ] , "search" : "../assets/javascripts/workers/search.208ed371.min.js" , "translations" : { "clipboard.copied" : "Copied to clipboard" , "clipboard.copy" : "Copy to clipboard" , "search.result.more.one" : "1 more on this page" , "search.result.more.other" : "# more on this page" , "search.result.none" : "No matching documents" , "search.result.one" : "1 matching document" , "search.result.other" : "# matching documents" , "search.result.placeholder" : "Type to start searching" , "search.result.term.missing" : "Missing" , "select.version" : "Select version" } , "version" : { "provider" : "mike" } } < / script >
< script src = "../assets/javascripts/bundle.efa0ade1.min.js" > < / script >
< / body >
< / html >