{ "info": { "author": "Matthieu Gallet", "author_email": "mgallet@19pouces.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1)", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "PolyArchiv\n==========\n\nBackup data from multiple 'sources' (organized in 'collect points') and copy them to one or more 'backup points'.\nThe complete doc is available here: http://polyarchiv.readthedocs.io/en/latest/ \n\n collect point 1: /var/backups/local1 /----------------------\\\n data of www.github.com ________\\__ | backup point 1: git |\n /------------------------\\ / / | data of local 1 |\n | source 1: files |---->-------/ \\----------------------/\n | source 2: mysql | * http://mygit/backups/local1.git\n | source 3: mysql |---->-------\\\n \\------------------------/ \\________\\___ /--------------------------\\\n / | backup point 2: tar+curl |\n collect point 2: : /var/backups/local2 | data of local 1 | \n data of www.example.com ________\\___ | data of local 2 |\n /------------------------\\ / / \\--------------------------/\n | source 1: files |---->-------/ * ftp://server/backups/local1/2016-01-01.tar.gz\n | source 2: mysql | * ftp://server/backups/local2/2016-01-01.tar.gz\n \\------------------------/ \n \n collect point 3: : /var/backups/local3\n data of nothing.example.com \n /-----------------------------\\ \n | source 1: files | \n | source 2: postgresql | (local backup only)\n | source 3: mysql | \n \\-----------------------------/ \n \nConfiguration is based on standard `.ini` files, each file corresponding to one collect or backup point: \n \n * `my-collect-point.collect` defines a collect point named `my-collect-point`,\n * `my-backup-point.backup` defines a backup point named `my-backup-point`.\n\nEach collect point must define a base folder and one or more data sources, all of them being defined in the `my-collect-point.collect` file:\n\n * directory with files,\n * MySQL or PostgreSQL database to dump,\n * Dovecot mails,\n * OpenLDAP database to dump.\n\nThere are several kinds of collect points:\n\n * raw files,\n * local git repository: after each backup, files that have been gathered from the different sources are added and locally commited.\n * archive: all collected files are merged into a single .tar.(gz/bz2/xz) archive.\n \nThere are also several kinds of backup points:\n\n * git: the whole collect point is pushed to this remote git repository, \n * gitlab: almost identical to the previous one, but able to automatically create the backup point,\n * synchronize: uses rsync to copy all files to a new, probably remote, location,\n * archive: creates an archive (.tar.gz/bz2/xz) and pushes it to a remote location, \n * rolling_archive: creates an archive, pushes it to a remote location. Deletes some previous archives \n (say, one per day during six days, then one per week during three weeks, then one per month during 12 months) \n\nThese backup points are optional and you can of course use only local collect points, for example when your collect point is stored on a NFS share. All parameters (especially the remote location) can depend on the date and time, and on the hostname.\n\nEach backup point (either collect ones or backup ones) is associated to a backup frequency. \nIf a given point has a daily backup frequency but you execute Polyarchiv twice a day, only the first backup will be executed.\n\nInstallation\n------------\n\nPolyArchiv uses plain Python, with no extra dependency.\nThe simplest way is to use `pip`, if it is installed on your system:\n\n $ pip install polyarchiv\n \nYou can also install it from the source:\n\n $ git clone https://github.com/d9pouces/PolyArchiv.git\n $ cd PolyArchiv\n $ python setup.py install \n \n \nFinally, you can use PolyArchiv without installation:\n\n $ git clone https://github.com/d9pouces/PolyArchiv.git\n $ cd PolyArchiv\n $ python run.py \n\nPolyArchiv is compatible with Python 2.7+ and Python 3.3+.\n\nSeveral commands are available:\n \n#### available engines\n\nDisplay all available engines, for collect/backup points, filters and sources (and their options if you specified `--verbose`)\n\n $ polyarchiv plugins [--verbose]\n\n#### displaying configuration\n\nDisplay the current configuration, collect/backup points, sources and backup status\n\n $ polyarchiv config [-C /my/config/dir] [--verbose]\n\n#### backup\n \nBackup all data sources. If you set a frequency, collect and backup points that are not out-of-date are not run (unless you specified `--force`)\n\n $ polyarchiv backup [-C /my/config/dir] [--force]\n \n#### restore \n\nFirst fetch data from the most recent backup point to the collect point, then restore each source. \n\n $ polyarchiv restore [-C /my/config/dir] [--force]\n\n#### build packages \n\n $ ./debianize.sh # create .deb package\n $ python setup.py bdist_rpm # create .rpm package\n \n#### other options\n\n * `-h`: show helps and exit\n * `-v`: verbose mode\n * `-f`: force backup operation, even if the most recent backup is still valid\n * `-n`: display a NRPE-compatible output\n * `-D`: no write action is performed\n * `--log-file`: log all output to this file\n * `--show-commands`: display all write actions as a bash operation\n * `--confirm-commands`: require a validation of each action\n * `--config`: specify another config dir\n * `--only-collect-points`: limit operations to the collect points corresponding to this tags (can be used several times)\n * `--only-backup-points`: limit operations to the backup points with this tags (can be used several times)\n \nNext steps\n----------\n\n * run `polyarchiv plugins -v` to check available kinds of sources and collect/backup points\n * create config files for your collect points (you should organize all your backups in several collect point, maybe one per service)\n * create config files for your remote servers (one config file per server)\n * run `polyarchiv config -v` to check your configuration\n * run `polyarchiv backup --dry --show-commands --force` to check the executed script\n * run `polyarchiv backup` in a cron :-)\n \nConfiguration\n-------------\n\nThe default configuration directory is `/etc/polyarchiv` unless you installed it in a virtualenv, \n(then its default config dir is `$VIRTUALENV/etc/polyarchiv`). \nOtherwise, you can specify another config dir with `polyarchiv -C /my/config/dir`.\n\nThis directory should contain configuration files for collect points \n(like `my_collect_point.collect`) as well as backup points (like `my_backup_point.backup`).\n\nHere is an example of collect point, gathering data from three sources:\n\n * PostgresSQL database\n * MySQL database\n * a directory\n\nIts name must end by `.collect`. \nThe `[point]` section defines options for the collect point (the engine that powers the local backup, the frequency, \u2026), while other sections define the three sources:\n\n $ cat /etc/polyarchiv/my-collect-point.collect\n [point]\n engine=git\n local_path=/tmp/local\n collect_point_tags=local\n included_backup_point_tags=*\n excluded_backup_point_tags=\n frequency=daily\n \n [source \"source_1\"]\n engine=postgressql\n host=localhost\n port=5432\n user=test\n password=testtest\n database=testdb\n destination_path=./postgres.sql\n \n [source \"source_2\"]\n engine=mysql\n host=localhost\n port=3306\n user=test\n password=testtest\n database=testdb\n destination_path=./mysql.sql\n \n [source \"source_3\"]\n engine=rsync\n source_path=/tmp/source/files\n destination_path=./files\n\nThe kind of points (collect or backup) and of each source is defined by the `engine` option.\nYou can define as many collect points (each of them with one or more sources) as you want.\n\nBackup points are simpler and by default only have a `[point]` section.\nTheir names must end by `.backup`.\nHere is a gitlab acting as remote storage for git local repo: \n\n $ cat /etc/polyarchiv/my-backup-point1.backup\n [point]\n engine=git\n frequency=daily\n backup_point_tags=\n remote_url=http://gitlab.example.org/group/{name}.git\n remote_branch=master\n user=mgallet\n included_collect_point_tags=*\n\n`{name}` will be replaced by the name of the collect point; for example the name of the `my-collect-point.collect` collect point is \nobviously `my-collect-point`). You can use (a bit) more complex replacement rules (see the doc).\n\nMaybe you also want a full backup (as an archive) uploaded the tenth day of each month, to a HTTP server:\n\n $ cat /etc/polyarchiv/my-backup-point2.backup\n [point]\n engine=archive\n frequency=monthly:10\n backup_point_tags=\n remote_url=http://user:p@ssw0rd@myserver.example.org/backups/{name}/\n tar_format=tar.xz\n included_collect_point_tags=*\n\nConfiguration files can be owned by different users: files that are unreadable by the current user are simply ignored.\n\nAvailable engines\n-----------------\n\nSeveral engines for sources or collect/backup points are available.\nUse `polyarchiv plugins` to display the full list, and `polyarchiv plugins -v` to display all their configuration options.\n \nExtra backup options\n--------------------\n\n * `--verbose`: display more info\n * `--force`: force the backup, even if not required (the last backup is recent enough)\n * `--nrpe`: the output is compatible with Nagios/NRPE (so you can use it as a standard Nagios check in your sup)\n * `--show-commands`: display all operations as a plain Bash script\n * `--confirm-commands`: display all operations and ask for a manual confirmation before running them\n * `--dry`: does not actually perform operations\n * `--only-collect-points` (backup or restore): only apply to the collect points with these tags (can be used several times, and ? or * jokers are valid)\n * `--only-backup-points` (backup or restore): only apply to the backup points with these tags (can be used several times, and ? or * jokers are valid)\n * `--skip-collect` (backup only): skip the collect step during a backup\n * `--skip-backup` (backup only): skip the backup step during a backup\n\nAdding your engines\n-------------------\n\nPolyArchiv is designed to be extensible. You can add your own engines for all kinds of engines:\n\n * backup points (must inherit from `polyarchiv.backup_points.BackupPoint`),\n * collect points (must inherit from `polyarchiv.collect_points.CollectPoint`),\n * filters (must inherit from `polyarchiv.sources.Source`),\n * sources (must inherit from `polyarchiv.filters.FileFilter`).\n \nTo use them, they must be installed in the current PYTHONPATH.\nYou can either directly use the dotted path in the configuration files:\n\n $ cat /etc/polyarchiv/my-collect.collect\n [point]\n engine=mypackage.myengines.MyCollectPoint\n local_path=/tmp/local\n\n [source \"source_1\"]\n engine=mypackage.myengines.MySource\n\nYou can also register them as new setuptools entry points:\n\n * `polyarchiv.sources`,\n * `polyarchiv.backup_points`,\n * `polyarchiv.collect_points`,\n * `polyarchiv.filters`. \n\nThe key is the alias used in config files, the value is the dotted path.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/d9pouces/Polyarchiv", "keywords": "", "license": "CeCILL-B", "maintainer": "", "maintainer_email": "", "name": "polyarchiv", "package_url": "https://pypi.org/project/polyarchiv/", "platform": "", "project_url": "https://pypi.org/project/polyarchiv/", "project_urls": { "Homepage": "https://github.com/d9pouces/Polyarchiv" }, "release_url": "https://pypi.org/project/polyarchiv/0.14.3/", "requires_dist": null, "requires_python": "", "summary": "Multiple-source backup tool: backup files|MySQL|LDAP|PostgresSQL to git|rsync|tar archives", "version": "0.14.3" }, "last_serial": 2823281, "releases": { "0.10.1": [ { "comment_text": "", "digests": { "md5": "30a3ff40d1c4bfb82a91d8e2b7a5cec9", "sha256": "aed57e90cb4e251a428439beee56229f4f9dee0a4ca305a764a82c9f74924450" }, "downloads": -1, "filename": "polyarchiv-0.10.1.tar.gz", "has_sig": false, "md5_digest": "30a3ff40d1c4bfb82a91d8e2b7a5cec9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 308190, "upload_time": "2016-07-23T21:50:58", "url": "https://files.pythonhosted.org/packages/07/9b/76385b2a0a647cb998745dd4eb05895c97fdd0b62c25a52dd76d8b25aaf0/polyarchiv-0.10.1.tar.gz" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "b161777d0ca7689ecb97f84929fe0955", "sha256": "470224ab66663ae4edc7ab14de9704602ff1e3e1a26989246954ecb21de19cb8" }, "downloads": -1, "filename": "polyarchiv-0.13.0.tar.gz", "has_sig": false, "md5_digest": "b161777d0ca7689ecb97f84929fe0955", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 311141, "upload_time": "2016-09-04T20:20:27", "url": "https://files.pythonhosted.org/packages/ae/1e/d19210f384fd7b368449ca21f64eb3efab437334085c92aa7f59ba9ddf50/polyarchiv-0.13.0.tar.gz" } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "9164d2ba2faefcb878a90f808bea62f6", "sha256": "5fee7ca5f273bccf6d9ce3ddb7c334f396e9b2c5bd8b0a47148c1551dc796978" }, "downloads": -1, "filename": "polyarchiv-0.14.0.tar.gz", "has_sig": false, "md5_digest": "9164d2ba2faefcb878a90f808bea62f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 384083, "upload_time": "2017-02-14T18:30:55", "url": "https://files.pythonhosted.org/packages/89/10/dbec75cab083590ead8c83e46d9d21c8a9c5e6e3579c320b9223ea879eab/polyarchiv-0.14.0.tar.gz" } ], "0.14.1": [ { "comment_text": "", "digests": { "md5": "05a2348d4966bde6d44567da6389def1", "sha256": "65548a401ff271a3255636a7eabf0aa2c713cca361d0af77c9d939874aece105" }, "downloads": -1, "filename": "polyarchiv-0.14.1.tar.gz", "has_sig": false, "md5_digest": "05a2348d4966bde6d44567da6389def1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 384236, "upload_time": "2017-02-20T20:02:53", "url": "https://files.pythonhosted.org/packages/1e/13/80dcb30535a367363f324e29dab027c28a22caa9104dc342ebe3e7352a28/polyarchiv-0.14.1.tar.gz" } ], "0.14.3": [ { "comment_text": "", "digests": { "md5": "574038e1cc69369b885b62b021d03c98", "sha256": "0318c960dbbb5c07d8cb11f6441b2c1f507bb807da74b919ea07c43e8a838af8" }, "downloads": -1, "filename": "polyarchiv-0.14.3.tar.gz", "has_sig": false, "md5_digest": "574038e1cc69369b885b62b021d03c98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 384288, "upload_time": "2017-04-23T12:16:47", "url": "https://files.pythonhosted.org/packages/ae/68/530a9d6686ca506d7d14a0ea50b6b52ae9f479ded6ac9112dc139c8f4b1e/polyarchiv-0.14.3.tar.gz" } ], "0.5.2": [], "0.7.0": [ { "comment_text": "", "digests": { "md5": "7e6699a6874172a1a09fddea2757e5bb", "sha256": "f3afde334dd0c50db53af5fae1f1ac55f00330e9cfbb009badb9c4935af5f388" }, "downloads": -1, "filename": "polyarchiv-0.7.0.tar.gz", "has_sig": false, "md5_digest": "7e6699a6874172a1a09fddea2757e5bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34508, "upload_time": "2016-05-05T18:19:13", "url": "https://files.pythonhosted.org/packages/9a/c8/ef0b73d14281a44f049be055cb51f4d044fc4a9d629d950289b164bdb406/polyarchiv-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "25576a7a00c0f443d778e461c2536b13", "sha256": "fa3169823378cf2539b343e39b194bb8b3c905a1932c8873be1bcebc48c52cd9" }, "downloads": -1, "filename": "polyarchiv-0.7.1.tar.gz", "has_sig": false, "md5_digest": "25576a7a00c0f443d778e461c2536b13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35816, "upload_time": "2016-05-06T05:43:27", "url": "https://files.pythonhosted.org/packages/1d/fb/c5e490f2ef7d7c7f378f6b37e6f7843ec644a30d5a682a7305f083c34b31/polyarchiv-0.7.1.tar.gz" } ], "0.7.10": [ { "comment_text": "", "digests": { "md5": "7ef9d5ea6acf574631dc4fe26f7437e7", "sha256": "514fec452c6836ee4899bd3b258fa668ea4f2752567f89fff03b14aa7c82bbbf" }, "downloads": -1, "filename": "polyarchiv-0.7.10.tar.gz", "has_sig": false, "md5_digest": "7ef9d5ea6acf574631dc4fe26f7437e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39568, "upload_time": "2016-05-14T20:54:32", "url": "https://files.pythonhosted.org/packages/5b/73/37a25c5033ba95a76a46a0db6013d3c45d9b214887e58f0a031c8c424a91/polyarchiv-0.7.10.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "780d4f1d680073f02ed0050b4a196770", "sha256": "1a197bc24449fe9615adf254156e14947fb9e9126837b510122b3f4e7b253b44" }, "downloads": -1, "filename": "polyarchiv-0.7.3.tar.gz", "has_sig": false, "md5_digest": "780d4f1d680073f02ed0050b4a196770", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36219, "upload_time": "2016-05-08T13:03:00", "url": "https://files.pythonhosted.org/packages/bb/86/6c2f461f0e88d52017d6602fbee15372a46e410bb42ef774085b28648aa9/polyarchiv-0.7.3.tar.gz" } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "1a6cbf89e6e9346588d0dfb474344571", "sha256": "c9c3b11e71d33fa210208e1cface80a3922a1d06a4b1f6b4b3a0a71ffa68ead4" }, "downloads": -1, "filename": "polyarchiv-0.7.4.tar.gz", "has_sig": false, "md5_digest": "1a6cbf89e6e9346588d0dfb474344571", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36489, "upload_time": "2016-05-08T15:15:50", "url": "https://files.pythonhosted.org/packages/0b/ab/da08c71564a9b38979a7c4bb60f1a5467202785fb4c082d03e35abc59b46/polyarchiv-0.7.4.tar.gz" } ], "0.7.6": [ { "comment_text": "", "digests": { "md5": "1b27d329704d905032bad58b1457d747", "sha256": "19595ca62389c84c7ca5bcc028ba097d382aeceb01329ebc19f65af6318f270a" }, "downloads": -1, "filename": "polyarchiv-0.7.6.tar.gz", "has_sig": false, "md5_digest": "1b27d329704d905032bad58b1457d747", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36922, "upload_time": "2016-05-08T21:16:24", "url": "https://files.pythonhosted.org/packages/2a/ff/5401684c7a54fb012bf515737ba870f3daeef90db0dae009424d7557faeb/polyarchiv-0.7.6.tar.gz" } ], "0.7.7": [ { "comment_text": "", "digests": { "md5": "41f6c4a06c89c2cad9511257d489ca86", "sha256": "0c5d562578da01617d8f5bf82327b69bd309e768402b922b0544c07991b1575d" }, "downloads": -1, "filename": "polyarchiv-0.7.7.tar.gz", "has_sig": false, "md5_digest": "41f6c4a06c89c2cad9511257d489ca86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38891, "upload_time": "2016-05-12T06:42:10", "url": "https://files.pythonhosted.org/packages/26/3e/8d0b15f713934b530aa53f71280420ff805fe2e4bd9036ffcd3e71c70bfd/polyarchiv-0.7.7.tar.gz" } ], "0.7.8": [ { "comment_text": "", "digests": { "md5": "91addf46e0ea4daf0c521bbada156ff1", "sha256": "9a945dc06a8e71741cbe7a5d42ff99c054c5a0c2bc6fa079f64b67defe909507" }, "downloads": -1, "filename": "polyarchiv-0.7.8.tar.gz", "has_sig": false, "md5_digest": "91addf46e0ea4daf0c521bbada156ff1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39449, "upload_time": "2016-05-14T16:50:04", "url": "https://files.pythonhosted.org/packages/59/d4/c68265c9798d8c98e0c15cc707bfa58b30d905fc37f313cfeeb1299e8c2c/polyarchiv-0.7.8.tar.gz" } ], "0.7.9": [ { "comment_text": "", "digests": { "md5": "a86dd8c86b12f37e8e3fa421f01aaef4", "sha256": "df5fb665fdf13e436cd863f7d4d07da3c58ec4f7fc0403fb97d8de5188c037df" }, "downloads": -1, "filename": "polyarchiv-0.7.9.tar.gz", "has_sig": false, "md5_digest": "a86dd8c86b12f37e8e3fa421f01aaef4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39524, "upload_time": "2016-05-14T18:16:06", "url": "https://files.pythonhosted.org/packages/a7/fa/932870dcf24dea52a2ed9a747318767643a2cbaa55acd9b3c84ac8f3f5aa/polyarchiv-0.7.9.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "33ea7da29503a4fb4d9506e86a52f1fa", "sha256": "671dea0a195225d8b41264d1d585066ba051bc2d6b53a848e3048e58178de51f" }, "downloads": -1, "filename": "polyarchiv-0.8.0.tar.gz", "has_sig": false, "md5_digest": "33ea7da29503a4fb4d9506e86a52f1fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43748, "upload_time": "2016-05-27T18:58:10", "url": "https://files.pythonhosted.org/packages/8b/cd/90be8837855461379e22fb4aa2ba764ca41e512a7a60928b77386c7e570e/polyarchiv-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "06d2a025e989ae7bc5f5848f39963114", "sha256": "f5644c21f0f4bea455d484a9398187b9d841d46896d034a658bea1f2e8bed753" }, "downloads": -1, "filename": "polyarchiv-0.8.1.tar.gz", "has_sig": false, "md5_digest": "06d2a025e989ae7bc5f5848f39963114", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46472, "upload_time": "2016-06-01T05:34:22", "url": "https://files.pythonhosted.org/packages/ab/e2/b81c14daaeb661965cb8c845dcb99a7ae038f31f1e67d26cf138a63da38b/polyarchiv-0.8.1.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "eb220621fb6db958010236a70532f7b7", "sha256": "98369ba2aa33469457688ff3959ef5c5cbe4640eb8df0e168116627a76d00341" }, "downloads": -1, "filename": "polyarchiv-0.8.3.tar.gz", "has_sig": false, "md5_digest": "eb220621fb6db958010236a70532f7b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 305766, "upload_time": "2016-06-29T17:34:58", "url": "https://files.pythonhosted.org/packages/a9/7d/6250fd25f93498538b8d8bdcbd7a5fa3b48bbfc9167ea094b2dd279ddb14/polyarchiv-0.8.3.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "f0c91266942972b2f2d125b4a11502ee", "sha256": "a48def92cc5db72af7e725a1bf62007f5e1e0f0d2c2ffb9ef75bed240d54c942" }, "downloads": -1, "filename": "polyarchiv-0.9.1.tar.gz", "has_sig": false, "md5_digest": "f0c91266942972b2f2d125b4a11502ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 308554, "upload_time": "2016-07-10T12:49:00", "url": "https://files.pythonhosted.org/packages/ca/ec/8d6a146308191ac76d7f3ba090c268d59ffd759d8488ea0031e301400ba5/polyarchiv-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "bfef8c18f7e94788a3401e48604e1107", "sha256": "2e4d227da119f678cf9d0eede37c8459a6025fe530973ea76dc9412ed3bcefba" }, "downloads": -1, "filename": "polyarchiv-0.9.2.tar.gz", "has_sig": false, "md5_digest": "bfef8c18f7e94788a3401e48604e1107", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 309087, "upload_time": "2016-07-10T16:37:06", "url": "https://files.pythonhosted.org/packages/ff/b2/d5a961bfe1e5a00bdda38f85b6d6743a6e7778772aa8e44dec19067e60fb/polyarchiv-0.9.2.tar.gz" } ], "0.9.6": [ { "comment_text": "", "digests": { "md5": "c50c8b36369a647b0a0e08efa40c06e6", "sha256": "3956f5b8b8e8515f94144cc1622e550ea79c1510a8098bd5e4b87ff859689c45" }, "downloads": -1, "filename": "polyarchiv-0.9.6.tar.gz", "has_sig": false, "md5_digest": "c50c8b36369a647b0a0e08efa40c06e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 306725, "upload_time": "2016-07-12T21:33:33", "url": "https://files.pythonhosted.org/packages/1f/4f/df780dcc67309a562a13e7a8309de3dc90967261649e0d3365be4d9077c2/polyarchiv-0.9.6.tar.gz" } ], "0.9.7": [ { "comment_text": "", "digests": { "md5": "85f92f6b21f7f30436a00944c7c4d92f", "sha256": "e686914b21d6b83a56250ed71a4e6f0066c3b8d8ee1b79ce1c02e809b88fed92" }, "downloads": -1, "filename": "polyarchiv-0.9.7.tar.gz", "has_sig": false, "md5_digest": "85f92f6b21f7f30436a00944c7c4d92f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 307010, "upload_time": "2016-07-15T21:28:27", "url": "https://files.pythonhosted.org/packages/78/f8/4fcbd9b0cebdfbd27289b6a4cb95051a8995bc781d74e80d4de9884f9723/polyarchiv-0.9.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "574038e1cc69369b885b62b021d03c98", "sha256": "0318c960dbbb5c07d8cb11f6441b2c1f507bb807da74b919ea07c43e8a838af8" }, "downloads": -1, "filename": "polyarchiv-0.14.3.tar.gz", "has_sig": false, "md5_digest": "574038e1cc69369b885b62b021d03c98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 384288, "upload_time": "2017-04-23T12:16:47", "url": "https://files.pythonhosted.org/packages/ae/68/530a9d6686ca506d7d14a0ea50b6b52ae9f479ded6ac9112dc139c8f4b1e/polyarchiv-0.14.3.tar.gz" } ] }