{ "info": { "author": "Teamplify", "author_email": "support@teamplify.com", "bugtrack_url": null, "classifiers": [], "description": "# Teamplify runner\n\n[![image](https://travis-ci.org/teamplify/teamplify-runner.svg?branch=master)](https://travis-ci.org/teamplify/teamplify-runner)\n\n\n - [About](#about)\n - [System requirements](#system-requirements)\n - [Install on Linux](#install-on-linux)\n - [Install on Mac OS X](#install-on-mac-os-x)\n - [Configuration](#configuration)\n - [Configuration file locations](#configuration-file-locations)\n - [Starting and stopping the service](#starting-and-stopping-the-service)\n - [Updates](#updates)\n - [Backup and restore](#backup-and-restore)\n - [Maintenance script](#maintenance-script)\n - [Troubleshooting](#troubleshooting)\n - [Uninstall](#uninstall)\n - [License](#license)\n\n\n# About\n\n[Teamplify](https://teamplify.com) is a personal assistant for your development \nteam that helps you track work progress and notify your team about situations \nthat may require their attention. It is available in two options: \n[in the cloud](https://teamplify.com) or as an on-premise installation. This \npackage is the installer and runner for the on-premise version.\n\n\n# System requirements\n\nTeamplify was designed to run on Linux. It should also work if you wish to \ndeploy it on Mac OS X for demonstration purposes. Windows is not supported. \nBefore you proceed to the installation, please make sure that your system has \nthe following components installed:\n\n - [Docker version 1.13 and above](https://docs.docker.com/install/);\n - [Python 3.4 and above](https://www.python.org/downloads/);\n - [pip for Python 3](https://packaging.python.org/tutorials/installing-packages/#ensure-you-can-run-pip-from-the-command-line)\n\nYou can check to see if the required versions are installed with the following \ncommands (shown with example output):\n\n``` shell\n$ docker -v\nDocker version 18.06.1-ce, build e68fc7a215d7133c34aa18e3b72b4a21fd0c6136\n$ python3 --version\nPython 3.7.2\n$ pip3 --version\npip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7)\n```\n\n### Note for Ubuntu users\n\nOn most systems, `Python 3` comes with `pip3` already pre-installed. However,\nUbuntu is different - `Python 3` and `pip3` are installed separately. To install\n`pip3` run:\n\n```shell\n$ sudo apt install python3-pip\n```\n\nImportant: after the installation, please exit the terminal and open it again. \nThis will force the terminal to update its path configuration, so that command\nline tools later installed with `pip3` could be found in path. \n\n### Hardware\n\nWe recommend 4GB of RAM, 2 CPU cores and 30 GB of disk space (SSD is strongly \nrecommended) as a default server configuration. For most small-to-medium \norganizations (up to a few dozen people), this should be enough. Larger \nworkloads, however, may need more resources. The recommended strategy is to \nstart with the default server configuration and scale up or down depending on \nthe workload.\n\n\n# Install on Linux\n\nAfter installing Docker, please check the \n[Post-installation steps for Linux](https://docs.docker.com/install/linux/linux-postinstall/).\nYou'll probably want to make sure that you're able to run Docker commands \nwithout `sudo` and that Docker is configured to start on boot.\n\nInstall the latest version of Teamplify runner with pip:\n\n``` shell\n$ pip3 install -U teamplify\n```\n\n\n# Install on Mac OS X\n\nFor Mac OS X, we recommend installing Teamplify into a Python virtual \nenvironment located in your home directory. This is because Teamplify needs to \nmount its configuration files into Docker containers, and on Mac OS X only the\n`/Users` folder is shared with Docker by default. \n\nCreate a new Python virtual environment for Teamplify in your home directory: \n\n``` shell\n$ python3 -m venv ~/.venv/teamplify\n```\n\nActivate it:\n\n``` shell\n$ source ~/.venv/teamplify/bin/activate\n```\n\nAt this point, a `pip` command will be linked to the virtual environment that \nyou just created. Install Teamplify runner with `pip`: \n\n``` shell\n$ pip install teamplify\n```\n\n# Configuration\n\nTeamplify requires a configuration file to run. You can create an initial \nconfiguration file with the following command:\n\n``` shell\n$ teamplify configure\n```\n\nThis will create a configuration file with default settings in your home\ndirectory: `~/.teamplify.ini`. Now, please use your favorite text editor to \nadjust the contents of this file. You need to specify `product_key` in the \n`[main]` section and `host` and `port` in the `[web]` section. Other parameters \nare optional and can keep their default values.\n\nAll configuration options explained:\n\n`[main]`\n\n- `product_key` - the product key of your installation. This is required. \n Please email us at [support@teamplify.com](mailto:support@teamplify.com) to \n get the product key;\n\n- `update_channel` - the application distribution channel to use. Can be set to\n `stable` or `latest`. The default setting is `stable` (recommended for most \n users). With the `stable` channel, you should expect a few updates per month. \n Updates in the latest channel are more frequent and contain all of the latest \n features and bug-fixes. However, they also have a higher chance of \n introducing new bugs. Please note that Teamplify doesn't update itself \n automatically unless you've explicitly configured it to do so. See the \n [Updates](#updates) and [Maintenance script](#maintenance-script) sections \n below;\n\n- `send_crash_reports` - possible values are `yes` and `no`, defaults to `yes`. \n When set to `yes` the system will automatically send application crash \n reports to our team. We recommend keeping this option enabled as it helps us \n to detect bugs faster and ship fixes for them more quickly; \n\n`[web]`\n\n- `host` - domain name on which Teamplify web interface will be running. It \n must be created in advance and pointing to the server on which you have \n installed Teamplify;\n- `port` - port on which Teamplify web interface will be running, the default \n is `80`. If `use_ssl` is set to `yes` then `80` is the only allowed option;\n- `use_ssl` - possible values are `no`, `builtin`, and `external`, defaults to \n `no`. When set to `builtin` or `external`, all traffic to your Teamplify \n server will be redirected to HTTPS on port `443`. When set to `builtin`, \n Teamplify runner will use [Let's Encrypt](https://letsencrypt.org) to \n automatically generate and renew SSL certificates for the domain that you \n specified in the `host` parameter above. If you're hosting Teamplify behind a \n proxy or load balancer that is already configured for SSL support, please set \n this parameter to `external`, and also make sure that your proxy correctly\n sets `X-Forwarded-Proto` HTTP header;\n\n`[db]`\n\n- `host` - defaults to `builtin_db`, which means using the DB instance that is \n shipped with Teamplify. You can also switch to an external MySQL 5.7 \n compatible database by providing its hostname instead of `builtin_db` and \n specifying other DB connection parameters below;\n- `name` - the database name to use. Must be `teamplify` if `builtin_db` is \n used;\n- `port` - the database port. Must be `3306` for `builtin_db`;\n- `user` - DB user. Must be `root` for `builtin_db`;\n- `password` - DB password. Must be `teamplify` for `builtin_db`;\n- `backup_mount` - a path to a directory on the server which will be mounted \n into the built-in DB instance container. It is used as a temporary directory \n in the process of making and restoring backups;\n\n`[email]`\n\n- `address_from` - email address used by Teamplify in the FROM field of its \n email messages. It could be either a plain email address or an email address \n with a display name, like this: \n `Teamplify `;\n- `smtp_host` - hostname of an SMTP server used to send emails. Defaults to \n `builtin_smtp` which means using the SMTP server that is shipped with \n Teamplify. Built-in SMTP for Teamplify is based on Postfix, and it is \n production-ready. However, if you plan to use it, we strongly recommend that \n you add the address of Teamplify's server to the \n [SPF record](http://www.openspf.org/SPF_Record_Syntax) of the domain used \n in the `address_from` setting to prevent Teamplify emails from being marked \n as spam. Or, you can configure Teamplify to use an external SMTP server by \n providing its hostname instead of `builtin_smtp` and configuring other \n SMTP connection settings below;\n- `smtp_protocol` - SMTP protocol to use. Can be `plain`, `ssl`, or `tls`. \n Must be `plain` if you use `builtin_smtp`;\n- `smtp_port` - SMTP port to use. Must be `25` for `builtin_smtp`;\n- `smtp_user` - username for the SMTP server. Must be blank for `builtin_smtp`;\n- `smtp_password` - password for the SMTP server. Must be blank for\n `builtin_smtp`;\n\n`[crypto]`\n\n- `signing_key` - the random secret string used by Teamplify for signing \n cookies and generating CSRF protection tokens. It is automatically generated \n when you run `teamplify configure`, and typically you don't need to change \n it unless you think that it may be compromised. In such cases, replace it with \n another 50-character random string made of Latin characters and numbers \n (please note that this will force all existing users to log in to the system \n again).\n\n\n# Configuration file locations\n\nWhen you run `teamplify configure`, it will create a configuration file at \n`~/.teamplify.ini`. However, this is not the only possible location. Teamplify \nwill search the following locations (listed in the order of their priority, \nfrom highest to lowest):\n\n1. The location specified in the `--config` parameter in the command line. \n Example:\n\n ``` shell\n $ teamplify --config /path/to/configuration/file start\n ```\n\n2. An environment variable named `TEAMPLIFY_CONF`. Example:\n\n ``` shell\n $ TEAMPLIFY_CONF=/path/to/configuration/file teamplify start\n ```\n\n3. In the home directory of the current user: `~/.teamplify.ini`;\n4. At `/etc/teamplify/teamplify.ini`.\n\n\n# Starting and stopping the service\n\nAfter you have created the configuration file, start Teamplify with:\n\n``` shell\n$ teamplify start\n```\n\nDuring the first run, it may take a while before the application starts since \nit will have to download and configure a bunch of Docker images. Wait for the \ncommand to complete and open Teamplify in your browser using the `host` and \nthe `port` that you provided in the `[web]` section of the configuration. After \nstarting the service, it may take a minute or two before it finally comes \nonline. If you have problems starting Teamplify, please see the \n[Troubleshooting](#troubleshooting) section below.\n\nIf you need to stop Teamplify, run:\n\n``` shell\n$ teamplify stop\n```\n\nThere's also a convenient command to stop the service and start it again. It \ncould be useful for applying changes made to the configuration:\n\n``` shell\n$ teamplify restart\n```\n\n\n# Updates\n\nTeamplify installation consists of the Teamplify runner and the Teamplify \nproduct itself, which is shipped in the form of Docker images. We recommend \nthat you use the most recent version to keep up with the latest features and \nbugfixes. The update process consists of two steps:\n\n1. Update Teamplify runner:\n\n ``` shell\n $ pip3 install -U teamplify\n ```\n\n2. Update Teamplify itself:\n\n ``` shell\n $ teamplify update\n ```\n\nThe latter command will automatically detect if a new version has been \ndownloaded and will restart the service if necessary. A service restart causes \na short downtime, so ideally updates should be made in periods of low user \nactivity. The `update` command restarts the service only when necessary. If no \nupdate has been downloaded, there will be no restart and therefore no service \ninterruption.\n\n\n# Backup and restore\n\nTeamplify stores your data in MySQL database. As with any other database, it \nmight be a good idea to make backups from time to time to ensure that the data \nis not lost in case of a system crash.\n\nTo back up the built-in Teamplify database, run:\n\n``` shell\n$ teamplify backup [optional-backup-file-or-directory]\n```\n\nIf launched without parameters, it will make a gzipped backup of the DB and \nstore it in the current working directory under a name in the format\n`teamplify_.sql.gz`, for example, \n`teamplify_2019-01-31_06-58-57.sql.gz`. You have the option of specifying a \ndirectory or path to the file where you'd like to save your backup.\n\nTo restore the built-in Teamplify database from a gzipped backup, run:\n\n``` shell\n$ teamplify restore \n```\n\nPlease note that the commands above will work with only a built-in database. \nIf you're running Teamplify with an external database, you'll need to use other \ntools for backups or restores that connect to that database directly.\n\n\n# Maintenance script\n\nBacking up the data and keeping the software up-to-date are routine operations \nand we recommend automating these processes. Below is a sample script you can \nuse to do so.\n\nCreate a file named `teamplify-maintenance.sh` with the following contents:\n\n``` shell\n#!/usr/bin/env bash\n\n# Backups directory:\nBACKUP_LOCATION=/backups/teamplify/\n\n# How many days should we store the backups for:\nBACKUP_STORE_DAYS=14\n\n# Back up Teamplify DB and update Teamplify:\nmkdir -p $BACKUP_LOCATION && \\\n pip3 install -U teamplify && \\\n teamplify backup $BACKUP_LOCATION && \\\n teamplify update\n\n# If the update was successful, clean up old backups:\nif [ $? -eq 0 ]; then\n find $BACKUP_LOCATION -type f -mmin +$((60 * 24 * $BACKUP_STORE_DAYS)) \\\n -name 'teamplify_*.sql.gz' -execdir rm -- '{}' \\;\nfi\n\n\n# The final step is optional but recommended. Add your code so that would \n# sync contents of $BACKUP_LOCATION to a physically remote location.\n#\n# ... add your backups sync code below:\n```\n\nIn the code above, please adjust the path for BACKUP\\_LOCATION and the value \nfor BACKUP\\_STORE\\_DAYS as necessary. At the end of the script, you can add \nyour own code that would sync your backups to a remote location. This is an \noptional but highly recommended precaution that would help you to recover your \nbackup in the case of a disaster. For example, you can use \n[aws s3 sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) to \nupload the backups to AWS S3.\n\nWhen the maintenance script is ready, make it executable with \n`chmod +x teamplify-maintenance.sh` and set it as a cron job to run daily. Open\nthe crontab schedule:\n\n``` shell\n$ crontab -e\n```\n\nAppend the following entry (remember to replace the path to the script):\n\n``` shell\n0 3 * * * /path/to/the/script/teamplify-maintenance.sh\n```\n\nIn the example above, it is scheduled to run daily at 3 AM. See \n[cron syntax](https://en.wikipedia.org/wiki/Cron) for a detailed explanation.\nWhen ready, save and close the file.\n\n\n# Troubleshooting\n\nSo what could possibly go wrong?\n\n### Teamplify won't start\n\nPlease check the following:\n\n- The service won't start if the configuration file is missing or contains \n errors. In such cases, the `teamplify start` command will report a problem. \n Please inspect its output;\n- There could be a problem with the domain name configuration. If the \n `teamplify start` command has completed successfully, you should see \n Teamplify's interface in the browser when you open an address specified in the\n `host` and `port` parameters in the `[web]` section of the \n [Configuration](#configuration). If that doesn't happen, i.e. if browser says \n that it can't find the server or the server is not responding, then most \n likely this is a problem with either the domain name or firewall \n configuration. Please make sure that the domain exists and points to the\n Teamplify server, and that the port is open in the firewall;\n- If you see the \"Teamplify is starting\" message, you should give it a minute \n or two to come online. If nothing happens after a few minutes, there could be \n a problem during application start. Application logs may contain additional \n information:\n\n ``` shell\n $ docker logs teamplify_app\n ```\n\n Please let us know about the problem and attach the output from the command \n above. You can either \n [open an issue on Github](https://github.com/teamplify/teamplify-runner/issues), \n or contact us at [support@teamplify.com](mailto:support@teamplify.com), or \n use the live chat on [teamplify.com](https://teamplify.com).\n\n### Email delivery issues\n\nEmails can go to spam or sometimes aren't delivered at all. If you're\nrunning a demo version of Teamplify on your desktop at home, this is\nvery likely to happen, since IPs of home internet providers have a large\nchance of being blacklisted in spam databases. We recommend that you\ntry the following:\n\n- If you're going to use the built-in SMTP server, consider running Teamplify \n on a server hosted in a data center or at your office, but not at home. Next, \n please make sure that you've added the IP of your Teamplify server to the \n [SPF record](http://www.openspf.org/SPF_Record_Syntax) of the domain used\n in `address_from` setting in the configuration file;\n- Some email providers, for example, Google Mail, explicitly reject emails \n sent from blacklisted IPs. It might be helpful to examine SMTP server \n logs to see if that's what's happening:\n\n ``` shell\n $ docker logs teamplify_smtp\n ```\n\n- Alternatively, if you have another SMTP server that is already configured \n and can reliably send emails, you can configure Teamplify to use this server \n instead of the built-in SMTP. See `[email]` section in \n [Configuration](#configuration) for details;\n \n \n### The connection is refused or not trusted in SSL-enabled mode\n\nDuring the first start, Teamplify runner generates a temporary self-issued SSL \ncertificate (not trusted) and then tries to create a valid certificate for your \ndomain via [Let's Encrypt](https://letsencrypt.org) that would replace the \ntemporary one. Besides that, it also creates a new set of 2048-bit DH parameters \nto give your SSL configuration an A+ rating. This process is rather slow and may \ntake a few minutes to complete. If you open Teamplify in your browser and see \nthat the SSL connection can't be established or is not trusted, the problem may \nbe caused by DH params or the SSL certificate generations that are still in \nprogress. After DH params and the SSL certificate have been successfully \ngenerated, they are saved for future use and subsequent restarts of the server \nshould be much faster.\n\nIf you have just started the server for the very first time, please give it a \nfew minutes to complete the initialization and then refresh the page in your \nbrowser. If after a few minutes the browser reports that the connection is not \ntrusted, it probably means that the certificate generation has failed. Please \ncheck the following:\n\n1. That the domain that you specified in the `host` parameter can be resolved \n from the public Internet and is pointing to the server on which you have \n installed Teamplify;\n2. That ports `80` and `443` are not blocked in the firewall.\n\nIt also might be helpful to check the logs:\n\n``` shell\n$ docker logs teamplify_letsencrypt\n```\n\n\n### Other\n\nFor any issue with Teamplify, we recommend that you try to \n[check for updates](#updates) first. We release updates frequently. It's quite \npossible that the problem that you encountered is already addressed in a newer \nversion.\n\nIf the suggested solutions above don't work, please don't hesitate to \n[open an issue on Github](https://github.com/teamplify/teamplify-runner/issues) \nor contact us at [support@teamplify.com](mailto:support@teamplify.com). You can\nalso use the live chat on [teamplify.com](https://teamplify.com). We're ready \nto help!\n\n\n# Uninstall\n\nIf you'd like to uninstall Teamplify, please follow the steps below. IMPORTANT: \nthe uninstall procedure will erase all of the data stored in Teamplify, so please consider making a [backup](#backup-and-restore) before doing this.\n\nRemove all Teamplify data, Docker images, volumes, and networks:\n\n``` shell\n$ teamplify erase\n```\n\nUninstall Teamplify runner:\n\n``` shell\n$ pip3 uninstall teamplify\n```\n\n\n# License\n\nTeamplify runner is available under the MIT license. Please note that the MIT \nlicense applies to Teamplify runner only, but not to the main Teamplify product. \nSome Docker images downloaded by Teamplify runner will contain a proprietary \ncode that is not open source and is distributed under its own \n[terms and conditions](https://teamplify.com/terms/).", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/teamplify/teamplify-runner/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "teamplify", "package_url": "https://pypi.org/project/teamplify/", "platform": "", "project_url": "https://pypi.org/project/teamplify/", "project_urls": { "Homepage": "https://github.com/teamplify/teamplify-runner/" }, "release_url": "https://pypi.org/project/teamplify/0.1.15/", "requires_dist": null, "requires_python": ">=3.4", "summary": "Teamplify on-premise runner", "version": "0.1.15" }, "last_serial": 4947189, "releases": { "0.1.10": [ { "comment_text": "", "digests": { "md5": "64cb3bcd0a9602867aafee459d0fb8e7", "sha256": "936ce98d1f5063520a572cf5a5e96141583778600d2b2a9703f5151fbbf79788" }, "downloads": -1, "filename": "teamplify-0.1.10.tar.gz", "has_sig": false, "md5_digest": "64cb3bcd0a9602867aafee459d0fb8e7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 20192, "upload_time": "2019-03-02T19:43:24", "url": "https://files.pythonhosted.org/packages/f6/9a/5359980bbf222340e92b39c3ac796c31b2e4969131a970b2fb6cfe67f080/teamplify-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "ad04dc10f035e1ea4cd1d0ff4f761076", "sha256": "f88612bb9ac7d34370251b2bc72c45cfb9efe872dfbbbde295a8e5f763590d6c" }, "downloads": -1, "filename": "teamplify-0.1.11.tar.gz", "has_sig": false, "md5_digest": "ad04dc10f035e1ea4cd1d0ff4f761076", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 20428, "upload_time": "2019-03-12T18:45:31", "url": "https://files.pythonhosted.org/packages/5c/fa/1d0f14ea83feecd15f324c875fe81bd9fc3f76efed1c787beeff2993e9db/teamplify-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "f0d11e22596152f29f946be7796a1bda", "sha256": "560c5f5fe3802b5d0b9f3a523452def8286ad2648fedac60c13f501ad405ce60" }, "downloads": -1, "filename": "teamplify-0.1.12.tar.gz", "has_sig": false, "md5_digest": "f0d11e22596152f29f946be7796a1bda", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 20580, "upload_time": "2019-03-14T13:00:17", "url": "https://files.pythonhosted.org/packages/39/8c/db1e90574144672489f40f8fa79e1080e7314dba3fecd4c67425bdb45409/teamplify-0.1.12.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "4616c90554f416231ef59e61039d145e", "sha256": "49cef43f0efc95f8000975a3ffc746eee06769eed179d0ce74a3a42c0aa48b84" }, "downloads": -1, "filename": "teamplify-0.1.14.tar.gz", "has_sig": false, "md5_digest": "4616c90554f416231ef59e61039d145e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 21014, "upload_time": "2019-03-14T21:07:08", "url": "https://files.pythonhosted.org/packages/b5/39/bbc0abd5218d27e4ed113d4ebc0ae0710557c4b4950d2be9e9506d1d8a9a/teamplify-0.1.14.tar.gz" } ], "0.1.15": [ { "comment_text": "", "digests": { "md5": "0c60ea02f3fcce2337cbafe56cfcfe19", "sha256": "f6b662677b677a9585cb19a9829acf7770cee54b1e4c3394ea83d608da83d540" }, "downloads": -1, "filename": "teamplify-0.1.15.tar.gz", "has_sig": false, "md5_digest": "0c60ea02f3fcce2337cbafe56cfcfe19", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 21328, "upload_time": "2019-03-16T09:00:21", "url": "https://files.pythonhosted.org/packages/7b/55/fa358276731f6e9f13302940d19d0ac39e47d543c495b543012ed1c84eef/teamplify-0.1.15.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "53361ce64216855fcc833343e23cb779", "sha256": "8ed76e18a1741a2bd021a05644ddfb4e2717bf3bd652fb68b282d88742d48e33" }, "downloads": -1, "filename": "teamplify-0.1.6.tar.gz", "has_sig": false, "md5_digest": "53361ce64216855fcc833343e23cb779", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 18926, "upload_time": "2019-02-28T10:04:41", "url": "https://files.pythonhosted.org/packages/ff/77/0d18eb12e1b8247866d60634058659f42ecb37a6867dc1068996388e1e94/teamplify-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "caf3dc69af96933c59b765ea8068ea75", "sha256": "8a2fd4e2996d545e2220b1c886feb05ad43f6de9333a6a0ea350ad436b427159" }, "downloads": -1, "filename": "teamplify-0.1.7.tar.gz", "has_sig": false, "md5_digest": "caf3dc69af96933c59b765ea8068ea75", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 19047, "upload_time": "2019-02-28T16:30:27", "url": "https://files.pythonhosted.org/packages/18/8b/a772414143e9089ea57244cf8428f296e63de7aa7a96c3e3c07ae6da6925/teamplify-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "abf90f496bb851ea4bfaeb0be048ee30", "sha256": "c7bd5799ff15803460643e9130a4a59338eb63a4ab75f84a6f0a5578756e09b7" }, "downloads": -1, "filename": "teamplify-0.1.8.tar.gz", "has_sig": false, "md5_digest": "abf90f496bb851ea4bfaeb0be048ee30", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 19532, "upload_time": "2019-03-02T15:50:40", "url": "https://files.pythonhosted.org/packages/2b/b6/ea3a2ad14d22adb4dda94f7df5090233c7feffaa7601a84d0139b9c9e1cc/teamplify-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "60cd63b03bce6e2769aa511ab5aea4b8", "sha256": "72bf67ef64a5c382ffe83c8cfd4736dffc4c5f24e885e003bee7319b9e9e8f06" }, "downloads": -1, "filename": "teamplify-0.1.9.tar.gz", "has_sig": false, "md5_digest": "60cd63b03bce6e2769aa511ab5aea4b8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 19531, "upload_time": "2019-03-02T16:18:08", "url": "https://files.pythonhosted.org/packages/d0/5f/bd2a20f93966fc02c40041c83e27e22010cf16708131061c01915abbed92/teamplify-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0c60ea02f3fcce2337cbafe56cfcfe19", "sha256": "f6b662677b677a9585cb19a9829acf7770cee54b1e4c3394ea83d608da83d540" }, "downloads": -1, "filename": "teamplify-0.1.15.tar.gz", "has_sig": false, "md5_digest": "0c60ea02f3fcce2337cbafe56cfcfe19", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 21328, "upload_time": "2019-03-16T09:00:21", "url": "https://files.pythonhosted.org/packages/7b/55/fa358276731f6e9f13302940d19d0ac39e47d543c495b543012ed1c84eef/teamplify-0.1.15.tar.gz" } ] }