{ "info": { "author": "Andrin Pelican", "author_email": "andrin.pelican@student.unisg.ch", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3" ], "description": "# Uniform Graph Draw\n\n\nThis package implements random draw algorithm for networks. In particular it creates uniform samples of networks with a\ngiven degree-sequence and partition constraints (fixed number of crossing edges/arrows between node-groups in partition).\nThe literature reefers to this set of constraint also as Partition Adjacency Matrix (PAM) restrictions. \n\n\n\nIt is implemented according to the paper:\n\n- [*Pelican, A (2019). Uniform Sampling of Graphs with Fixed Degree\nSequence under Partition Constraints. Master Thesis, FernUniversit\u00e4t in Hagen.*](https://www.fernuni-hagen.de/MATHEMATIK/DMO/pubs/Master_Andrin_Pelican.pdf) \n - Proof of correctness of the algorithm\n - Discussion of the PAM-realization problem\n\n- *Pelican, A. & Graham, B. S. (2019). Testing for strategic interaction in social and economic\nnetwork formation. Technical report, University of California - Berkeley.*\n - Derivation of a locally most powerful test statistic for a n-person network formation game in normal form\n\n\n## Get it Running \n\nInstall the paper via pip:\n\n\n- pip install ugd\n\nthen run\n\n #import modules\n import ugd\n import numpy\n\n # create ajdancy matrix\n adj_m = numpy.zeros((4,4))\n adj_m[0,1] = 1\n adj_m[1,0] = 1\n adj_m[3,2] = 1\n adj_m[2,3] = 1\n\n # create dictionary of nodeatributes \n var_dict ={\n 0: {'gender': 'm'},\n 1: {'gender': 'm'},\n 2: {'gender': 'f'},\n 3: {'gender': 'f'},\n }\n out_dict = ugd.graph_hyp_test(adj_m=adj_m, var_dict = var_dict, test_variable= ('gender','m','f'),mixing_time=1000, anz_sim=100, show_polt=True)\n\n### Working with ugd\n\nThe easiest way to use ugd is by simply passing in the adjacency matrix and set show_plot=True. This runs the simulation\nalgorithm and plots a default statistic. \n\nThe statistic can be customized. Firstly by entering a dictionary with node characteristics and testing for one characteristic.\nSecondly by writing a costume test statistic and enter it into the function as 'stat_f'. How to write a \"locally most powerful\"\ntest statistic for a specific network formation game is derived in *Pelican, A. & Graham, B. S. (2019)*. The weights for the optimal\ntest statistic is not calculated by this package, it has to be done with other statistical packages and\nfeed in via 'stat_f' or directly applied to the list of graphs returned by the ugd package.\n\nNode characteristic can be added as controls. The algorithm then generated uniformly graphs with also have the same number\nof edges between the node-groups induced by the controls. Note that the algorithm is slower if many controls are added. \nHard constraints (where there are no edges within, or some the groups), such as the group constraint in a bipartite graph \ndo not slow the algorithm.\n\nThe processing of the individual graphs can be easily customized by working directly with the simulated graphs.\n\nAn entry point of testing social and economic networks can be found here [https://arxiv.org/abs/1908.00099](https://arxiv.org/pdf/1908.00099.pdf).\n\n## API\n\nThere are two functions provided.\n\n1) graph_hyp_test\n - generating a sequence of uniform sampled *graphs* under the desired set of constrains.\n2) digraph_hyp_test\n - generating a sequence of uniform sampled *digraphs* under the desired set of constrains.\n\n\nFor the API the two functions only differs in that the interpretation of the adjacency matrix is once \nas digraph representation and once as graph representation.\n\n\n\n INPUT:\n :param adj_m: A numpy array containing 0 and 1s as elements, representing\n adjacency matrix of the graph\n :param var_dict: A dictionary with the integers 1..n as primary key (representing\n the n nodes). The values are dictionaries containing the \n Variable name as keys and the values can either be numbers or be\n numbers or strings\n :param stat_f: A function which maps the adj_m and var_dict to a number \"the\n statistic of interest\".\n :param test_variable: Alternative to stat_f, creating a statistic which counts the\n arrows form a node-subset into another. It is a triple with \n first element variable name, second the value of the variable \n for the set where the arrows leave and third the value of the \n subset where the arrow go to.\n :param controlls: List of variable names, the number of arrows crossing the groups\n induced by the controls is constant in all the simulation.\n :param mixing_time: Number of runs (steps in the markov graph) before a the graph\n is considered random\n :param anz_sim: Number of simulations\n :param show_polt: Boolean whether a plot is desired\n\n OUTPUT:\n :return: out_dict Dictionary with keys 'graph_list', 'stat_list', 'plot',\n and 'info_dict'\n graph_list: List of random adjacency matrices with the given degree-sequence\n and arrows between the controls\n stat_list: List of the statistics stat_f evaluated for the random graphs\n plot: Plot with the illustration of the estimation output\n info_dict: Dictionary with the information about the simulation\n\n\n\n\n## Architecture:\n\n\nAll the logic is implemented in the digraph_draw folder. it is divided into\n\n* markov_walk\n\n Implementation of algorithm 1 from the paper *Markov Draw Algorithm*\n\n* schlaufen_construction\n\n Implementation of algorithm 2 from the paper *Schlaufen Detection Algorithm*\n\n\n* model\n\n containing the data models (appropriate Graph representation and node representation for \n efficient construction of the altering paths in the Schlaufen)\n\n* user_interface\n\n Contains the all the logic used for *input validation, parsing of input, estimation of runtime, \n transformation of the graph format, output processing*.\n\n* help_functions\n\n\n### Comment\n\nThe current implementation, includes only controlling of a fixed number of crossing edges/arrows between node-groups as \nconstraints. More complex complex can be implemented by writing a consum implementation of the *no_violation* function \nin *constraint_violation_check*. Note, that depending on the constraint the construction of the Schlaufensequence should\n not be stopped because a feasible one is found, but only due to the random stop. This in order to preserve correctness.\n\n## Testing\n\nAll tests are in the test folder. They are written using pytest. \nTo execute them cd into the test folder and run\n\n- pytest \n\nin the terminal.\n\n\n\n\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ugd", "package_url": "https://pypi.org/project/ugd/", "platform": "", "project_url": "https://pypi.org/project/ugd/", "project_urls": null, "release_url": "https://pypi.org/project/ugd/0.5.0/", "requires_dist": [ "numpy", "matplotlib" ], "requires_python": "", "summary": "Drawing uniformly graphs under partition constraints (Partition Adjacency Matrix). Commonly used for network testing.", "version": "0.5.0" }, "last_serial": 5933008, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6db26fcdcc9668042a6692bfed312089", "sha256": "d58f5a50481964be18e24d301da81cd7375faec6b754fc3eca1379b3d23814e5" }, "downloads": -1, "filename": "ugd-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6db26fcdcc9668042a6692bfed312089", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 35159, "upload_time": "2018-10-11T21:49:18", "url": "https://files.pythonhosted.org/packages/79/4f/3f20b320f60f50a88b78259d286ceb5474d1d76579fbb790af3a0e11637f/ugd-0.0.1-py3-none-any.whl" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "e60f10c83087c36d30b122919bc92b6f", "sha256": "aeb512fd5941f58c39f00bb0ef11410d928d7a4ab87505e52ea5aa5456922868" }, "downloads": -1, "filename": "ugd-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "e60f10c83087c36d30b122919bc92b6f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59110, "upload_time": "2018-11-14T23:11:43", "url": "https://files.pythonhosted.org/packages/ac/43/11d53545a61c3008b2394efaae73bb636438dffd56a2cc4b328d98729839/ugd-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "45aa0f6e77f4861aab43eb5e1bce6ce5", "sha256": "6bdb0c7a1d4533cb6b94225c03862827427909bfbf65351cc121a936062f6be9" }, "downloads": -1, "filename": "ugd-0.0.10.tar.gz", "has_sig": false, "md5_digest": "45aa0f6e77f4861aab43eb5e1bce6ce5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20547, "upload_time": "2018-11-14T23:11:45", "url": "https://files.pythonhosted.org/packages/f3/dc/bfcc08547034bb17e6007ea54feeafe30db027efcce002c83b057ac0cd7c/ugd-0.0.10.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3e2191fea051485f472dd1aece0f4cdb", "sha256": "40fdf3095b04dd98f6ea866a9fadf2d011b151dd3299ad0731d28bdb4f014bd3" }, "downloads": -1, "filename": "ugd-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3e2191fea051485f472dd1aece0f4cdb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55488, "upload_time": "2018-10-12T01:14:43", "url": "https://files.pythonhosted.org/packages/66/29/c29d3429bec4348115c39b32761b9607e1e7e7fd44a59067227ee2f55a7b/ugd-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "771e76069c3571036294f0f9533f1bb0", "sha256": "ed4e73c13157182ff880d0acb240eeae73c51b4ea19a2c7a00e90ae46946ed3c" }, "downloads": -1, "filename": "ugd-0.0.2.tar.gz", "has_sig": false, "md5_digest": "771e76069c3571036294f0f9533f1bb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17954, "upload_time": "2018-10-12T01:14:44", "url": "https://files.pythonhosted.org/packages/1b/0a/e5e9d204d34e2b0216ea41fcca9032d0b88a5d3cdb53edd24bbdf0806baa/ugd-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "06ae3b0947de0438f04468ec3c297393", "sha256": "4e7fdd22a1594c64a1fe06d0f9e52990bf1cdaf40041fe2892580a37ca67e5f4" }, "downloads": -1, "filename": "ugd-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "06ae3b0947de0438f04468ec3c297393", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55509, "upload_time": "2018-10-12T01:41:14", "url": "https://files.pythonhosted.org/packages/fc/5e/2c6ffb8b78204c03b30f083d644e3a36817d2302afe23960775531406ae8/ugd-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ad3c2bd2102e0c7fed29554418aa50e", "sha256": "4a2936968b189ea334a31bfb1816e3600790bece4d2bffd1fe0bc731692a7fec" }, "downloads": -1, "filename": "ugd-0.0.3.tar.gz", "has_sig": false, "md5_digest": "7ad3c2bd2102e0c7fed29554418aa50e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18082, "upload_time": "2018-10-12T01:41:16", "url": "https://files.pythonhosted.org/packages/56/58/dc3314605f403fc5583c1358d769fb412167b9b6240d8317417c20fdea26/ugd-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "aa3eb7778e9707b1fec3381d06412ac5", "sha256": "877de8bc52020ca2ef8439e24147b83f4028074c52b7aff20222cf5b0419ea12" }, "downloads": -1, "filename": "ugd-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "aa3eb7778e9707b1fec3381d06412ac5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56305, "upload_time": "2018-10-12T04:19:47", "url": "https://files.pythonhosted.org/packages/c2/70/b648423016472706c7994515c3978c5ffd1e9f0cdd9d984514062061f690/ugd-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9b9ed6fdd96bd7d9e1801e82fe8429b", "sha256": "f90e2ec074d55f173be166448ad369e3768b2ec6144e2b510abbfcd3475c9ec9" }, "downloads": -1, "filename": "ugd-0.0.4.tar.gz", "has_sig": false, "md5_digest": "c9b9ed6fdd96bd7d9e1801e82fe8429b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19094, "upload_time": "2018-10-12T04:19:49", "url": "https://files.pythonhosted.org/packages/15/61/705879e9eeefeaac92c749f63902f52f063d066dd091d9911f2b52c469b8/ugd-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2f7b22e0f01bcd34f03179678802f1f0", "sha256": "b104bc8f852b2bc0178d1da5984f6b6933767cfa9b950d1badfb0380a48011fa" }, "downloads": -1, "filename": "ugd-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2f7b22e0f01bcd34f03179678802f1f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 58842, "upload_time": "2018-11-04T16:40:22", "url": "https://files.pythonhosted.org/packages/02/6d/2a36fd8e167b180a9dd61b65633377c9c5e9aeeb4d720f1f90e870365c5b/ugd-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60df019d2f0432070bb93b6366abbecf", "sha256": "1d9e62e6e642901b73631d50a7f9b9da6350dff2ccdbf3c60c3976acc9a03b3d" }, "downloads": -1, "filename": "ugd-0.0.5.tar.gz", "has_sig": false, "md5_digest": "60df019d2f0432070bb93b6366abbecf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19153, "upload_time": "2018-11-04T16:40:24", "url": "https://files.pythonhosted.org/packages/31/53/27dad386f4b99ad38e0fd3fe39e5fcecdce68ce5333d5adfb1aa540aeafa/ugd-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "02581e037e69e648efce760971e29471", "sha256": "4727cf2816f285b7b09a4a376b18d29e59c79f74f4a45b3f7cdc69ca01521b43" }, "downloads": -1, "filename": "ugd-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "02581e037e69e648efce760971e29471", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56336, "upload_time": "2018-11-04T16:47:29", "url": "https://files.pythonhosted.org/packages/e0/ce/3a2f43bcc48b7c5c88dd3993504e80bbacf37743b2264423d8f6f0df6c40/ugd-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aedbc26d8aff200614a6659c053b4090", "sha256": "bf7c446584bdb3b70472df5b2311ef4ab234d40dab76ee6e79cb9064dc43d927" }, "downloads": -1, "filename": "ugd-0.0.6.tar.gz", "has_sig": false, "md5_digest": "aedbc26d8aff200614a6659c053b4090", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19157, "upload_time": "2018-11-04T16:47:30", "url": "https://files.pythonhosted.org/packages/87/6d/14cc1cdd84694070a9b4ee28e312db65f017be9db65f617fd1b84c4b8a05/ugd-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "5e6b218aa4bc9001e21931c54d343976", "sha256": "78079de91852f900ef36cf10c3889238efd032dc8ac5fd724cc5e0a030d931c1" }, "downloads": -1, "filename": "ugd-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "5e6b218aa4bc9001e21931c54d343976", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61422, "upload_time": "2018-11-13T03:26:05", "url": "https://files.pythonhosted.org/packages/3e/68/ceb8af781c906c23e60dc917b33471443bc523291e12f5718799b1e1a24a/ugd-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63bf3f3584668c9a276c56ea0fa03631", "sha256": "81680e1bf4fa4aa7c30c2535d2b43cffa6984faac99da821544e85a7c1a661cc" }, "downloads": -1, "filename": "ugd-0.0.7.tar.gz", "has_sig": false, "md5_digest": "63bf3f3584668c9a276c56ea0fa03631", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20388, "upload_time": "2018-11-13T03:27:17", "url": "https://files.pythonhosted.org/packages/b4/3f/d95235d5a5b9b3be02bd36bd9f997b614380871d79332a1ea3155b94c6d6/ugd-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "32e41fd3a81c8d27014da4bfd4e4b4fe", "sha256": "6f929fcf60f671d90e0e66f170c08e542d8f717e2304e1f2783f32a96790ec48" }, "downloads": -1, "filename": "ugd-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "32e41fd3a81c8d27014da4bfd4e4b4fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 58978, "upload_time": "2018-11-13T06:11:11", "url": "https://files.pythonhosted.org/packages/81/2a/080ca3aa6ba7011ef0ae9db1d87dc57a848c31ada6536df46cfc8a779f82/ugd-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98bb99a25ddce952c5ba394240f831a7", "sha256": "3699f497c978470fcf55f8396ed4db15c7afd8dfa3f0b8079bea300f06689f38" }, "downloads": -1, "filename": "ugd-0.0.8.tar.gz", "has_sig": false, "md5_digest": "98bb99a25ddce952c5ba394240f831a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20431, "upload_time": "2018-11-13T06:11:12", "url": "https://files.pythonhosted.org/packages/d9/95/c39f513b406ca3b7d285e0984ebadea9d821942cea7a5796dbe3565a9ac1/ugd-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "3c9175b93fa5d46ab967371757c8a475", "sha256": "be08c6f34dac5455bbfc44793a19bd683150d4f7d4085c236614c8c2647a53e7" }, "downloads": -1, "filename": "ugd-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "3c9175b93fa5d46ab967371757c8a475", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59067, "upload_time": "2018-11-14T22:13:04", "url": "https://files.pythonhosted.org/packages/29/e9/b4f0c901e1ed5dec72e51ff9240ad04e35fbb4993246d78e10f43f375053/ugd-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea299974cf153d1f8a8a016054950385", "sha256": "559bd12a095dcedc048afd6704e3ba0ab66d864712aec20f3617d0ad1a6427c0" }, "downloads": -1, "filename": "ugd-0.0.9.tar.gz", "has_sig": false, "md5_digest": "ea299974cf153d1f8a8a016054950385", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20503, "upload_time": "2018-11-14T22:13:06", "url": "https://files.pythonhosted.org/packages/f2/bf/ae3ec549cb392f5d1cc2d4325db7e0cbd2b4d4f7416d693a4bd72e730a91/ugd-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "2334d3332274eaf76979aff76637d2c1", "sha256": "da277678ab684546d517ce7fc8e6618e081e4a284994187f84f6336a4c91559c" }, "downloads": -1, "filename": "ugd-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2334d3332274eaf76979aff76637d2c1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59583, "upload_time": "2018-11-16T18:32:53", "url": "https://files.pythonhosted.org/packages/a7/c2/2d92f43ca9441fa395b014f4b58c3bdc041fd2a389e68bc84741ed5d20e7/ugd-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "808bab8331c7628472862803c82e20b7", "sha256": "08e932148d86c63fa964d928efcee0ee3909aca8b7460f2a846d6b6fc92da924" }, "downloads": -1, "filename": "ugd-0.1.0.tar.gz", "has_sig": false, "md5_digest": "808bab8331c7628472862803c82e20b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21517, "upload_time": "2018-11-16T18:32:54", "url": "https://files.pythonhosted.org/packages/8d/3c/33036ba6ef3ccfd04734299cbe0f8e6769c6e042947fbaff71dda9cab27c/ugd-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b7090490a6bf86aa3a8b2fb99be23e19", "sha256": "eceeb7e20938d14b787ab30ebaf7cc3213d6002c177c27650f71cffd451a7690" }, "downloads": -1, "filename": "ugd-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b7090490a6bf86aa3a8b2fb99be23e19", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36237, "upload_time": "2019-02-15T20:12:55", "url": "https://files.pythonhosted.org/packages/25/40/add1cb30e0d96ab92da27e09efc349c5f73cd7d004d950a9cf4102de878e/ugd-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "062f317e4949903eb259d7cdac6ff0cc", "sha256": "0f804ec0b08dc987e9aa7fec16594eae246046c357cf5353f16381bfd0286540" }, "downloads": -1, "filename": "ugd-0.1.1.tar.gz", "has_sig": false, "md5_digest": "062f317e4949903eb259d7cdac6ff0cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22258, "upload_time": "2019-02-15T20:12:57", "url": "https://files.pythonhosted.org/packages/cd/12/d18f5a62bc504097eaa849f05cf0d35e2011a072498b696bd565d5527832/ugd-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "03605fbd79849a4f8affb1db8f9e91af", "sha256": "7b6cca66138f15f9756e563293ec351c7e7c14a659f6171a38e659dd60c83cea" }, "downloads": -1, "filename": "ugd-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "03605fbd79849a4f8affb1db8f9e91af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41162, "upload_time": "2019-03-29T10:17:50", "url": "https://files.pythonhosted.org/packages/67/e1/d4632e8f3883e95b82b7b4a7fdac6f1170e4e789e800602f4997d6677bca/ugd-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb306d34b6828576619eb45097e31e60", "sha256": "a2d627578b2aafe0b27ea5133875424d31a81c3083698369fd55208d2e466838" }, "downloads": -1, "filename": "ugd-0.2.0.tar.gz", "has_sig": false, "md5_digest": "fb306d34b6828576619eb45097e31e60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25570, "upload_time": "2019-03-29T10:17:51", "url": "https://files.pythonhosted.org/packages/ff/d8/56b7cbb9f58222c13896d60fbce8dfb7bb9e9c6b9cd2e7c68e991e011ac3/ugd-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "bae71bac11aac359e1c4dbfc89ab39ed", "sha256": "888abe01d02135a142cfaf9c28ea519e79474fb1db940ae9873d00dfeac43c00" }, "downloads": -1, "filename": "ugd-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bae71bac11aac359e1c4dbfc89ab39ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40667, "upload_time": "2019-04-09T09:49:28", "url": "https://files.pythonhosted.org/packages/81/9b/1fece10b10ce1756de6739619dfa12aac1a4136810b8cf2c8393b82f0f18/ugd-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9379b4afb3f88461ea50efa4e1f9cd08", "sha256": "369c73ced45d6ef9e051ecaceeeaacc5f39be93dd9fc0f4a5c34a4e56b21c940" }, "downloads": -1, "filename": "ugd-0.3.0.tar.gz", "has_sig": false, "md5_digest": "9379b4afb3f88461ea50efa4e1f9cd08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25185, "upload_time": "2019-04-09T09:49:29", "url": "https://files.pythonhosted.org/packages/80/17/7b68f7cddf1abc58515f5e517d4c142a11c0dd9cc3a9693f5f9bf936f5aa/ugd-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "81aa3011c4006362166edc26cc16ad5b", "sha256": "75fb9ec443a3cbbfc643ccb649255bd0cc9af6d88231bbeaf90ede3fbec65474" }, "downloads": -1, "filename": "ugd-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "81aa3011c4006362166edc26cc16ad5b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40978, "upload_time": "2019-08-16T08:14:36", "url": "https://files.pythonhosted.org/packages/f3/c4/7df1534b7088929647504c908cbaefc70049a479864246b8a8167ac8d5b1/ugd-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ed9facff4ee03373342fd55930bacc0", "sha256": "5e72aa7198d2a69387f351cdb8181e3e231532583d7d6b0b988bdc66d4efdd82" }, "downloads": -1, "filename": "ugd-0.4.0.tar.gz", "has_sig": false, "md5_digest": "2ed9facff4ee03373342fd55930bacc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25829, "upload_time": "2019-08-16T08:14:39", "url": "https://files.pythonhosted.org/packages/dc/65/ab95f95c034a055b2b30e64d56a09e935653149cb4efb844c95b53834899/ugd-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "6c6b14e2baa7cd722f6a970de430c376", "sha256": "de47b8e9e973d4c4a7e6b435a0cf8b393fa16e5b1378405c7d204850d1c5dc42" }, "downloads": -1, "filename": "ugd-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6c6b14e2baa7cd722f6a970de430c376", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41000, "upload_time": "2019-10-05T20:07:23", "url": "https://files.pythonhosted.org/packages/7e/26/d9af3de5e47ffb4d89aea97a0f37d6314e80f48754cc23e04a1acd183f8d/ugd-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36574e2bd87f1084b2d7f75a3381998f", "sha256": "7ee49167dc1f5875acdf941f619315973d48fa6ab8663919079917daa9a345ab" }, "downloads": -1, "filename": "ugd-0.5.0.tar.gz", "has_sig": false, "md5_digest": "36574e2bd87f1084b2d7f75a3381998f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25879, "upload_time": "2019-10-05T20:07:24", "url": "https://files.pythonhosted.org/packages/65/80/430af1eb88dbfe1299d191063fd86e3b62d633f5e93fdec735b9b6eb46ea/ugd-0.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6c6b14e2baa7cd722f6a970de430c376", "sha256": "de47b8e9e973d4c4a7e6b435a0cf8b393fa16e5b1378405c7d204850d1c5dc42" }, "downloads": -1, "filename": "ugd-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6c6b14e2baa7cd722f6a970de430c376", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41000, "upload_time": "2019-10-05T20:07:23", "url": "https://files.pythonhosted.org/packages/7e/26/d9af3de5e47ffb4d89aea97a0f37d6314e80f48754cc23e04a1acd183f8d/ugd-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36574e2bd87f1084b2d7f75a3381998f", "sha256": "7ee49167dc1f5875acdf941f619315973d48fa6ab8663919079917daa9a345ab" }, "downloads": -1, "filename": "ugd-0.5.0.tar.gz", "has_sig": false, "md5_digest": "36574e2bd87f1084b2d7f75a3381998f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25879, "upload_time": "2019-10-05T20:07:24", "url": "https://files.pythonhosted.org/packages/65/80/430af1eb88dbfe1299d191063fd86e3b62d633f5e93fdec735b9b6eb46ea/ugd-0.5.0.tar.gz" } ] }