{ "info": { "author": "Lucas Flowers", "author_email": "laf62@case.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Other Audience", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3.5", "Topic :: Other/Nonlisted Topic", "Topic :: Utilities" ], "description": "=======\nsnutree\n=======\n\n.. contents::\n :backlinks: none\n\n.. sectnum::\n\nIntroduction\n============\n\nSome Greek-letter organizations assign big brothers or big sisters (\"bigs\") to\nnew members (\"littles\"). This program visualizes such relationships as a family\ntree, using Graphviz.\n\nUsage\n=====\n\nBasic Usage\n-----------\n\nThe simplest usage of ``snutree`` is:\n\n.. code:: bash\n\n snutree -o output.pdf input1.csv input2.csv ...\n\nIn this example, the CSV should have columns called ``name``, ``big_name``, and\n``semester`` where ``semester``\\s are strings starting with \"Fall\" or \"Spring\"\nand ending with a year (e.g., \"Fall 2014\" or \"Spring 1956\"). With this input,\n``snutree`` will append all the input tables together, convert them into a\ntree, and output the tree using Graphviz. Each member will be put on a row\nrepresenting the semester they joined.\n\nChanging Schemas\n----------------\n\nThe (``name``, ``big_name``, ``semester``) headers consist of the\n\"basic\" schema. There are a few other schemas available. They are:\n\n+---------+------------------------------------------------------------------+\n| Schema | Headers |\n+=========+==================================================================+\n| basic | name, big\\_name, semester |\n+---------+------------------------------------------------------------------+\n| keyed | id, name, big\\_id, semester |\n+---------+------------------------------------------------------------------+\n| chapter | child, parent, founded |\n+---------+------------------------------------------------------------------+\n| sigmanu | badge, first\\_name, preferred\\_name, last\\_name, big\\_badge, |\n| | status, semester, affiliations |\n+---------+------------------------------------------------------------------+\n\nChanging schemas can be done with the ``--schema`` option. For example, this\nwill print the DOT source code of a family tree of chapters to the terminal:\n\n.. code:: bash\n\n snutree --schema chapter chapters.csv\n\nA custom Python module may be used as a schema:\n\n.. code:: bash\n\n snutree --schema /home/example/custom.py input.csv\n\nCustom schema modules should validate the tables themselves and turn them into\nan internal format ``snutree`` can read.\n\nSQL Queries\n-----------\n\nInput files can also be SQL queries. This will run the query in ``query.sql``\non the database described in ``config.yaml`` and save the resulting tree to\n``output.pdf``:\n\n.. code:: bash\n\n snutree --config config.yaml -o output.pdf query.sql\n\nFor a SQL query, a `YAML `_ configuration file\nwith appropriate authentication options must be provided. Here is an example of\nthe contents of such a file:\n\n.. code:: yaml\n\n readers:\n sql:\n host: '127.0.0.1'\n port: 3306\n user: 'root'\n passwd: 'secret'\n db: 'database_name'\n # Credentials for tunneling queries through SSH\n ssh:\n host: 'example.com'\n port: 22\n user: 'example'\n private_key: '/home/example/.ssh/id_rsa'\n\nNote that the query must rename the column headers to match the schema used.\n\nCommand Line Summary\n--------------------\n\n.. code::\n\n usage: snutree [-h] [-o ] [-f ] [-t ] [-m ]\n [-w ] [-c ] [-S ] [-l ] [-q] [-v] [-d]\n [-V]\n [ [ ...]]\n\n Visualizes big-little brother/sister relationships in Greek-letter\n organizations. Input file data is read from stdin and/or any provided\n positional arguments. Each input has a corresponding\n reader, which converts the file into a table of the given and adds it\n to the rest of the input data. The module then turns the the\n resulting table into a tree data structure. The tree is processed and finally\n written to the output using the given and output .\n Additional options can be provided in configuration files.\n\n positional arguments:\n an input file path or '-' for stdin; default is stdin\n\n optional arguments:\n -h, --help show this help message and exit\n -o , --output \n the output file; default is stdout\n -f , --from \n expected filetype of stdin, which must be one of\n {csv,dot,sql}; default is csv\n -t , --to \n filetype of the output file, which must be supported\n by the writer; default is the output file's extension\n (if known) or 'dot'\n -m , --schema \n member table schema, which must be in\n {basic,chapter,keyed,sigmanu,*.py}; default is 'basic'\n -w , --writer \n writer module, which must be in\n {dot,stats,table,*.py}; default is a guess based on\n the output file format\n -c , --config \n configuration file ; files listed earlier\n override later ones\n -S , --seed \n random number generator seed, for moving tree nodes\n around in a repeatable way\n -l , --log \n write logger output to the file at \n -q, --quiet write only errors to stderr; suppress warnings\n -v, --verbose print more information to stderr\n -d, --debug print debug-level information to stderr\n -V, --version show program's version number and exit\n\n\nGUI\n---\n\nThere is also a simple GUI script called ``snutree-gui``. It is a simple\nwrapper over the command-line version and implements most of the command-line\nfeatures.\n\nNote on Text Encoding\n---------------------\n\nAll of ``snutree``'s built-in readers and writers use UTF-8, and all of\n``snutree``'s configuration files should be encoded in UTF-8. Use ``iconv`` or\nsimilar tools to convert to and from UTF-8 as needed.\n\nInstallation\n============\n\nWith PIP\n--------\n\nThese instructions are based on Ubuntu and Debian-based installations, but they\ncan be made to apply to any Unix-like system (including macOS) with what should\nbe minor modifications. (These instructions are also applicable to Windows,\nthough after less minor modifications.)\n\nFirst, install Python (>=3.5), Python's ``pip`` package manager, and `Graphviz\n`_:\n\n.. code:: bash\n\n # apt install python3 python3-pip graphviz\n\nAt this point, ``python3``, ``pip3``, and ``dot`` should be in your PATH:\n\n.. code:: bash\n\n $ python3 --version\n Python 3.X.X\n $ pip3 --version\n pip X.X.X from /path/to/python3/packages (python 3.5)\n $ dot -V\n dot - graphviz version X.XX.X (20XXXXXX.XXXX)\n\nNow install ``snutree`` with:\n\n.. code:: bash\n\n $ pip3 install --user snutree\n\nThis will install ``snutree`` and its required Python dependencies to your home\ndirectory. Make sure that ``~/.local/bin`` is in your PATH. You might run\n``pip`` without the ``--user`` flag to install it system-wide, but this will\nrequire root.\n\nWindows\n-------\n\nSince installation on Windows is less straightforward, Windows executables have\nbeen compiled and are available `here\n`_. After downloading the\nexecutable, you must install Graphviz and add ``C:\\Program Files\n(x86)\\GraphvizX.XX\\bin`` (or equivalent) to your Windows PATH. You can now run\nthe command-line or GUI executables.\n\nOptional Dependencies\n---------------------\n\nUse ``pip`` to install these packages for optional features:\n\n- ``gooey``: Use the GUI version\n\n- ``mysqlclient``: Allow reading from MySQL databases\n\n- ``sshtunnel``: Allow tunneling SQL queries through ssh\n\n- ``pydotplus``: Allow reading data from DOT files (experimental)\n\nConfiguration\n=============\n\nAll configuration is done in YAML (or JSON) files. In the terminal, these files\ncan be included with ``--config`` flags. Configuration files listed later\noverride those that came earlier and command line options override all\nconfiguration files.\n\nBelow are all of the available options along with descriptions in the comments\nand default values where applicable.\n\nGeneral\n-------\n\n.. code:: yaml\n\n readers: # reader module configuration\n stdin: # standard input reader configuration\n filetype: csv # type of files coming from stdin\n :\n : ...\n schema: # members schema module configuration\n name: basic # member schema module name\n seed: 71 # random number generator seed\n writer: # writer module configuration\n file: None # output file name\n filetype: # output filetype\n name: None # writer module name\n\nReaders\n-------\n\nSQL Reader\n~~~~~~~~~~\n\n.. code:: yaml\n\n db: # SQL database name\n host: 127.0.0.1 # SQL server hostname\n passwd: # SQL user password\n port: 3306 # SQL server port\n ssh: # credentials to encrypt SQL connection with SSH\n host: # SSH server hostname\n port: 22 # SSH server port\n private_key: # SSH private keyfile path\n user: # SSH username\n user: root # SQL username\n\nSchemas\n-------\n\nSigma Nu Schema\n~~~~~~~~~~~~~~~\n\n.. code:: yaml\n\n chapter: # the chapter whose family tree will be generated\n name: sigmanu\n\nWriters\n-------\n\nDOT Writer\n~~~~~~~~~~\n\nSee `Graphviz's documentation `_ for\navailable DOT attributes.\n\n.. code:: yaml\n\n colors: True # add color to member nodes\n custom_edges: True # enable custom edges\n custom_nodes: True # enable custom nodes\n defaults: # default Graphviz attributes\n edge: # defaults for Graphviz edges\n all: # all edges\n : \n : ...\n rank: # edges between rank nodes\n : \n : ...\n unknown: # edges coming from unknown parents\n : \n : ...\n graph: # defaults for Graphviz graphs\n all:\n : \n : ...\n node: # defaults for Graphviz nodes\n all: # all nodes\n : \n : ...\n member: # member nodes\n : \n : ...\n rank: # rank nodes\n : \n : ...\n unknown: # nodes of unknown parents\n : \n : ...\n edges: # a list of custom Graphviz edges\n - # edge1\n attributes: # Graphviz edge attributes\n : \n : ...\n nodes: # keys of nodes connected by this edge\n - # key1\n - ...\n - ...\n family_colors: # map of member keys to Graphviz colors\n : \n : ...\n file: # output file name\n filetype: # output filetype\n name: dot # writer name\n no_singletons: True # delete member nodes with neither parent nor child nodes\n nodes: # custom Graphviz nodes\n :\n attributes: # Graphviz node attributes\n : \n : ...\n rank: # the rank (i.e., year, semester, etc.) the node is in\n : ...\n ranks: True # enable ranks\n unknowns: True # add parent nodes to members without any\n warn_rank: None # if no_singletons=True, singletons with rank>=warn_rank trigger warnings when dropped\n\nVersioning\n==========\n\nThis project loosely uses `Semantic Versioning `_.\n\nLicense\n=======\n\nThis project is licensed under\n`GPLv3 `_.\n\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/lucas-flowers/snutree", "keywords": "big little brother sister family tree", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "snutree", "package_url": "https://pypi.org/project/snutree/", "platform": "", "project_url": "https://pypi.org/project/snutree/", "project_urls": { "Homepage": "https://github.com/lucas-flowers/snutree" }, "release_url": "https://pypi.org/project/snutree/0.3.0/", "requires_dist": [ "Cerberus", "networkx (<2)", "pluginbase", "PyYAML", "voluptuous", "pytest; extra == 'dev'", "docutils; extra == 'dev'", "pygments; extra == 'dev'", "faker; extra == 'dev'", "twine; extra == 'dev'", "pydotplus; extra == 'dot'", "gooey; extra == 'gui'", "psutil; extra == 'gui'", "mysqlclient; extra == 'sql'", "sshtunnel; extra == 'ssh'" ], "requires_python": ">=3.5", "summary": "Visualize big\u2013little brother/sister relationships in Greek-letter organizations", "version": "0.3.0" }, "last_serial": 3333516, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d18d4842903aed642b20645c87f88726", "sha256": "508138e20cdb1a6f578b6fce80983930dd61bc8a9b4afcf264c87dcc94ad3511" }, "downloads": -1, "filename": "snutree-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d18d4842903aed642b20645c87f88726", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 48902, "upload_time": "2017-08-24T23:48:52", "url": "https://files.pythonhosted.org/packages/6e/92/02fc9af777429b961891d54e3a0c2dc982634a04d69309189ddecafb7520/snutree-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e79169886a3f56e63e031219f2c33bb2", "sha256": "199b935eebb80f0206ca66c53ef22dfa35ea71450799686ecd0bee4bd059e4cf" }, "downloads": -1, "filename": "snutree-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e79169886a3f56e63e031219f2c33bb2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 117161, "upload_time": "2017-08-24T23:48:53", "url": "https://files.pythonhosted.org/packages/46/50/0509c67564a706284a78fe0fd323bb1d34af4cb511fe92f1d455ec4de94b/snutree-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "0b54e96b92543e0894f3fec1ccf0b643", "sha256": "789d90cf39e95f22c3d0ca90bbfbcf4a5109486bd1c516fca6febdda396721c8" }, "downloads": -1, "filename": "snutree-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0b54e96b92543e0894f3fec1ccf0b643", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 48902, "upload_time": "2017-08-25T00:07:26", "url": "https://files.pythonhosted.org/packages/77/a6/ed94ac332b5ca81b4019ee90abb46868624fff05f28010a3e3fa9584c616/snutree-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ec6a25b6e662bbab5247c7fbbd48ffc", "sha256": "5fd06f566acf2dc8816cea1394a1cea31d652e0139d1d4bf1b73d474bc29760a" }, "downloads": -1, "filename": "snutree-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6ec6a25b6e662bbab5247c7fbbd48ffc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 117162, "upload_time": "2017-08-25T00:07:27", "url": "https://files.pythonhosted.org/packages/04/bf/b32123f95f66beeb1027cf3d72b2c4380aeb43e7209531243cc184756820/snutree-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "47d52b8e6d9549e4e39735f07f4cf6b2", "sha256": "c57a5cec2751838f43834ca33959bacc8b10a17c7b4b0015966990a329b81634" }, "downloads": -1, "filename": "snutree-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "47d52b8e6d9549e4e39735f07f4cf6b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 49577, "upload_time": "2017-08-25T02:18:14", "url": "https://files.pythonhosted.org/packages/b0/09/b9974f3b08fc86d96f35acb630ea7842dc13ff8163bbdb2d577452513b15/snutree-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41de9fcefaa32e626bb17ba5f1432afb", "sha256": "5eef350d8ca9f0dd1f540bedc548113564a4aae2c68cfb1780097bb3f886b3a2" }, "downloads": -1, "filename": "snutree-0.1.2.tar.gz", "has_sig": false, "md5_digest": "41de9fcefaa32e626bb17ba5f1432afb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 117555, "upload_time": "2017-08-25T02:18:16", "url": "https://files.pythonhosted.org/packages/03/a5/26bd58ede95ff2ef2bb9c0f02c0310210d708569ffd593c452d3d509e251/snutree-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "8d189af155fc59f2b7989334f0cd763c", "sha256": "395e9a4c6c99989fdf9760b980a0c2ce500060fd6d128792dc2f8ba8094796b4" }, "downloads": -1, "filename": "snutree-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8d189af155fc59f2b7989334f0cd763c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 49586, "upload_time": "2017-08-25T02:48:54", "url": "https://files.pythonhosted.org/packages/45/2b/b216c50b79a8ec0b097273ac47ceda459c2b2ea3f5bad233ff221946367f/snutree-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "643baacca2c214ad46e57d82d307fa6f", "sha256": "bc59f108719b21202bb1ba2f21e7e3676403cee7b5df498b4b1f7f3c30f3751a" }, "downloads": -1, "filename": "snutree-0.1.3.tar.gz", "has_sig": false, "md5_digest": "643baacca2c214ad46e57d82d307fa6f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 117583, "upload_time": "2017-08-25T02:48:55", "url": "https://files.pythonhosted.org/packages/3d/21/ee8c7aa0efc76446e2c70c6840ba4e34713918d8edb893cf81a3bd52971f/snutree-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "ec00b292062ae2c18ebf479200e38184", "sha256": "47d99e1fcb65eb58d973225f89482dc573696311422b6da5f53777a07aa393c6" }, "downloads": -1, "filename": "snutree-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ec00b292062ae2c18ebf479200e38184", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 50042, "upload_time": "2017-09-20T22:11:15", "url": "https://files.pythonhosted.org/packages/13/f4/334fdb5e048ceb19a14484e05cebe09193076083c7a3cb62e8595458e9b8/snutree-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f150697766b85d14a847faad25be0fd", "sha256": "c23be336397d23fd24452b84379bc4e22d4d463a3db3b4b7728fd9e9786e61b7" }, "downloads": -1, "filename": "snutree-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9f150697766b85d14a847faad25be0fd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 138571, "upload_time": "2017-09-20T22:22:07", "url": "https://files.pythonhosted.org/packages/60/38/5cd39153f1266b1c20d21d34c0c7d832b3f10f21fcc7e9c6a1d6d1203612/snutree-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "9b9d96f2c371a40b8cf4e6103113148f", "sha256": "69427f1d1abcb289bb30a6d47e1a1a57283718497512215edb0bd15f93608f28" }, "downloads": -1, "filename": "snutree-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9b9d96f2c371a40b8cf4e6103113148f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 50056, "upload_time": "2017-09-20T22:49:17", "url": "https://files.pythonhosted.org/packages/78/ca/9e50857c2545665165cd181ca56ede1ca68995c18342f7cd8ef011522e6d/snutree-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "431819abe6535f37c11ba19581c625cf", "sha256": "4148ac987ff01eac780e89886b29745a07a614e97900f12aa2d0ecac776b13df" }, "downloads": -1, "filename": "snutree-0.2.1.tar.gz", "has_sig": false, "md5_digest": "431819abe6535f37c11ba19581c625cf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 138583, "upload_time": "2017-09-20T22:49:20", "url": "https://files.pythonhosted.org/packages/05/73/4f92d4c5f90548f0874e69fb9327170fd235446abe6bccdf6d039835c8ab/snutree-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "c04ec75a1f23b5e320a20421186b81c4", "sha256": "c0d286c370fc27e8502ce4de0591b46abed0c085d366ccb6802cbe04e7f14ac3" }, "downloads": -1, "filename": "snutree-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c04ec75a1f23b5e320a20421186b81c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 50134, "upload_time": "2017-11-14T02:41:59", "url": "https://files.pythonhosted.org/packages/9f/c2/25dcc0b8ef20e496a569b4c683b6dcd405effacc904d044ff822b01393c3/snutree-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b608e9341f877ca22f812792a63600a2", "sha256": "4c740d5b388694c8ab91ee9ceb2f8d13cfa42dce87eceec5943949461a54e23b" }, "downloads": -1, "filename": "snutree-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b608e9341f877ca22f812792a63600a2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 139233, "upload_time": "2017-11-14T02:42:01", "url": "https://files.pythonhosted.org/packages/01/67/ee1de915b2fbcd610b163da9ca349538659ccf7a6fe896822d2757739726/snutree-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "9d4bcf0df0e55764c8ca0dc83794b788", "sha256": "37dbc1cb8639d35be0c4c44dad7229ed61697292abd3f72094216148289f6046" }, "downloads": -1, "filename": "snutree-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9d4bcf0df0e55764c8ca0dc83794b788", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 50843, "upload_time": "2017-11-15T01:29:54", "url": "https://files.pythonhosted.org/packages/7a/99/efd1a56277e385e3d85282530a466f6fecf6ea703fafce1757671b166f94/snutree-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c6289532db1ca7a4153c16142fab6455", "sha256": "257d50944e244845a0ee06f9322f33072f58fda90290bc943d5b5e4c65d2ba16" }, "downloads": -1, "filename": "snutree-0.3.0.tar.gz", "has_sig": false, "md5_digest": "c6289532db1ca7a4153c16142fab6455", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 139871, "upload_time": "2017-11-15T01:29:56", "url": "https://files.pythonhosted.org/packages/a0/0b/56bd7b1373eac621623cc2d88e4b081d690195764a74a9867edffe97ba10/snutree-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9d4bcf0df0e55764c8ca0dc83794b788", "sha256": "37dbc1cb8639d35be0c4c44dad7229ed61697292abd3f72094216148289f6046" }, "downloads": -1, "filename": "snutree-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9d4bcf0df0e55764c8ca0dc83794b788", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 50843, "upload_time": "2017-11-15T01:29:54", "url": "https://files.pythonhosted.org/packages/7a/99/efd1a56277e385e3d85282530a466f6fecf6ea703fafce1757671b166f94/snutree-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c6289532db1ca7a4153c16142fab6455", "sha256": "257d50944e244845a0ee06f9322f33072f58fda90290bc943d5b5e4c65d2ba16" }, "downloads": -1, "filename": "snutree-0.3.0.tar.gz", "has_sig": false, "md5_digest": "c6289532db1ca7a4153c16142fab6455", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 139871, "upload_time": "2017-11-15T01:29:56", "url": "https://files.pythonhosted.org/packages/a0/0b/56bd7b1373eac621623cc2d88e4b081d690195764a74a9867edffe97ba10/snutree-0.3.0.tar.gz" } ] }