{
"info": {
"author": "Valentin Lab",
"author_email": "valentin.lab@kalysto.org",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Software Development",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "=================================\nSHYAML: YAML for the command line\n=================================\n\n.. image:: https://img.shields.io/pypi/v/shyaml.svg\n :target: https://pypi.python.org/pypi/shyaml\n\n.. image:: https://img.shields.io/travis/0k/shyaml/master.svg?style=flat\n :target: https://travis-ci.org/0k/shyaml/\n :alt: Travis CI build status\n\n.. image:: https://img.shields.io/appveyor/ci/vaab/shyaml.svg\n :target: https://ci.appveyor.com/project/vaab/shyaml/branch/master\n :alt: Appveyor CI build status\n\n.. image:: http://img.shields.io/codecov/c/github/0k/shyaml.svg?style=flat\n :target: https://codecov.io/gh/0k/shyaml/\n :alt: Test coverage\n\n\n\nDescription\n===========\n\nSimple script that allow read access to YAML files through command line.\n\nThis can be handy, if you want to get access to YAML data in your shell\nscripts.\n\nThis script supports only read access and it might not support all\nthe subtleties of YAML specification. But it should support some handy\nbasic query of YAML file.\n\n\nRequirements\n============\n\n``shyaml`` works in Linux, MacOSX, and Windows with python 2.7 and 3+.\n\n\nInstallation\n============\n\nYou don't need to download the GIT version of the code as ``shyaml`` is\navailable on the PyPI. So you should be able to run::\n\n pip install shyaml\n\nIf you have downloaded the GIT sources, then you could add install\nthe current version via traditional::\n\n python setup.py install\n\nAnd if you don't have the GIT sources but would like to get the latest\nmaster or branch from github, you could also::\n\n pip install git+https://github.com/0k/shyaml\n\nOr even select a specific revision (branch/tag/commit)::\n\n pip install git+https://github.com/0k/shyaml@master\n\nOn macOS, you can also install the latest release version via `Homebrew\n`_::\n\n brew install shyaml\n\nOr to install the master branch::\n\n brew install shyaml --HEAD\n\n\nDocumentation\n=============\n\nThe following documented examples are actually tested automatically at\neach release for conformance on all platform and python versions.\n\nPlease note that there is some subtle benign differences in some\noutput whether ``shyaml`` is using the ``libyaml`` C implementation or\nthe full python implementation. The documentation can be run with both\nimplementation but some examples will fail depending on the\nimplementation. To make things clear, I'll use some annotation and you\ncan yourself check which version you are using with::\n\n $ shyaml -V | grep \"^libyaml used:\" ## shtest: if-success-set LIBYAML\n libyaml used: True\n\n\nUsage\n=====\n\n``shyaml`` takes its YAML input file from standard input ONLY. So let's\ndefine here a common YAML input for the next examples::\n\n $ cat < test.yaml\n name: \"MyName !!\"\n subvalue:\n how-much: 1.1\n how-many: 2\n things:\n - first\n - second\n - third\n maintainer: \"Valentin Lab\"\n description: |\n Multiline description:\n Line 1\n Line 2\n subvalue.how-much: 1.2\n subvalue.how-much\\more: 1.3\n subvalue.how-much\\.more: 1.4\n EOF\n\n\nGeneral browsing struct and displaying simple values\n----------------------------------------------------\n\nSimple query of simple attribute::\n\n $ cat test.yaml | shyaml get-value name\n MyName !!\n\nQuery nested attributes by using '.' between key labels::\n\n $ cat test.yaml | shyaml get-value subvalue.how-much\n 1.1\n\nGet type of attributes::\n\n $ cat test.yaml | shyaml get-type name\n str\n $ cat test.yaml | shyaml get-type subvalue.how-much\n float\n\nGet length of structures or sequences::\n\n $ cat test.yaml | shyaml get-length subvalue\n 5\n $ cat test.yaml | shyaml get-length subvalue.things\n 3\n\nBut this won't work on other types::\n\n $ cat test.yaml | shyaml get-length name\n Error: get-length does not support 'str' type. Please provide or select a sequence or struct.\n\n\nParse structure\n---------------\n\nGet sub YAML from a structure attribute::\n\n $ cat test.yaml | shyaml get-type subvalue\n struct\n $ cat test.yaml | shyaml get-value subvalue ## shtest: ignore-if LIBYAML\n how-much: 1.1\n how-many: 2\n things:\n - first\n - second\n - third\n maintainer: Valentin Lab\n description: 'Multiline description:\n\n Line 1\n\n Line 2\n\n '\n\nIteration through keys only::\n\n $ cat test.yaml | shyaml keys\n name\n subvalue\n subvalue.how-much\n subvalue.how-much\\more\n subvalue.how-much\\.more\n\nIteration through keys only (``\\0`` terminated strings)::\n\n $ cat test.yaml | shyaml keys-0 subvalue | xargs -0 -n 1 echo \"VALUE:\"\n VALUE: how-much\n VALUE: how-many\n VALUE: things\n VALUE: maintainer\n VALUE: description\n\nIteration through values only (``\\0`` terminated string highly recommended)::\n\n $ cat test.yaml | shyaml values-0 subvalue |\n while IFS='' read -r -d $'\\0' value; do\n echo \"RECEIVED: '$value'\"\n done\n RECEIVED: '1.1'\n RECEIVED: '2'\n RECEIVED: '- first\n - second\n - third\n '\n RECEIVED: 'Valentin Lab'\n RECEIVED: 'Multiline description:\n Line 1\n Line 2\n '\n\nIteration through keys and values (``\\0`` terminated string highly recommended)::\n\n $ read-0() {\n while [ \"$1\" ]; do\n IFS=$'\\0' read -r -d '' \"$1\" || return 1\n shift\n done\n } &&\n cat test.yaml | shyaml key-values-0 subvalue |\n while read-0 key value; do\n echo \"KEY: '$key'\"\n echo \"VALUE: '$value'\"\n echo\n done\n KEY: 'how-much'\n VALUE: '1.1'\n\n KEY: 'how-many'\n VALUE: '2'\n\n KEY: 'things'\n VALUE: '- first\n - second\n - third\n '\n\n KEY: 'maintainer'\n VALUE: 'Valentin Lab'\n\n KEY: 'description'\n VALUE: 'Multiline description:\n Line 1\n Line 2\n '\n \n\nNotice, that you'll get the same result using\n``get-values``. ``get-values`` will support sequences and struct,\nand ``key-values`` support only struct. (for a complete table of\nwhich function support what you can look at the usage line)\n\nAnd, if you ask for keys, values, key-values on non struct like, you'll\nget an error::\n\n $ cat test.yaml | shyaml keys name\n Error: keys does not support 'str' type. Please provide or select a struct.\n $ cat test.yaml | shyaml values subvalue.how-many\n Error: values does not support 'int' type. Please provide or select a struct.\n $ cat test.yaml | shyaml key-values subvalue.how-much\n Error: key-values does not support 'float' type. Please provide or select a struct.\n\n\nParse sequence\n--------------\n\nQuery a sequence with ``get-value``::\n\n $ cat test.yaml | shyaml get-value subvalue.things\n - first\n - second\n - third\n\nAnd access individual elements with python-like indexing::\n\n $ cat test.yaml | shyaml get-value subvalue.things.0\n first\n $ cat test.yaml | shyaml get-value subvalue.things.-1\n third\n $ cat test.yaml | shyaml get-value subvalue.things.5\n Error: invalid path 'subvalue.things.5', index 5 is out of range (3 elements in sequence).\n\nNote that this will work only with integer (preceded or not by a minus\nsign)::\n\n $ cat test.yaml | shyaml get-value subvalue.things.foo\n Error: invalid path 'subvalue.things.foo', non-integer index 'foo' provided on a sequence.\n\nMore usefull, parse a list in one go with ``get-values``::\n\n $ cat test.yaml | shyaml get-values subvalue.things\n first\n second\n third\n\nNote that the action is called ``get-values``, and that output is\nseparated by newline char(s) (which is os dependent), this can bring\nhavoc if you are parsing values containing newlines itself. Hopefully,\n``shyaml`` has a ``get-values-0`` to terminate strings by ``\\0`` char,\nwhich allows complete support of any type of values, including YAML.\n``get-values`` outputs key and values for ``struct`` types and only\nvalues for ``sequence`` types::\n\n $ cat test.yaml | shyaml get-values-0 subvalue |\n while IFS='' read -r -d '' key &&\n IFS='' read -r -d '' value; do\n echo \"'$key' -> '$value'\"\n done\n 'how-much' -> '1.1'\n 'how-many' -> '2'\n 'things' -> '- first\n - second\n - third\n '\n 'maintainer' -> 'Valentin Lab'\n 'description' -> 'Multiline description:\n Line 1\n Line 2\n '\n\nPlease note that, if ``get-values{,-0}`` actually works on ``struct``,\nit's maybe more explicit to use the equivalent ``key-values{,0}``. It\nshould be noted that ``key-values{,0}`` is not completly equivalent as\nit is meant to be used with ``struct`` only and will complain if not.\n\nYou should also notice that values that are displayed are YAML compatible. So\nif they are complex, you can re-use ``shyaml`` on them to parse their content.\n\nOf course, ``get-values`` should only be called on sequence elements::\n\n $ cat test.yaml | shyaml get-values name\n Error: get-values does not support 'str' type. Please provide or select a sequence or struct.\n\n\nParse YAML document streams\n---------------------------\n\nYAML input can be a stream of documents, the action will then be\napplied to each document::\n\n $ i=0; while true; do\n ((i++))\n echo \"ingests:\"\n echo \" - data: xxx\"\n echo \" id: tag-$i\"\n if ((i >= 3)); then\n break\n fi\n echo \"---\"\n done | shyaml get-value ingests.0.id | tr '\\0' '&'\n tag-1&tag-2&tag-3\n\n\nNotice that ``NUL`` char is used by default for separating output\niterations if not used in ``-y`` mode. You can use that to separate\neach output. ``-y`` mode will use conventional YAML way to separate\ndocuments (which is ``---``).\n\nSo::\n\n $ i=0; while true; do\n ((i++))\n echo \"ingests:\"\n echo \" - data: xxx\"\n echo \" id: tag-$i\"\n if ((i >= 3)); then\n break\n fi\n echo \"---\"\n done | shyaml get-value -y ingests.0.id\n tag-1\n ...\n ---\n tag-2\n ...\n ---\n tag-3\n ...\n\nNotice that it is not supported to use any query that can output more than one\nvalue (like all the query that can be suffixed with ``*-0``) with a multi-document\nYAML::\n\n $ i=0; while true; do\n ((i++))\n echo \"ingests:\"\n echo \" - data: xxx\"\n echo \" id: tag-$i\"\n if ((i >= 3)); then\n break\n fi\n echo \"---\"\n done | shyaml keys ingests.0 | tr '\\0' '&'\n Error: Source YAML is multi-document, which doesn't support any other action than get-type, get-length, get-value\n data\n id\n\nYou'll probably notice also, that output seems buffered. The previous\ncontent is displayed as a whole only at the end. If you need a\ncontinuous flow of YAML document, then the command line option ``-L``\nis required to force a non-buffered line-by-line reading of the file\nso as to ensure that each document is properly parsed as soon as\npossible. That means as soon as either a YAML document end is detected\n(``---`` or ``EOF``):\n\nWithout the ``-L``, if we kill our shyaml process before the end::\n\n $ i=0; while true; do\n ((i++))\n echo \"ingests:\"\n echo \" - data: xxx\"\n echo \" id: tag-$i\"\n if ((i >= 2)); then\n break\n fi\n echo \"---\"\n sleep 10\n done 2>/dev/null | shyaml get-value ingests.0.id & pid=$! ; sleep 2; kill $pid\n\n\nWith the ``-L``, if we kill our shyaml process before the end::\n\n $ i=0; while true; do\n ((i++))\n echo \"ingests:\"\n echo \" - data: xxx\"\n echo \" id: tag-$i\"\n if ((i >= 2)); then\n break\n fi\n echo \"---\"\n sleep 10\n done 2>/dev/null | shyaml get-value -L ingests.0.id & pid=$! ; sleep 2; kill $pid\n tag-1\n\n\nUsing ``-y`` is required to force a YAML output that will be also parseable as a stream,\nwhich could help you chain shyaml calls::\n\n $ i=0; while true; do\n ((i++))\n echo \"ingests:\"\n echo \" - data: xxx\"\n echo \" id: tag-$i\"\n if ((i >= 3)); then\n break\n fi\n echo \"---\"\n sleep 0.2\n done | shyaml get-value ingests.0 -L -y | shyaml get-value id | tr '\\0' '\\n'\n tag-1\n tag-2\n tag-3\n\n\nAn empty string will be still considered as an empty YAML document::\n\n $ echo | shyaml get-value \"toto\"\n Error: invalid path 'toto', can't query subvalue 'toto' of a leaf (leaf value is None).\n\n\nKeys containing '.'\n-------------------\n\nUse and ``\\\\`` to access keys with ``\\`` and ``\\.`` to access keys\nwith literal ``.`` in them. Just be mindful of shell escaping (example\nuses single quotes)::\n\n $ cat test.yaml | shyaml get-value 'subvalue\\.how-much'\n 1.2\n $ cat test.yaml | shyaml get-value 'subvalue\\.how-much\\\\more'\n 1.3\n $ cat test.yaml | shyaml get-value 'subvalue\\.how-much\\\\.more' default\n default\n\nThis last one didn't escape correctly the last ``.``, this is the\ncorrect version::\n\n $ cat test.yaml | shyaml get-value 'subvalue\\.how-much\\\\\\.more' default\n 1.4\n\n\nempty string keys\n-----------------\n\nYep, ``shyaml`` supports empty stringed keys. You might never have use\nfor this one, but it's in YAML specification. So ``shyaml`` supports\nit::\n\n $ cat < test.yaml\n empty-sub-key:\n \"\":\n a: foo\n \"\": bar\n \"\": wiz\n EOF\n\n $ cat test.yaml | shyaml get-value empty-sub-key..\n bar\n $ cat test.yaml | shyaml get-value ''\n wiz\n\nPlease notice that one empty string is different than no string at all::\n\n $ cat < test.yaml\n \"\":\n a: foo\n b: bar\n \"x\": wiz\n EOF\n $ cat test.yaml | shyaml keys\n\n x\n $ cat test.yaml | shyaml keys ''\n a\n b\n\nThe first asks for keys of the root YAML, the second asks for keys of the\ncontent of the empty string named element located in the root YAML.\n\n\nHandling missing paths\n----------------------\n\nThere is a third argument on the command line of shyaml which is the\nDEFAULT argument. If the given KEY was not found in the YAML\nstructure, then ``shyaml`` would return what you provided as DEFAULT.\n\nAs of version < 0.3, this argument was defaulted to the empty\nstring. For all version above 0.3 (included), if not provided, then\nan error message will be printed::\n\n $ echo \"a: 3\" | shyaml get-value a mydefault\n 3\n\n $ echo \"a: 3\" | shyaml get-value b mydefault\n mydefault\n\n $ echo \"a: 3\" | shyaml get-value b\n Error: invalid path 'b', missing key 'b' in struct.\n\nYou can emulate pre v0.3 behavior by specifying explicitely an empty\nstring as third argument::\n\n $ echo \"a: 3\" | shyaml get-value b ''\n\nStarting with version 0.6, you can also use the ``-q`` or ``--quiet`` to fail\nsilently in case of KEY not found in the YAML structure::\n\n $ echo \"a: 3\" | shyaml -q get-value b; echo \"errlvl: $?\"\n errlvl: 1\n $ echo \"a: 3\" | shyaml -q get-value a; echo \"errlvl: $?\"\n 3errlvl: 0\n\n\nOrdered mappings\n----------------\n\nCurrently, using ``shyaml`` in a shell script involves happily taking\nYAML inputs and outputting YAML outputs that will further be processed.\n\nAnd this works very well.\n\nBefore version ``0.4.0``, ``shyaml`` would boldly re-order (sorting them\nalphabetically) the keys in mappings. If this should be considered\nharmless per specification (mappings are indeed supposed to be\nunordered, this means order does not matter), in practical, YAML users\ncould feel wronged by ``shyaml`` when there YAML got mangled and they\nwanted to give a meaning to the basic YAML mapping.\n\nWho am I to forbid such usage of YAML mappings ? So starting from\nversion ``0.4.0``, ``shyaml`` will happily keep the order of your\nmappings::\n\n $ cat < test.yaml\n mapping:\n a: 1\n c: 2\n b: 3\n EOF\n\nFor ``shyaml`` version before ``0.4.0``::\n\n # shyaml get-value mapping < test.yaml\n a: 1\n b: 3\n c: 2\n\nFor ``shyaml`` version including and after ``0.4.0``::\n\n $ shyaml get-value mapping < test.yaml\n a: 1\n c: 2\n b: 3\n\n\nStrict YAML for further processing\n----------------------------------\n\nProcessing yaml can be done recursively and extensively through using\nthe output of ``shyaml`` into ``shyaml``. Most of its output is itself\nYAML. Most ? Well, for ease of use, literal keys (string, numbers) are\noutputed directly without YAML quotes, which is often convenient.\n\nBut this has the consequence of introducing inconsistent behavior. So\nwhen processing YAML coming out of shyaml, you should probably think\nabout using the ``--yaml`` (or ``-y``) option to output only strict YAML.\n\nWith the drawback that when you'll want to output string, you'll need to\ncall a last time ``shyaml get-value`` to explicitely unquote the YAML.\n\n\nObject Tag\n----------\n\nYAML spec allows object tags which allows you to map local data to\nobjects in your application.\n\nWhen using ``shyaml``, we do not want to mess with these tags, but still\nallow parsing their internal structure.\n\n``get-type`` will correctly give you the type of the object::\n\n $ cat < test.yaml\n %TAG !e! tag:example.com,2000:app/\n ---\n - !e!foo \"bar\"\n EOF\n\n $ shyaml get-type 0 < test.yaml\n tag:example.com,2000:app/foo\n\n``get-value`` with ``-y`` (see section Strict YAML) will give you the\ncomplete yaml tagged value::\n\n $ shyaml get-value -y 0 < test.yaml ## shtest: ignore-if LIBYAML\n ! 'bar'\n\n\nAnother example::\n\n $ cat < test.yaml\n %TAG ! tag:clarkevans.com,2002:\n --- !shape\n # Use the ! handle for presenting\n # tag:clarkevans.com,2002:circle\n - !circle\n center: &ORIGIN {x: 73, y: 129}\n radius: 7\n - !line\n start: *ORIGIN\n finish: { x: 89, y: 102 }\n - !label\n start: *ORIGIN\n color: 0xFFEEBB\n text: Pretty vector drawing.\n EOF\n $ shyaml get-type 2 < test.yaml\n tag:clarkevans.com,2002:label\n\nAnd you can still traverse internal value::\n\n $ shyaml get-value -y 2.start < test.yaml\n x: 73\n y: 129\n\n\nNote that all global tags will be resolved and simplified (as\n``!!map``, ``!!str``, ``!!seq``), but not unknown local tags::\n\n $ cat < test.yaml\n %YAML 1.1\n ---\n !!map {\n ? !!str \"sequence\"\n : !!seq [ !!str \"one\", !!str \"two\" ],\n ? !!str \"mapping\"\n : !!map {\n ? !!str \"sky\" : !myobj \"blue\",\n ? !!str \"sea\" : !!str \"green\",\n },\n }\n EOF\n\n $ shyaml get-value < test.yaml ## shtest: ignore-if LIBYAML\n sequence:\n - one\n - two\n mapping:\n sky: !myobj 'blue'\n sea: green\n\n\nEmpty documents\n---------------\n\nWhen provided with an empty document, ``shyaml`` will consider the\ndocument to hold a ``null`` value::\n\n $ echo | shyaml get-value -y\n null\n ...\n\n\nUsage string\n------------\n\nA quick reminder of what is available will be printed when calling\n``shyaml`` without any argument::\n\n $ shyaml\n Error: Bad number of arguments.\n Usage:\n\n shyaml {-h|--help}\n shyaml {-V|--version}\n shyaml [-y|--yaml] [-q|--quiet] ACTION KEY [DEFAULT]\n \n\nThe full help is available through the usage of the standard ``-h`` or\n``-help``::\n\n\n $ shyaml --help\n\n Parses and output chosen subpart or values from YAML input.\n It reads YAML in stdin and will output on stdout it's return value.\n\n Usage:\n\n shyaml {-h|--help}\n shyaml {-V|--version}\n shyaml [-y|--yaml] [-q|--quiet] ACTION KEY [DEFAULT]\n\n\n Options:\n\n -y, --yaml\n Output only YAML safe value, more precisely, even\n literal values will be YAML quoted. This behavior\n is required if you want to output YAML subparts and\n further process it. If you know you have are dealing\n with safe literal value, then you don't need this.\n (Default: no safe YAML output)\n\n -q, --quiet\n In case KEY value queried is an invalid path, quiet\n mode will prevent the writing of an error message on\n standard error.\n (Default: no quiet mode)\n\n -L, --line-buffer\n Force parsing stdin line by line allowing to process\n streamed YAML as it is fed instead of buffering\n input and treating several YAML streamed document\n at once. This is likely to have some small performance\n hit if you have a huge stream of YAML document, but\n then you probably don't really care about the\n line-buffering.\n (Default: no line buffering)\n\n ACTION Depending on the type of data you've targetted\n thanks to the KEY, ACTION can be:\n\n These ACTIONs applies to any YAML type:\n\n get-type ## returns a short string\n get-value ## returns YAML\n\n These ACTIONs applies to 'sequence' and 'struct' YAML type:\n\n get-values{,-0} ## returns list of YAML\n get-length ## returns an integer\n\n These ACTION applies to 'struct' YAML type:\n\n keys{,-0} ## returns list of YAML\n values{,-0} ## returns list of YAML\n key-values,{,-0} ## returns list of YAML\n\n Note that any value returned is returned on stdout, and\n when returning ``list of YAML``, it'll be separated by\n a newline or ``NUL`` char depending of you've used the\n ``-0`` suffixed ACTION.\n\n KEY Identifier to browse and target subvalues into YAML\n structure. Use ``.`` to parse a subvalue. If you need\n to use a literal ``.`` or ``\\``, use ``\\`` to quote it.\n\n Use struct keyword to browse ``struct`` YAML data and use\n integers to browse ``sequence`` YAML data.\n\n DEFAULT if not provided and given KEY do not match any value in\n the provided YAML, then DEFAULT will be returned. If no\n default is provided and the KEY do not match any value\n in the provided YAML, shyaml will fail with an error\n message.\n\n Examples:\n\n ## get last grocery\n cat recipe.yaml | shyaml get-value groceries.-1\n\n ## get all words of my french dictionary\n cat dictionaries.yaml | shyaml keys-0 french.dictionary\n\n ## get YAML config part of 'myhost'\n cat hosts_config.yaml | shyaml get-value cfgs.myhost\n\n \n\nUsing invalid keywords will issue an error and the usage message::\n\n $ shyaml get-foo\n Error: 'get-foo' is not a valid action.\n Usage:\n\n shyaml {-h|--help}\n shyaml {-V|--version}\n shyaml [-y|--yaml] [-q|--quiet] ACTION KEY [DEFAULT]\n \n\n\nVersion information\n-------------------\n\nYou can get useful information (in case of a bug) or if you want to\ncheck if shyaml is using the ``libyaml`` C bindings, thanks to\n``shyaml --version`` (or ``-V``)::\n\n # shyaml -V ## Example of possible output\n version: unreleased\n PyYAML: 3.13\n libyaml available: 0.1.6\n libyaml used: True\n Python: 2.7.8 (default, Oct 20 2014, 15:05:19) [GCC 4.9.1]\n\nNote that you can force to use the python implementation even if\n``libyaml`` is available using ``FORCE_PYTHON_YAML_IMPLEMENTATION``::\n\n $ FORCE_PYTHON_YAML_IMPLEMENTATION=1 shyaml --version | grep \"^libyaml used:\"\n libyaml used: False\n\n\nPython API\n==========\n\n``shyaml`` can be used from within python if you need so::\n\n >>> import shyaml\n >>> try:\n ... from StringIO import StringIO\n ... except ImportError:\n ... from io import StringIO\n\n >>> yaml_content = StringIO(\"\"\"\n ... a: 1.1\n ... b:\n ... x: foo\n ... y: bar\n ... \"\"\")\n\n >>> for out in shyaml.do(stream=yaml_content,\n ... action=\"get-type\",\n ... key=\"a\"):\n ... print(repr(out))\n 'float'\n\nPlease note that ``shyaml.do(..)`` outputs a generator iterating\nthrough all the yaml documents of the stream. In most usage case,\nyou'll have only one document.\n\nYou can have a peek at the code, the ``do(..)`` function has a documented\nprototype.\n\n\nContributing\n============\n\nAny suggestion or issue is welcome. Push request are very welcome,\nplease check out the guidelines.\n\n\nPush Request Guidelines\n-----------------------\n\nYou can send any code. I'll look at it and will integrate it myself in\nthe code base and leave you as the author. This process can take time and\nit'll take less time if you follow the following guidelines:\n\n- check your code with PEP8 or pylint. Try to stick to 80 columns wide.\n- separate your commits per smallest concern.\n- each commit should pass the tests (to allow easy bisect)\n- each functionality/bugfix commit should contain the code, tests,\n and doc.\n- prior minor commit with typographic or code cosmetic changes are\n very welcome. These should be tagged in their commit summary with\n ``!minor``.\n- the commit message should follow gitchangelog rules (check the git\n log to get examples)\n- if the commit fixes an issue or finished the implementation of a\n feature, please mention it in the summary.\n\nIf you have some questions about guidelines which is not answered here,\nplease check the current ``git log``, you might find previous commit that\nwould show you how to deal with your issue.\n\n\nLicense\n=======\n\nCopyright (c) 2018 Valentin Lab.\n\nLicensed under the `BSD License`_.\n\n.. _BSD License: http://raw.github.com/0k/shyaml/master/LICENSE\n\nChangelog\n=========\n\n\n0.6.1 (2018-12-14)\n------------------\n\nNew\n~~~\n- Added ``-V|--version`` shyaml command line option to get full version\n information. [Valentin Lab]\n\n This includes ``shyaml``'s version, but also PyYAML version installed,\n and availability of the C libyaml bindings, and if they are used.\n\n\nFix\n~~~\n- Document behavior on empty input. [Valentin Lab]\n\n\n0.6.0 (2018-12-13)\n------------------\n\nNew\n~~~\n- Python 3.7 compatibility. [Valentin Lab]\n- Support YAML streams (fixes #32) [Valentin Lab]\n- ``shyaml`` can now be used from within python. [Valentin Lab]\n\n You can import ``shyaml`` and launch inner function in a python\n program thanks to accessible API.\n\n- ``-q`` or ``--quiet`` to avoid printing error message on missing\n paths. (fix #14) [Valentin Lab]\n- Full support of yaml tags (fix #40) [Valentin Lab]\n\nChanges\n~~~~~~~\n- Finish to document all behaviors. [Valentin Lab]\n\nFix\n~~~\n- Script was not installed correctly on windows. (fix #38) [Valentin\n Lab]\n- Python 3 incompatible code removed in ``get-values{,-0}``. [Valentin\n Lab]\n- Use C yaml implementation from ``libyaml`` when available (fix #3)\n [Valentin Lab]\n\n\n0.5.2 (2018-04-25)\n------------------\n\nFix\n~~~\n- Missing doc about ``get-length`` and typo corrected in help message.\n [Valentin Lab]\n- Python 3.0 exception when querying for missing keys removed. (fix #34)\n [Valentin Lab]\n\n\n0.5.1 (2018-03-06)\n------------------\n\nNew\n~~~\n- Add ``requirements`` section. [Valentin Lab]\n- Add command ``get-length`` for structures or sequences (closes #25,\n fixes #20) [gt3389b]\n\nFix\n~~~\n- Add homebrew installation instructions. [Zhiming Wang]\n- Using ``-y`` with no argument casted an exception instead of\n displaying usage. (fixes #41) [Valentin Lab]\n\n\n0.5.0 (2017-03-23)\n------------------\n\nNew\n~~~\n- Introduce ``-y`` option to force full yaml output. [Valentin Lab]\n\n By default, output of literal string where directly printed unquoted and\n useable. If this is very useful, there are many cases where this is not\n consistent and is ambiguous, especially when this string is itself a\n YAML representation.\n\n This could actually lead to subtle bugs occuring when re-using\n ``shyaml`` output for further parsing.\n\n So if you want unquoted literal types to further process these elements,\n use ``-y``. If you expect a string and wan't it plain raw, avoid ``-y``.\n\n\n\n0.4.2 (2017-02-08)\n------------------\n\nFix\n~~~\n- ``<<:`` YAML merging facility support. [Valentin Lab]\n\n\n0.4.1 (2016-08-29)\n------------------\n\nFix\n~~~\n- On python2, unicode strings would be displayed literaly (fixes #26).\n [Valentin Lab]\n\n ``str`` is not the correct type to match all type of strings in python\n 2. So unicode strings (usually produced thanks to accentuated\n characters) would be printed quoted (the python representation).\n\n\n\n0.4.0 (2016-01-11)\n------------------\n\nNew\n~~~\n- Avoid reordering mapping keys in the output. [Valentin Lab]\n\n Several commands from ``shyaml`` will output YAML themselves. But in the\n process, the whole content is parsed and re-dumped. This can lead to\n differences with the original inputs. The ordering of keys can be\n annoying in some use cases, even if, well mappings should not be\n ordered, these are ordered by the sequential nature of a file, and using\n 'omap' is often tedious. ``shyaml`` now keep the original order the keys\n were met.\n\n\n\n0.3.4 (2015-03-06)\n------------------\n\nNew\n~~~\n- Added a nice ``--help`` doc. [Valentin Lab]\n- Added ``key-values{,-0}`` argument to get key and values in one go.\n [Valentin Lab]\n- Error is casted if no default specified and the key is not existent.\n [Valentin Lab]\n\nChanges\n~~~~~~~\n- Be more informative in some key related error message. (fixed #7)\n [Valentin Lab]\n\n\n0.2.2 (2014-03-19)\n------------------\n\nFix\n~~~\n- No argument at all was treated as one empty string argument. Thx Yassa\n Bb. (fixes #6) [Valentin Lab]\n\n\n0.2.1 (2013-11-23)\n------------------\n\nNew\n~~~\n- Python3 support. [Valentin Lab]\n\nFix\n~~~\n- Keys can now be empty or contains dots ``.`` if they are properly\n escaped (fixes #5, thanks to Daniel Giribet) [Daniel Giribet]\n\n\n0.2.0 (2013-05-03)\n------------------\n\nNew\n~~~\n- Support for iteration in sequence and struct in one go. [Valentin Lab]\n\nFix\n~~~\n- Forgot to mention ``./autogen.sh`` execution when getting the code\n from git, and be more clear about other means of installation.\n [Valentin Lab]\n\n\n0.1.3 (2013-03-29)\n------------------\n\nFix\n~~~\n- Removed the spurious line feed at the end of any ``shyaml`` output.\n [Valentin Lab]\n- Support querying for... nothing. Which now returns the whole input\n YAML. [Valentin Lab]\n\n Before this fix, you couldn't ask for ``shyaml get-value`` alone, even if it\n makes sense but is completely useless as it returns the whole YAML input.\n\n\n\n0.1.2 (2013-03-23)\n------------------\n\nNew\n~~~\n- Support for list indexes (see README.rst). [Valentin Lab]\n- Catch exceptions when parsing structure and output a clean error\n message. [Valentin Lab]\n\n\n0.1.1 (2013-02-27)\n------------------\n\nChanges\n~~~~~~~\n- Some minor enhancements, and an \"Install\" section. [Valentin Lab]\n\n\n0.1.0 (2013-02-27)\n------------------\n- First import. [Valentin Lab]\n\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://github.com/0k/shyaml",
"keywords": "",
"license": "BSD 3-Clause License",
"maintainer": "",
"maintainer_email": "",
"name": "shyaml",
"package_url": "https://pypi.org/project/shyaml/",
"platform": "",
"project_url": "https://pypi.org/project/shyaml/",
"project_urls": {
"Homepage": "http://github.com/0k/shyaml"
},
"release_url": "https://pypi.org/project/shyaml/0.6.1/",
"requires_dist": [
"pyyaml"
],
"requires_python": "",
"summary": "YAML for command line",
"version": "0.6.1"
},
"last_serial": 4600080,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "f9f11b6b45e0d9d8417413742e729cb1",
"sha256": "624e3a0c8f339a6d850a173a862b5c08a646198b84cbf6069bf6491d7351e721"
},
"downloads": -1,
"filename": "shyaml-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "f9f11b6b45e0d9d8417413742e729cb1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2572,
"upload_time": "2013-02-27T12:22:12",
"url": "https://files.pythonhosted.org/packages/3f/67/cc8868a4b249a9b36fc3b183606e6863266be4cd59b5f258e9a4d6c06e8f/shyaml-0.1.0.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "feecdba714bfdf2d82965f790806e59b",
"sha256": "ff2fcb52e89a64d549be0170fab41d9ec5ec28e9b1e8c0328ab0b652933fa8c9"
},
"downloads": -1,
"filename": "shyaml-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "feecdba714bfdf2d82965f790806e59b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2722,
"upload_time": "2013-02-27T13:34:38",
"url": "https://files.pythonhosted.org/packages/f9/a2/efe245b02836f5a572158d9a92accccc476c13d6fb9aa3c366da336cabc3/shyaml-0.1.1.tar.gz"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "e162646e4ecd45e809444b14a8e150f8",
"sha256": "b0a80617303157c80bcbb48cf1ebfe5206d05de97ed2e6b1ef232fd35c46a3e3"
},
"downloads": -1,
"filename": "shyaml-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "e162646e4ecd45e809444b14a8e150f8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3106,
"upload_time": "2013-03-23T10:36:37",
"url": "https://files.pythonhosted.org/packages/86/bf/4ae4c2679528890d28269b02f6067d1a525b573023a7eee60e632e1a6616/shyaml-0.1.2.tar.gz"
}
],
"0.1.3": [
{
"comment_text": "",
"digests": {
"md5": "6783ac73e4da96737f3c6bda6511579b",
"sha256": "1563736dd02b21520c80a0acd978b6efba81868d514987a082d79378154644c2"
},
"downloads": -1,
"filename": "shyaml-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "6783ac73e4da96737f3c6bda6511579b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4508,
"upload_time": "2013-05-02T08:29:29",
"url": "https://files.pythonhosted.org/packages/9a/10/1a92960f17d1f4f50a958f32d0bc6e72ca0eb6775fc55514959f4f634b15/shyaml-0.1.3.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "d5b136fd54d86bca0bd04b80e21cd095",
"sha256": "cf9aa54c452ca8f2ed8e6f0ee910615e926e374c244267b547a4cc713b03fe95"
},
"downloads": -1,
"filename": "shyaml-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "d5b136fd54d86bca0bd04b80e21cd095",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5964,
"upload_time": "2013-05-03T12:10:17",
"url": "https://files.pythonhosted.org/packages/86/5c/2c0a4f104581dfe644786a3f65a25a7a973ff708e1f99b081c4ab5d3f286/shyaml-0.2.0.tar.gz"
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "15a24b1cbd46650185bdcb42b7f57c47",
"sha256": "953cdd5b16d7a8b77831364e262123afb049a2277540f6399a3110e6f0e92314"
},
"downloads": -1,
"filename": "shyaml-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "15a24b1cbd46650185bdcb42b7f57c47",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7663,
"upload_time": "2013-11-23T07:52:47",
"url": "https://files.pythonhosted.org/packages/67/c4/da928ea5fcc2b75a30c23111ce3cb432e14a46edeb709828bcad55f91c99/shyaml-0.2.1.tar.gz"
}
],
"0.2.2": [
{
"comment_text": "",
"digests": {
"md5": "1004b91b2f62b65342339014642d5fed",
"sha256": "12c79cd057cb13a6fe350e31f9f2399c61d4bef4045cd1889910eb4a466e5c64"
},
"downloads": -1,
"filename": "shyaml-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "1004b91b2f62b65342339014642d5fed",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6982,
"upload_time": "2014-03-19T08:54:28",
"url": "https://files.pythonhosted.org/packages/b8/f1/624ffacc96de89796df873ca2b2a4a49006edd721f0df04be2ebc05a0b64/shyaml-0.2.2.tar.gz"
}
],
"0.3.4": [
{
"comment_text": "",
"digests": {
"md5": "f3d899d3e0696e5afef93d3c9395b5fe",
"sha256": "c9a3c664228a52b4457e0fb5cd2877c4d3d99ff3b1e853d3dbbc680367cec4e5"
},
"downloads": -1,
"filename": "shyaml-0.3.4.tar.gz",
"has_sig": false,
"md5_digest": "f3d899d3e0696e5afef93d3c9395b5fe",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13757,
"upload_time": "2015-03-06T03:22:49",
"url": "https://files.pythonhosted.org/packages/03/db/235f6bdbe1de94d97492560c1cce56a2e84ec06b9820f75a73a89c5b3057/shyaml-0.3.4.tar.gz"
}
],
"0.4.0": [
{
"comment_text": "",
"digests": {
"md5": "39fc0889f9cbde95f594a0c9c40e1f98",
"sha256": "839e560d0746c4896b5c0947f2f9509b3c6e59ec47d878d28253101b3646928e"
},
"downloads": -1,
"filename": "shyaml-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "39fc0889f9cbde95f594a0c9c40e1f98",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15694,
"upload_time": "2016-01-12T07:41:15",
"url": "https://files.pythonhosted.org/packages/fc/70/03a730e53ce52bea3197d85b0f53a9bb861eb27431827025a26a3a0ea5c4/shyaml-0.4.0.tar.gz"
}
],
"0.4.1": [
{
"comment_text": "",
"digests": {
"md5": "5cc41a1d50c1ff8ad423fe8bc395c6c9",
"sha256": "a1535c25bf0058563e03ea8cbad8c4dc755ed231e6a9f3f584982994f19eae59"
},
"downloads": -1,
"filename": "shyaml-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "5cc41a1d50c1ff8ad423fe8bc395c6c9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16034,
"upload_time": "2016-08-31T11:37:35",
"url": "https://files.pythonhosted.org/packages/67/70/1133a5817bc62ff4e7ceee59edb95d127092db9385cc7cda5fcac93c494a/shyaml-0.4.1.tar.gz"
}
],
"0.4.2": [
{
"comment_text": "",
"digests": {
"md5": "355187ea0da3da570e3236e39213d9bd",
"sha256": "ec87ce7b633fe0b8a16b9491e7434fd4345e55aa6343a567bc22c50190ba4d0f"
},
"downloads": -1,
"filename": "shyaml-0.4.2.tar.gz",
"has_sig": false,
"md5_digest": "355187ea0da3da570e3236e39213d9bd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16180,
"upload_time": "2017-02-08T08:38:27",
"url": "https://files.pythonhosted.org/packages/c7/2e/91fa96f88c40fe65c8a85d5874090277b83024f872755f963d676a2bf177/shyaml-0.4.2.tar.gz"
}
],
"0.5.0": [
{
"comment_text": "",
"digests": {
"md5": "a6ffae6cb22fdf1f1a8aa6581f7a2aa7",
"sha256": "c58442f8e068d3e044a1d0543c8918855ce7b421ee5c0c320effab4fd0432f0b"
},
"downloads": -1,
"filename": "shyaml-0.5.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "a6ffae6cb22fdf1f1a8aa6581f7a2aa7",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 19499,
"upload_time": "2017-03-27T23:16:54",
"url": "https://files.pythonhosted.org/packages/f5/de/96ec4be1b908b2316726b97de53a806f06d10c7ed8ad83e6710b6e8cf6c1/shyaml-0.5.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "c1e93dddb134cf80a77b91d09f99f6a6",
"sha256": "b3711011d37aae4e07b68b31e989aa3715548d5b0759898eda2ba437b9ae3c36"
},
"downloads": -1,
"filename": "shyaml-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "c1e93dddb134cf80a77b91d09f99f6a6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14165,
"upload_time": "2017-03-27T23:16:58",
"url": "https://files.pythonhosted.org/packages/f7/ec/4143e8ba92d1d3654535f17bc4354f72d3a3e7d6984926d9a7ce1dec46ed/shyaml-0.5.0.tar.gz"
}
],
"0.5.2": [
{
"comment_text": "",
"digests": {
"md5": "24bffab4a51ebda2b3398c3f9a5a2aea",
"sha256": "57a190cdf3c624c1b68fc5e3f7daa0b6d97c42113f532f67bedfc02636fbc1ca"
},
"downloads": -1,
"filename": "shyaml-0.5.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "24bffab4a51ebda2b3398c3f9a5a2aea",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 20252,
"upload_time": "2018-04-25T03:18:17",
"url": "https://files.pythonhosted.org/packages/61/26/119741864bb7d4849860c0ab8990be2f4a5fa6d7418d7332dd5861b051e8/shyaml-0.5.2-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "008c4d3ce9722b2a266d3731632fc741",
"sha256": "80650ebfe6fa2e16083451d515207472d60990c1c15fc0fd607c27077790ac23"
},
"downloads": -1,
"filename": "shyaml-0.5.2.tar.gz",
"has_sig": false,
"md5_digest": "008c4d3ce9722b2a266d3731632fc741",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14670,
"upload_time": "2018-04-25T03:18:19",
"url": "https://files.pythonhosted.org/packages/33/34/7ad4b645bdd5c6cd100748fc2429924b553439221aa9b9386f658e5a05f2/shyaml-0.5.2.tar.gz"
}
],
"0.6.0": [
{
"comment_text": "",
"digests": {
"md5": "632b463baa880dd3bcfcb9dae241fe5f",
"sha256": "68bd64ca1e6474edf98dfda0ccaa2b94868203a2e907e3208fe4dfe999b0a01f"
},
"downloads": -1,
"filename": "shyaml-0.6.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "632b463baa880dd3bcfcb9dae241fe5f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 28644,
"upload_time": "2018-12-13T18:45:27",
"url": "https://files.pythonhosted.org/packages/f5/5f/605e0e641218a8fd903e3ca509912159cfd6d2d8a1ffb75a0a13f003e0aa/shyaml-0.6.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e7a745a1501f7d5f4df16c173b03b118",
"sha256": "c6f0f7d7dc85707a540bdec202eab59ae475cbcd1d582cde623799b1b21df1dc"
},
"downloads": -1,
"filename": "shyaml-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "e7a745a1501f7d5f4df16c173b03b118",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 36753,
"upload_time": "2018-12-13T18:45:29",
"url": "https://files.pythonhosted.org/packages/57/cf/1dab362066010f5dd9a0b98d5490f349f00fd69e2963515ad91c7edaec2f/shyaml-0.6.0.tar.gz"
}
],
"0.6.1": [
{
"comment_text": "",
"digests": {
"md5": "4fdacd5a7c63a1e28c0db75280c861f8",
"sha256": "ac9066eed5b8445de1f83a99106ca96a77900b6873de327fd50d3e3102084752"
},
"downloads": -1,
"filename": "shyaml-0.6.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "4fdacd5a7c63a1e28c0db75280c861f8",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 30260,
"upload_time": "2018-12-14T16:54:34",
"url": "https://files.pythonhosted.org/packages/29/84/30051cc954696388d63bac118278e5c5a02d1765eed257b41b63a8b9c333/shyaml-0.6.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "8988c51d3810bc8ed707ea23d999fad8",
"sha256": "3a57e380f66043c661d417106a0f101f8068c80caa2afef57c90447b88526c3d"
},
"downloads": -1,
"filename": "shyaml-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "8988c51d3810bc8ed707ea23d999fad8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 39006,
"upload_time": "2018-12-14T16:54:36",
"url": "https://files.pythonhosted.org/packages/bc/ca/d8c47fad7a6ce01ddd2b7093673433dbfae414015f971ea7ffda56da125f/shyaml-0.6.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "4fdacd5a7c63a1e28c0db75280c861f8",
"sha256": "ac9066eed5b8445de1f83a99106ca96a77900b6873de327fd50d3e3102084752"
},
"downloads": -1,
"filename": "shyaml-0.6.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "4fdacd5a7c63a1e28c0db75280c861f8",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 30260,
"upload_time": "2018-12-14T16:54:34",
"url": "https://files.pythonhosted.org/packages/29/84/30051cc954696388d63bac118278e5c5a02d1765eed257b41b63a8b9c333/shyaml-0.6.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "8988c51d3810bc8ed707ea23d999fad8",
"sha256": "3a57e380f66043c661d417106a0f101f8068c80caa2afef57c90447b88526c3d"
},
"downloads": -1,
"filename": "shyaml-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "8988c51d3810bc8ed707ea23d999fad8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 39006,
"upload_time": "2018-12-14T16:54:36",
"url": "https://files.pythonhosted.org/packages/bc/ca/d8c47fad7a6ce01ddd2b7093673433dbfae414015f971ea7ffda56da125f/shyaml-0.6.1.tar.gz"
}
]
}