{ "info": { "author": "Joseph Wright", "author_email": "joseph@cloudboss.co", "bugtrack_url": null, "classifiers": [], "description": "bossimage\n=========\n\n|Build Status|\n\nBossimage is a command line utility to convert an `Ansible\nrole `__ into an\n`Amazon EC2\nAMI `__.\n\nBossimage requires just one configuration file to be added to the base\ndirectory of an Ansible role. Once that is done, Bossimage may be used\nto build an EC2 instance, run the Ansible role on it, then \"bake\" it\ninto an AMI. After the AMI is created, Bossimage can also build a test\ninstance from it and run a test playbook on the instance.\n\nBossimage is inspired by both `Packer `__ and\n`Test Kitchen `__, but much simpler than either. If\nyou use both Ansible and AWS, you may find it useful.\n\nBossimage has been tested on both Linux and Windows targets in EC2.\n\nInstallation\n============\n\nInstall from `PyPI `__\n----------------------------------------------------\n\n::\n\n pip install bossimage\n\nInstall from source\n-------------------\n\n::\n\n git clone https://github.com/cloudboss/bossimage.git\n cd bossimage\n pip install -r requirements.txt\n pip install .\n\nQuick Start\n===========\n\nAll interaction with Bossimage is done through an executable command\ncalled ``bi``, which must always be run from the base directory of an\nAnsible role.\n\nThis introduction to Bossimage will explain how to do three things:\n\n1. Make an EC2 instance and run Ansible on it (``bi make build``).\n2. Make an AMI from the EC2 instance (``bi make image``).\n3. Make a test instance from the AMI and run a test Ansible playbook on\n it (``bi make test``).\n\nLater it will be explained how to do a few other things as well.\n\nFirst, a small amount of configuration is necessary.\n\n Note: in this guide, all commands to be run from the shell are shown\n preceded by ``>`` to indicate the shell prompt.\n\nConfiguration\n~~~~~~~~~~~~~\n\nBossimage requires a configuration file called ``.boss.yml`` to be\nplaced in the root directory of the Ansible role. A minimal example of\nsuch a file is as follows:\n\n::\n\n platforms:\n - name: amz-2015092\n instance_type: t2.micro\n build:\n source_ami: amzn-ami-hvm-2015.09.2.x86_64-gp2\n\nThe example contains the most minimal configuration possible, using\ndefaults for all settings except those which are required: the platform\nname, the `instance type `__\nand the source AMI used for the ``build`` phase.\n\nAlthough Bossimage creates resources in AWS, it does not include any AWS\nauthentication code, instead preferring to pass all authentication\nthrough to the underlying\n`SDK `__\nusing `standard environment\nvariables `__.\nHere is an example of gaining credentials by setting ``AWS_PROFILE`` and\n``AWS_DEFAULT_REGION`` environment variables, assuming a credentials\nfile has already been created.\n\n::\n\n > export AWS_PROFILE=uhuru\n > export AWS_DEFAULT_REGION=us-west-1\n\nIf Bossimage is being run from an EC2 instance, an `IAM instance\nprofile `__\nmay be used instead of environment variables, as described later.\n\nRunning\n~~~~~~~\n\nMost ``bi`` subcommands require an *instance* argument to be passed to\nthem. The *instance* is derived from a *platform* together with a\n*profile*, i.e., ``-``. In the ``.boss.yml``\nconfiguration shown above, a single platform is defined with name\n``amz-2015092``. The profile is not explicitly defined, and is therefore\n``default``. So the instance is ``amz-2015092-default``, and that will\nbe the argument passed to the commands in this introduction.\n\nPlatforms and profiles will be described in more detail later.\n\nbi make build\n^^^^^^^^^^^^^\n\nThis builds an EC2 instance and runs the Ansible role on it. A unique\nssh keypair is also created and assigned to the instance. This command,\nas with other ``bi`` commands, is idempotent and may be run multiple\ntimes without creating a new instance each time. Subsequent runs will\nsimply run the Ansible role again on the existing instance.\n\nConsider ``bi make build`` the entrypoint of Bossimage: it must be run\nbefore ``bi make image`` or ``bi make test``.\n\n::\n\n > bi make build amz-2015092-default\n Created keypair bossimage-oZL4NxUbAM\n Created instance i-00000001\n Waiting for instance to be running ... ok\n Waiting for connection to 54.xxx.xxx.xxx:22 to be available ... ok\n\n PLAY ***************************************************************************\n\n TASK [setup] *******************************************************************\n ok: [54.xxx.xxx.xxx]\n\n TASK [test-role : add package httpd] *******************************************\n changed: [54.xxx.xxx.xxx]\n\n PLAY RECAP *********************************************************************\n 54.xxx.xxx.xxx : ok=1 changed=1 unreachable=0 failed=0\n\nbi make image\n^^^^^^^^^^^^^\n\nThe primary goal of Bossimage is to create an AMI from an Ansible role,\nand that is what this command does. It may be run when ``bi make build``\nhas completed.\n\n::\n\n > bi make image amz-2015092-default\n Created image ami-00000001 with name test-role.default.amz-2015092.hvm.x86_64.v2\n Waiting for image to be available ... ok\n Image is available\n\nbi make test\n^^^^^^^^^^^^\n\nIt is useful to test that ``bi make image`` generated a correct AMI, and\nthis is where ``bi make test`` comes into play.\n\nThis command is very similar to ``bi make build``, in that it creates an\nEC2 instance and runs Ansible on it. However, it depends on a successful\noutcome of the ``bi make image`` command, as it uses the AMI created by\nthat command as the source AMI of the EC2 test instance.\n\nIt also does not run the Ansible role on the instance, rather it runs a\ntest playbook, which by default is ``tests/test.yml``, relative to the\nroot of the Ansible role directory. When creating an Ansible role with\nthe ``ansible-galaxy`` command, this test playbook is added by default.\nFor this default test playbook to work with Bossimage, only one small\nchange is needed: to changed the ``hosts`` in the playbook from\n``localhost`` to ``test``.\n\n::\n\n > bi make test amz-2015092-default\n Created instance i-00000002\n Waiting for instance to be running ... ok\n Waiting for connection to 52.xxx.xxx.xxx:22 to be available ... ok\n\n PLAY [test] ********************************************************************\n\n TASK [setup] *******************************************************************\n ok: [52.xxx.xxx.xxx]\n\n TASK [check that httpd is installed] *******************************************\n ok: [52.xxx.xxx.xxx]\n\n TASK [check that port 80 is listening] **********************************************\n ok: [52.xxx.xxx.xxx]\n\n PLAY RECAP *********************************************************************\n 52.xxx.xxx.xxx : ok=2 changed=0 unreachable=0 failed=0\n\nConclusion\n~~~~~~~~~~\n\nHaving run these three commands, you will have seen the major\nfunctionality of Bossimage. You will have created an AMI and then tested\nit.\n\nContinue reading to learn:\n\n- How to build multiple \"flavors\" of AMIs for a given platform\n- A shortcut for logging into build and test instances\n- Clean up instances and keypairs used during the build and test phases\n- Clean up AMIs that did not pass tests\n\nBossimage\n=========\n\nInstances, Platforms, and Profiles\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nMost of the ``bi`` subcommands, such as ``make build`` or ``make test``,\ntake an argument called the *instance*. An instance is defined by a\n*platform* and a *profile*, such as ``rhel6-default``, where ``rhel6``\nis the platform and ``default`` is the profile.\n\nPlatform\n^^^^^^^^\n\nThe platform defines the source AMI and other settings related to\ncreating an EC2 instance, such as security groups and block device\nmappings. It also defines connection settings for Ansible to reach the\ninstance, such as ssh or winrm ports and default username.\n\nProfile\n^^^^^^^\n\nThe profile defines variables that will be passed to Ansible through its\n``--extra-vars`` argument. By defining multiple profiles, you can build\nmultiple flavors of AMIs for a given platform.\n\nFor example, here is a ``.boss.yml`` with one platform and two profiles.\n\n::\n\n platforms:\n - name: ubuntu-16.04\n build:\n source_ami: ami-301f6f50\n instance_type: t2.micro\n inventory_args:\n ansible_user: ubuntu\n ansible_python_interpreter: /usr/bin/python3\n security_groups: [bossimage]\n\n profiles:\n - name: apache\n extra_vars:\n packages:\n - apache2\n - name: nginx\n extra_vars:\n packages:\n - nginx\n\nRunning ``bi list`` will produce the output:\n\n::\n\n ubuntu-16.04-apache Not created\n ubuntu-16.04-nginx Not created\n\nEach of these platform and profile combinations, or instances, can be\nmade into its own AMI.\n\nIf ``profiles`` is not defined, every platform has an implicit profile,\ncalled ``default``. The ``default`` profile does not define any\nvariables. Note that if ``profiles`` is defined, there is no longer any\nimplicit ``default`` profile. In such cases you can define one that has\nno ``extra_vars`` attribute, if desired.\n\n.boss.yml\n---------\n\nThe ``.boss.yml`` file is placed in the root directory of an Ansible\nrole. It is the only configuration necessary for using Bossimage.\n\nTo start, here is a full example for reference.\n\n::\n\n defaults:\n instance_type: m3.large\n\n platforms:\n - name: centos-6\n instance_type: t2.micro\n connection_timeout: 600\n inventory_args:\n ansible_user: centos\n build:\n source_ami: 'CentOS Linux 6 x86_64 HVM EBS 1602-74e73035-3435-48d6-88e0-89cc02ad83ee-ami-21e6d54b.3'\n test:\n instance_type: m3.medium\n tags:\n Billing: xyz\n Description: Centos 6 Build Instance\n\n - name: amz-2015092\n build:\n source_ami: amzn-ami-hvm-2015.09.2.x86_64-gp2\n image:\n ami_name: '%(role)s-%(profile)s-%(version)s-%(platform)s'\n block_device_mappings:\n - device_name: /dev/sdf\n ebs:\n volume_size: 100\n volume_type: gp2\n delete_on_termination: true\n tags:\n Billing: xyz\n Description: Amazon Linux 201509 Build Instance\n\n - name: win-2016\n build:\n source_ami: ami-2d360152\n become: false\n inventory_args:\n ansible_connection: winrm\n ansible_port: 5985\n ansible_user: Administrator\n image:\n ami_name: '%(role)s-%(profile)s-%(version)s-%(platform)s'\n tags:\n Billing: xyz\n Description: Windows Server 2016 Build Instance\n\n profiles:\n - name: default\n - name: nginx\n extra_vars:\n packages:\n - nginx\n - tcpdump\n\nA ``.boss.yml`` file has three possible sections:\n\n- ``defaults``: This section is optional, and contains default values\n to be used within ``platforms`` when not provided there.\n- ``platforms``: This section is required, and defines a list of\n platforms to build instances from. There must be at least one\n platform defined in a ``.boss.yml`` configuration. Each platform\n defined in the ``platforms`` section contains its own subsections for\n each of the three phases ``build``, ``image``, and ``test``.\n- ``profiles``: This section is optional. In here, sets of variables\n may be defined to modify each platform defined in the ``platforms``\n section. If this section is not given, each platform will have a\n profile called ``default``, with no additional variables set.\n\ndefaults\n~~~~~~~~\n\nThe ``defaults`` section may contain the following variables.\n\n- ``instance_type`` - type: *string*, default: ``t2.micro``\n\nThe EC2 instance type.\n\n- ``username`` - type: *string*, default: ``ec2-user``\n\nThe user that Ansible will use to connect to the instance. If\n``inventory_args`` is defined, this value will be ignored, and\n``ansible_user`` should be put into ``inventory_args`` instead.\n\n- ``connection`` - type: *string*, default: ``ssh``\n\nThe type of `connection that Ansible will\nuse `__.\nIf ``inventory_args`` is defined, this value will be ignored, and\n``ansible_connection`` should be put into ``inventory_args`` instead.\nNote: Bossimage is known to work for ``ssh`` and ``winrm`` connections,\nbut other types may need additional testing and development.\n\n- ``connection_timeout`` - type: *integer*, default: ``300``\n\nThe amount of time in seconds before Bossimage will give up trying to\nmake an Ansible connection.\n\n- ``port`` - type: *integer*, default: 22\n\nThe port used to connect with Ansible. If ``inventory_args`` is defined,\nthis value will be ignored, and ``ansible_port`` should be put into\n``inventory_args`` instead.\n\n- ``associate_public_ip_address`` - type: *bool*, default: ``true``\n\nWhether or not to associate a public IP address to the instance.\n\n- ``subnet`` - type *string*\n\nThe subnet in which the instance will be located.\n\n- ``security_groups`` - type *list* of *string*, default ``[]``\n\nThe security groups that are associated with the instance.\n\n- ``iam_instance_profile`` - type *string*\n\nThe name of the IAM instance profile to assign to the instance.\n\n- ``inventory_args`` - type *map* of *string* to *string*\n\nA map of key/value pairs which will be used for building the Ansible\ninventory. See `the official Ansible\ndocumentation `__\nfor more details on available options. If this variable is defined, the\n``connection``, ``username``, and ``port`` variables will be ignored if\nused, and should be replaced with inventory arguments\n``ansible_connection``, ``ansible_user``, and ``ansible_port``,\nrespectively.\n\nNote: Bossimage normally sets ``ansible_password`` and\n``ansible_ssh_private_key_file`` in the inventory based on runtime\ngenerated values, so it is not advised to define them in\n``inventory_args`` unless you have good reason.\n\n- ``tags`` - type *map* of *string* to *string*, default ``{}``\n\nA map of key/value pairs to be used for tagging the instance.\n\n- ``user_data`` - type: *map* or *string*, default: ``''``\n\nThis is the `user\ndata `__\nthat will be passed into the EC2 instance. If it is given as a map, then\nit must have the key ``file``, which is the path to a file containing\nthe user data.\n\nIf the type is a string, then it is passed verbatim as the user data for\nthe instance.\n\nExamples:\n\n::\n\n defaults:\n user_data:\n file: ./user-data.txt\n\n::\n\n defaults:\n user_data: |\n #!/bin/sh\n yum update -y\n\n- ``block_device_mappings`` - type: *list* of *map*, default: ``[]``\n\nDevices to be attached to the EC2 instance that will be part of a baked\nimage.\n\nEach item in the list is a map as described in the\n`BlockDeviceMappings `__\nproperty passed to the boto3 create\\_instances operation. The only\ndifference is that in. boss.yml, \"CamelCase\" properties should be\nconverted to \"snake\\_case\".\n\nplatforms\n~~~~~~~~~\n\nThe ``platforms`` section contains a list of configurations, one for\neach defined platform. Each platform configuration must have the keys:\n\n- ``name`` - type *string*, required\n\n- ``build`` - type *map*, required\n\nSee `build <#build>`__ below.\n\n- ``image`` - type *map*, optional\n\nSee `image <#image>`__ below.\n\n- ``test`` - type *map*, optional\n\nSee `test <#test>`__ below.\n\nThe platform configuration may also contain any of the variables from\n``defaults``, and will override any of the definitions from there.\n\nbuild\n^^^^^\n\nThe ``build`` section of a platform is required and may include any of\nthe variables from ``defaults``. They will override any of the\ndefinitions given there or in the parent platform.\n\nThe ``build`` section also has the following keys:\n\n- ``source_ami`` - type: *string*, required\n\nThis is the source AMI to build the instance from. It may be given as an\nAMI ID or name, from which the ID will be found.\n\n- ``become`` - type: *boolean*, default: ``true``\n\nThis tells Ansible whether or not to \"become\" the superuser.\n\nimage\n^^^^^\n\nThe ``image`` section of a platform may have the following key:\n\n- ``ami_name`` - type: *string*, default:\n ``'%(role)s.%(profile)s.%(platform)s.%(vtype)s.%(arch)s.%(version)s'``\n\nThis is a `Python formatting\nstring `__\nto use for generating the AMI name. The string may contain any of the\nvariables:\n\n- ``role``: Name of Ansible role\n- ``profile``: Name of profile used from ``.boss.yml``\n- ``platform``: Name of platform used from ``.boss.yml``\n- ``vtype``: Virtualization type, e.g. ``hvm``\n- ``arch``: Architecture, e.g. ``x86_64``\n- ``version``: Ansible role version, see `Role\n Versions <#role-versions>`__.\n- ``hv``: Hypervisor, e.g. ``xen``\n\nOf course, ``ami_name`` may also be a string used verbatim without any\ninterpolated variables in it.\n\ntest\n^^^^\n\nThe ``test`` section of a platform may include any of the variables from\n``defaults``. They will override any of the definitions given there or\nin the parent platforms.\n\nIn addition, the ``test`` section may have the following key:\n\n- ``playbook`` - type: *string*, default: ``tests/test.yml``\n\nThis is the playbook to run during the test phase. The default value is\nthe same as the test playbook that is created by running\n``ansible-galaxy init`` to create a new Ansible role.\n\nCommands\n--------\n\nThe ``bi`` command must always be run from the root directory of an\nAnsible role, where the ``.boss.yml`` file is located.\n\nbi list\n^^^^^^^\n\nList instances available to be built that are configured in .boss.yml.\nThe status of the instance is shown, which may be either ``Created`` or\n``Not created``.\n\n::\n\n > bi list\n amz-2015092-default Created\n ubuntu-16.10-default Not created\n\nbi make build\n^^^^^^^^^^^^^\n\n::\n\n > bi make build [-v|--verbosity]\n\nThis builds an EC2 instance and runs the Ansible role on it. A unique\nssh keypair is also created and assigned to the instance. This command\nis idempotent and may be run multiple times without creating a new\ninstance each time. Subsequent runs will simply run the Ansible role\nagain on the existing instance.\n\nIf your Ansible role has a ``requirements.yml`` file, then the\n``ansible-galaxy`` command will be used to install the dependencies\nlisted there.\n\nThe ``-v``, or ``--verbosity`` option, gets passed through to Ansible.\nIt may be repeated up to four times to increase Ansible's verbosity.\n\nbi make image\n^^^^^^^^^^^^^\n\n::\n\n > bi make image [--no-wait]\n\nThis builds an AMI from the instance created by running\n``bi make build``. This command will not run unless ``bi make build``\nhas run and written its state to ``.boss/-state.yml``.\n\nBy default this command will complete when the image is available. You\nmay pass the option ``--no-wait`` to this command so that it does not\nwait for the image to be available.\n\nbi make test\n^^^^^^^^^^^^\n\n::\n\n > bi make test [-v|--verbosity]\n\nThis builds an EC2 instance from the AMI created by running\n``bi make image``, then runs the test playbook on it. This command will\nnot run unless ``bi make image`` has run and written its state to\n``.boss/-state.yml``.\n\nAs with ``bi make build``, ``ansible-galaxy`` will be used to install\nany role dependencies used by the test playbook, but ``ansible-galaxy``\nwill look for them in ``tests/requirements.yml``.\n\nThe ``-v``, or ``--verbosity`` option, gets passed through to Ansible.\nIt may be repeated up to four times to increase Ansible's verbosity.\n\nbi clean build\n^^^^^^^^^^^^^^\n\n::\n\n > bi clean build \n\nThis deletes the instance created by ``bi make build``.\n\nbi clean image\n^^^^^^^^^^^^^^\n\n::\n\n > bi clean image \n\nThis deletes the AMI created by ``bi make image``.\n\nbi clean test\n^^^^^^^^^^^^^\n\n::\n\n > bi clean test \n\nThis deletes the instance created by ``bi make build``.\n\nbi login\n^^^^^^^^\n\n::\n\n > bi login \n\nThis command works only on instances where the platform is configured\nfor ssh connections, which is the default. By default this command logs\ninto the ``build`` phase instance, but this may be changed by passing\nthe ``-p|--phase`` argument, which may be either ``build`` or ``test``.\n\n::\n\n > bi login -p test \n\nbi version\n^^^^^^^^^^\n\nThe command outputs the version of Bossimage.\n\nRole Versions\n-------------\n\nAnsible Galaxy does not provide a way to define a role's version in its\nmetadata, it relies on git tags for versioning. So Bossimage does not\nhave anything it can parse to discover the version of a role.\n\nInstead, you can put a file in the root of the repository called\n``.role-version`` which contains the version string. Bossimage also\nsupports defining the version in the environment variable\n``BI_ROLE_VERSION``.\n\nIf neither the ``.role-version`` file or the ``BI_ROLE_VERSION``\nenvironment variable are present, then a default version ``unset`` is\nused.\n\nAuthenticating with AWS\n-----------------------\n\n``bossimage`` uses standard AWS SDK environment variables for\nauthentication, which are described in the `boto3\ndocumentation `__.\n\nThe simplest way to authenticate if you are not running ``bossimage`` on\nan EC2 instance is to configure ``~/.aws/credentials`` with a\n`profile `__\nand pass its name in the environment variable ``AWS_PROFILE``.\n\nIf you are running ``bossimage`` on an EC2 instance, you may assign the\ninstance an `IAM\nrole `__\nupon creation, and then you do not need to pass any credentials. The IAM\nrole should have the policy shown below.\n\n::\n\n {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"ec2:CreateImage\",\n \"ec2:CreateKeyPair\",\n \"ec2:CreateTags\",\n \"ec2:DeleteKeyPair\",\n \"ec2:DeregisterImage\",\n \"ec2:DescribeImages\",\n \"ec2:DescribeInstances\",\n \"ec2:RunInstances\",\n \"ec2:TerminateInstances\"\n ],\n \"Resource\": \"*\"\n }\n ]\n }\n\nRegion\n------\n\nYou must set the AWS region you are running in. To do this, set the\n``AWS_DEFAULT_REGION`` environment variable.\n\nRationale\n=========\n\nAll I want is to spin up an EC2 instance in AWS, run an\n`Ansible `__ role on it,\nbake it into an image, and run some tests to verify the correctness of\nthe image.\n\nComparison with Packer\n~~~~~~~~~~~~~~~~~~~~~~\n\nPacker is a tool for creating VM and Docker images for a multitude of\ncloud providers and for local use.\n\nPacker does more than I need; I only need to create EC2 AMIs. But still\nit doesn't do quite enough: it doesn't provide a development phase for\nrapid iterative development of an Ansible role. You always have to start\nfrom the beginning with a new instance.\n\nBossimage creates EC2 images and provides a development phase before\ncreating an image, and a testing phase for when the image has been\ncreated.\n\nComparison with Test Kitchen\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTest Kitchen is a tool for testing Chef cookbooks, but can be used to\ntest Ansible and other configuration management tools using third party\nplugins. It can create VM instances with Vagrant and various cloud\nproviders to use for developing.\n\nTest Kitchen does more than I need; I only need to test Ansible in EC2.\nBut still it doesn't do quite enough: it doesn't provide an AMI creation\nphase.\n\nBossimage creates EC2 instances and runs Ansible on them, and provides\nimage creation and image testing phases.\n\n.. |Build Status| image:: https://travis-ci.org/cloudboss/bossimage.svg?branch=master\n :target: https://travis-ci.org/cloudboss/bossimage\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://pypi.python.org/pypi/friend", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cloudboss/bossimage", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "bossimage", "package_url": "https://pypi.org/project/bossimage/", "platform": "", "project_url": "https://pypi.org/project/bossimage/", "project_urls": { "Download": "https://pypi.python.org/pypi/friend", "Homepage": "https://github.com/cloudboss/bossimage" }, "release_url": "https://pypi.org/project/bossimage/0.6.3/", "requires_dist": [ "ansible", "boto3", "click", "friend", "pywinrm", "voluptuous" ], "requires_python": "", "summary": "Tool to create AMIs with Ansible", "version": "0.6.3" }, "last_serial": 4294041, "releases": { "0.1.1": [], "0.1.10": [ { "comment_text": "", "digests": { "md5": "4ac7ed0d71563a83c298c652d8cf744e", "sha256": "e7d8310619213ea3176814a07a745428f6013bac1da83a22bc7541da0bb0694d" }, "downloads": -1, "filename": "bossimage-0.1.10.tar.gz", "has_sig": false, "md5_digest": "4ac7ed0d71563a83c298c652d8cf744e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16832, "upload_time": "2016-06-03T05:46:37", "url": "https://files.pythonhosted.org/packages/33/8e/0e0f9a86f7d823897de21e168d3bca1e01c26d4b3b935d36acb4505a3d80/bossimage-0.1.10.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "41e9e6ca8acf9cfc03c33472d95315aa", "sha256": "bc16935c7abc157b75373d5b378f65e9a51dba5d17dd58e50d2ea686040c5c8c" }, "downloads": -1, "filename": "bossimage-0.1.2.tar.gz", "has_sig": false, "md5_digest": "41e9e6ca8acf9cfc03c33472d95315aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11384, "upload_time": "2016-03-20T20:03:32", "url": "https://files.pythonhosted.org/packages/84/6a/cbdac7e216fe8b36bd11d9b438225213555f8409429628594453356e0e6d/bossimage-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "4993dde3d546ebeebd898c005663a776", "sha256": "360c73d1fea419780a0aa97847606ae0194e4ac0c86079b6e64534a82db78759" }, "downloads": -1, "filename": "bossimage-0.1.4.tar.gz", "has_sig": false, "md5_digest": "4993dde3d546ebeebd898c005663a776", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12936, "upload_time": "2016-03-22T02:19:04", "url": "https://files.pythonhosted.org/packages/9c/3c/757447053d3acadfd36d5b53f0b63b9889ec8ec83d4041393c7c5a0c6e54/bossimage-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "110985e226d602f01d45fce09bd6b516", "sha256": "559c3936b279115f74ceff123097b1eb8b74a96154260aa5e87bae248db597a1" }, "downloads": -1, "filename": "bossimage-0.1.5.tar.gz", "has_sig": false, "md5_digest": "110985e226d602f01d45fce09bd6b516", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15048, "upload_time": "2016-03-23T06:52:39", "url": "https://files.pythonhosted.org/packages/fc/98/5d2bfd3423e28fdf2ec5276a3b20de0c753f413d6517bae097fc57044630/bossimage-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "d1438ed11df5d17b2877e6b33bd91928", "sha256": "a852c1436b9b4dba182fb96798d29ae7f6c49cf1892d83b70d6037ab04cb2e93" }, "downloads": -1, "filename": "bossimage-0.1.6.tar.gz", "has_sig": false, "md5_digest": "d1438ed11df5d17b2877e6b33bd91928", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15739, "upload_time": "2016-03-24T07:06:40", "url": "https://files.pythonhosted.org/packages/df/fc/6165ebdd5c5ffc6dcf42f3f2e69acdee89a4592997bb77aca61a154a16d4/bossimage-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "794d21d67250fb52b85199a97a6a4a05", "sha256": "01b774cf0d2553fce1a12e0612d040b637b257e75808001797c916260bdc3889" }, "downloads": -1, "filename": "bossimage-0.1.7.tar.gz", "has_sig": false, "md5_digest": "794d21d67250fb52b85199a97a6a4a05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16100, "upload_time": "2016-03-30T06:22:18", "url": "https://files.pythonhosted.org/packages/a4/ce/5fd1bef39621610a56d22ab6e6f88f1a8e399600795483d1fd81e37e501f/bossimage-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "3d1049c1a615c67935a557cc66428191", "sha256": "afc605afdda755b3a67234e03f97e81130d1daeaab4cb7e6b2dd67193728bc73" }, "downloads": -1, "filename": "bossimage-0.1.8.tar.gz", "has_sig": false, "md5_digest": "3d1049c1a615c67935a557cc66428191", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16682, "upload_time": "2016-05-25T07:48:54", "url": "https://files.pythonhosted.org/packages/54/3f/32b2e21b162de9f43d2c0157f45ecacaefdd73752bcc36c60d3a992642e7/bossimage-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "e0e2b830f6789689677e0f2f9f80acd9", "sha256": "10db03170ee24028f5ad265955d4341e9e9258bd8929e3d890ea3be54971333c" }, "downloads": -1, "filename": "bossimage-0.1.9.tar.gz", "has_sig": false, "md5_digest": "e0e2b830f6789689677e0f2f9f80acd9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16677, "upload_time": "2016-05-25T23:11:44", "url": "https://files.pythonhosted.org/packages/c4/e9/0768397d0611b200e663cee1c3a13e8b9f9d2db9550f21cfcb9aa8d08ff2/bossimage-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "afbd6d101d52ab6150331c32d041c8cc", "sha256": "16dc869ee85fbc6262ffacfc3cbc57c19f840dafe85478ba40a144c3eccd94fd" }, "downloads": -1, "filename": "bossimage-0.2.0.tar.gz", "has_sig": false, "md5_digest": "afbd6d101d52ab6150331c32d041c8cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17457, "upload_time": "2016-06-18T18:51:14", "url": "https://files.pythonhosted.org/packages/d2/3d/51ee6096abf3b2959f9581d7e7c5a9d7179b8463d05b2d6de141efcb46da/bossimage-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "94364f1b60f82fcc0639576a81e24ef1", "sha256": "1fc5e785d55b5de09148c0fdece69d83ac36fa53a87a2f9b53e18ead91059fd1" }, "downloads": -1, "filename": "bossimage-0.2.1.tar.gz", "has_sig": false, "md5_digest": "94364f1b60f82fcc0639576a81e24ef1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17464, "upload_time": "2016-06-24T07:01:56", "url": "https://files.pythonhosted.org/packages/8d/12/022e017c20dca0172a495fe2602d7771eea83a81ddd5c70a7e0ccbe96389/bossimage-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "35729e8ef4fb1e0ad7a10b0e55e729f7", "sha256": "446a81118d1edb1cd3c2bc4f097eb66491cda36b49f10a261409bf62e61a52aa" }, "downloads": -1, "filename": "bossimage-0.3.0.tar.gz", "has_sig": false, "md5_digest": "35729e8ef4fb1e0ad7a10b0e55e729f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18096, "upload_time": "2016-07-23T06:45:20", "url": "https://files.pythonhosted.org/packages/07/59/f1df2b35eb5e1f2c66eb1c0d0deae09ac489091f51091623ecedc4574fd3/bossimage-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "c6b85275e3af2cf20d7a4aa02ffc0e4f", "sha256": "5bc698a3bca59af5dd86e4b433bf70a6f5e7a3e8dcf667d144f4115cd6473730" }, "downloads": -1, "filename": "bossimage-0.4.0.tar.gz", "has_sig": false, "md5_digest": "c6b85275e3af2cf20d7a4aa02ffc0e4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23752, "upload_time": "2017-01-08T21:59:01", "url": "https://files.pythonhosted.org/packages/f1/15/b40f6c1ed79f64fa799711242634f261d407b2cdf987ab1ae608756fd875/bossimage-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "073295a29b49c163525e25ce5ae6880b", "sha256": "d45a1f4d6f9cb29131a55a41ea705476efe182802ccc1e9cd60872b4a2fb2ecc" }, "downloads": -1, "filename": "bossimage-0.4.1.tar.gz", "has_sig": false, "md5_digest": "073295a29b49c163525e25ce5ae6880b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24056, "upload_time": "2017-01-10T08:16:54", "url": "https://files.pythonhosted.org/packages/fe/dc/0c9648de5fd2a24c2c368a63e8038c9ba7944608d6b29a936de2229e52b2/bossimage-0.4.1.tar.gz" } ], "0.4.10": [ { "comment_text": "", "digests": { "md5": "501cb6d24c06eacfd372a924f45866f2", "sha256": "929f21737830e2b6733df310726e7367a3cc75450366428031a670a1a7198c56" }, "downloads": -1, "filename": "bossimage-0.4.10.tar.gz", "has_sig": false, "md5_digest": "501cb6d24c06eacfd372a924f45866f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25051, "upload_time": "2017-06-11T16:22:05", "url": "https://files.pythonhosted.org/packages/b0/43/3143df4a11096c4f3688a5a84998b1868197bfd0786e72acfe2533f33c96/bossimage-0.4.10.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "310be2cab9d63e1e4f771d7282e7f857", "sha256": "6ea7b56b4e05071bb92e08bb2bf9c4954ab337454f4aeb04d12d8af8952334b8" }, "downloads": -1, "filename": "bossimage-0.4.2.tar.gz", "has_sig": false, "md5_digest": "310be2cab9d63e1e4f771d7282e7f857", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24052, "upload_time": "2017-01-10T18:34:43", "url": "https://files.pythonhosted.org/packages/94/40/8064aa418efca6ebbbf45b5ef214b10edcee9d547f141e0afde01882584e/bossimage-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "3acefc3983f2c1166768163142038984", "sha256": "52ae90aba3b18f28a9d201a6417fb917148eae2d12b88700a69f89e8d0e87e2b" }, "downloads": -1, "filename": "bossimage-0.4.3.tar.gz", "has_sig": false, "md5_digest": "3acefc3983f2c1166768163142038984", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24064, "upload_time": "2017-01-10T19:04:48", "url": "https://files.pythonhosted.org/packages/8c/03/a05ea8bc2921e6153cd8dc4aa9462db2326d0ee63406ecd87b3d4d24906e/bossimage-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "89132db3250dd01246eadaaabf583262", "sha256": "689606bbb25c324630fc7e9a01f3b358fa5b8ee73f2b2a6047e1408bb4f859b2" }, "downloads": -1, "filename": "bossimage-0.4.4.tar.gz", "has_sig": false, "md5_digest": "89132db3250dd01246eadaaabf583262", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24059, "upload_time": "2017-01-10T20:03:33", "url": "https://files.pythonhosted.org/packages/43/f6/63b842a0ac371d933aab1fe80cd9937c92a823264bd757e580e90f08a315/bossimage-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "7e520045f2d3f4afe4b582ff852c1534", "sha256": "e1e2e8af56d6f040e8ad59482fe5b2256c5b65ca4fa6cf770873529e277db00d" }, "downloads": -1, "filename": "bossimage-0.4.5.tar.gz", "has_sig": false, "md5_digest": "7e520045f2d3f4afe4b582ff852c1534", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24055, "upload_time": "2017-01-12T23:16:21", "url": "https://files.pythonhosted.org/packages/fc/f5/fcc29549d233f1716e5c250b0a6da21d32026e127c6d86befbb0e8b8794b/bossimage-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "93373dc60257d16e23fda6f8d7e8d791", "sha256": "1902bc6275af3d1cb5b5f0751b18fc8d231ea7cc86c2253354f1ff55ec449010" }, "downloads": -1, "filename": "bossimage-0.4.6.tar.gz", "has_sig": false, "md5_digest": "93373dc60257d16e23fda6f8d7e8d791", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24844, "upload_time": "2017-01-27T08:35:20", "url": "https://files.pythonhosted.org/packages/24/85/66bede34528730c07070769ea21ca66130b6df0e973433b31f0397d58286/bossimage-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "572b5bc15b46b6dd7b9eb5e3a4b2798e", "sha256": "a545d2ec3cb3fdf15f100188c0100db53d0485c3178966b2ba5e44be3504c209" }, "downloads": -1, "filename": "bossimage-0.4.7.tar.gz", "has_sig": false, "md5_digest": "572b5bc15b46b6dd7b9eb5e3a4b2798e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24845, "upload_time": "2017-02-01T19:37:06", "url": "https://files.pythonhosted.org/packages/45/8a/4946e7f3b9bd6115907ff25d909ce984bd0a534438500d4a17b9ebf6a2f8/bossimage-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "6500a5f5c8fd733ffd0a0ce351a3d3b7", "sha256": "ed10b964520b3f53e9d4bb6f12a60db04da269513b945e982488f581445df5af" }, "downloads": -1, "filename": "bossimage-0.4.8.tar.gz", "has_sig": false, "md5_digest": "6500a5f5c8fd733ffd0a0ce351a3d3b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25006, "upload_time": "2017-05-10T14:52:07", "url": "https://files.pythonhosted.org/packages/53/cd/3dafa50d9a01ee651a93a59f1a91aaa37e95fd1ea6862ac7a1cf9f1e61ef/bossimage-0.4.8.tar.gz" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "c0a84f5b5ba45364e8105ffc2300eb6a", "sha256": "400a5632adc70416ae594239ca02ca8415bf605fdcb3be131c99289294d5d425" }, "downloads": -1, "filename": "bossimage-0.4.9.tar.gz", "has_sig": false, "md5_digest": "c0a84f5b5ba45364e8105ffc2300eb6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25032, "upload_time": "2017-06-02T17:53:56", "url": "https://files.pythonhosted.org/packages/9b/d4/b931e6c78a2d32b08a4cc7b0388ecc3242eee071af5a424e700629c22646/bossimage-0.4.9.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "5c310cf5b72178c3086a3f8c94fda056", "sha256": "b302b18025721ef8f72f60d3c744caaeb16f79a85f8edee65869168e2b62fcd9" }, "downloads": -1, "filename": "bossimage-0.5.0-py2-none-any.whl", "has_sig": false, "md5_digest": "5c310cf5b72178c3086a3f8c94fda056", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 26115, "upload_time": "2017-09-02T17:55:22", "url": "https://files.pythonhosted.org/packages/32/9b/0610d7f70be7f40a7ed49637fea4866e8821f2147a1bbc6280774809d542/bossimage-0.5.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9af3aea1e3ff1a7b136fe79d39697245", "sha256": "8f6c5c49b044225d0c03f2cb789ff1c614349b0c2077d5ac156ec62178756183" }, "downloads": -1, "filename": "bossimage-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9af3aea1e3ff1a7b136fe79d39697245", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34952, "upload_time": "2017-09-02T17:55:23", "url": "https://files.pythonhosted.org/packages/d8/b7/efb195e96d5b425f8a5db93137a2fdfeae95a567b67153918da222c2dd4b/bossimage-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "1292891cbf1a38014a2410444c5d5108", "sha256": "fd78af19bb69b71ee479b722a21b96bbabb91d67011cda17b6f459c47f58564f" }, "downloads": -1, "filename": "bossimage-0.5.1-py2-none-any.whl", "has_sig": false, "md5_digest": "1292891cbf1a38014a2410444c5d5108", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 25800, "upload_time": "2017-09-29T02:54:34", "url": "https://files.pythonhosted.org/packages/86/a9/1a8c669213ea543018e7c84d7c25cd3e8d38dc402f14b678394855449acf/bossimage-0.5.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7edb4a421899c70ede4a9e6720b3ec21", "sha256": "f5507ad6a4d9bfebea33e55027ad8da8050aefaeec8e6f4e1dd34e6f8c4a1b05" }, "downloads": -1, "filename": "bossimage-0.5.1.tar.gz", "has_sig": false, "md5_digest": "7edb4a421899c70ede4a9e6720b3ec21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34694, "upload_time": "2017-09-29T02:54:35", "url": "https://files.pythonhosted.org/packages/bd/16/ea7794cff62f74fc1878cbc9238698a907d6e64accde094bfed9d4871f50/bossimage-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "2bb991091e14c83d64bc88d4ae08eee3", "sha256": "cbb6423e4225373e5a896a3dbbfdcc2bc0829e085f737476add188d75f5d1796" }, "downloads": -1, "filename": "bossimage-0.6.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2bb991091e14c83d64bc88d4ae08eee3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18109, "upload_time": "2018-08-20T03:48:44", "url": "https://files.pythonhosted.org/packages/99/0c/265f2ffa07348d40491f959b6c6590cb7a4d24f5ed94c6ef251bcbd5d53b/bossimage-0.6.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7546c6a27c37e371d39766dc2c12fb98", "sha256": "2748fb337b6efaaaae6ecdb4e12360e6df797629dd95e5bfaf1606fc24567776" }, "downloads": -1, "filename": "bossimage-0.6.0.tar.gz", "has_sig": false, "md5_digest": "7546c6a27c37e371d39766dc2c12fb98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36665, "upload_time": "2018-08-20T03:48:45", "url": "https://files.pythonhosted.org/packages/d2/c2/39ed4b656bdc2ef6665f4b473801a39ec01a7687d7fa2780e7d1e85f4d01/bossimage-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "d814de1363a245f26d959344e9228f00", "sha256": "5f9a1957e5cdf71783ce0e9c98ab46decb163121eb6c728afcf83eee9c76a17e" }, "downloads": -1, "filename": "bossimage-0.6.1-py2-none-any.whl", "has_sig": false, "md5_digest": "d814de1363a245f26d959344e9228f00", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18229, "upload_time": "2018-08-23T04:38:38", "url": "https://files.pythonhosted.org/packages/7b/1b/81e20d5e8c2c05968f32fcc4c27c54c41d7f79c28ca35d6ee7621b8597ed/bossimage-0.6.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e6bf627ca34635582472d442327b69fb", "sha256": "4be38c41c4fde2780cfe3eb275cdc89b3311c4f2dd27deaa671c9154815b1f6d" }, "downloads": -1, "filename": "bossimage-0.6.1.tar.gz", "has_sig": false, "md5_digest": "e6bf627ca34635582472d442327b69fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37203, "upload_time": "2018-08-23T04:38:39", "url": "https://files.pythonhosted.org/packages/f0/db/5aa81421d64fc4b19bed7fdf4cc6a7867669b7ef09fdd22a5276c969b253/bossimage-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "fecc071543a7412d1cc327787bf28972", "sha256": "e5c7b16b176dbb8b6ac71ad354abcf3cf929ad2e5f7f6081bee90913cf48c43f" }, "downloads": -1, "filename": "bossimage-0.6.2-py2-none-any.whl", "has_sig": false, "md5_digest": "fecc071543a7412d1cc327787bf28972", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18243, "upload_time": "2018-09-04T03:45:57", "url": "https://files.pythonhosted.org/packages/d4/11/c97a820cfc072a23a5cd86e10f2a7614e53acbced5e69a34d5e17c670af5/bossimage-0.6.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc7eeca13a36611766e856dbe06b8535", "sha256": "efe5dd2f0e005e3dfc3a00166405fff75f47ccb049795905ccf9b4d73a409e49" }, "downloads": -1, "filename": "bossimage-0.6.2.tar.gz", "has_sig": false, "md5_digest": "fc7eeca13a36611766e856dbe06b8535", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37220, "upload_time": "2018-09-04T03:45:59", "url": "https://files.pythonhosted.org/packages/9a/ed/d996f65c4198739ffcf267e0317ed822789041086de2ea4aa904de4f1971/bossimage-0.6.2.tar.gz" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "90987df6b0fa9a766a6768b6846fbd33", "sha256": "2f20ec0e4ac39fd9e6a757f4fbdee4858ff63717ed151b6744c0a470505a76c9" }, "downloads": -1, "filename": "bossimage-0.6.3-py2-none-any.whl", "has_sig": false, "md5_digest": "90987df6b0fa9a766a6768b6846fbd33", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18270, "upload_time": "2018-09-20T19:58:29", "url": "https://files.pythonhosted.org/packages/a9/47/db0fb343e65ef3c93434c500cc0387747c55b943a219d1e3abdaedb8957e/bossimage-0.6.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe05b0ac2d9d2a57c340e49b80a443c4", "sha256": "c6a1619b9695bd8b28866c1fb99db857e242eebbcd7fc52835adf142fb2ea78e" }, "downloads": -1, "filename": "bossimage-0.6.3.tar.gz", "has_sig": false, "md5_digest": "fe05b0ac2d9d2a57c340e49b80a443c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37309, "upload_time": "2018-09-20T19:58:30", "url": "https://files.pythonhosted.org/packages/bf/88/6c30ee7e955a297f01c86a8274f6f1b857ff11f04e338bf4f46ce2282348/bossimage-0.6.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "90987df6b0fa9a766a6768b6846fbd33", "sha256": "2f20ec0e4ac39fd9e6a757f4fbdee4858ff63717ed151b6744c0a470505a76c9" }, "downloads": -1, "filename": "bossimage-0.6.3-py2-none-any.whl", "has_sig": false, "md5_digest": "90987df6b0fa9a766a6768b6846fbd33", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18270, "upload_time": "2018-09-20T19:58:29", "url": "https://files.pythonhosted.org/packages/a9/47/db0fb343e65ef3c93434c500cc0387747c55b943a219d1e3abdaedb8957e/bossimage-0.6.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe05b0ac2d9d2a57c340e49b80a443c4", "sha256": "c6a1619b9695bd8b28866c1fb99db857e242eebbcd7fc52835adf142fb2ea78e" }, "downloads": -1, "filename": "bossimage-0.6.3.tar.gz", "has_sig": false, "md5_digest": "fe05b0ac2d9d2a57c340e49b80a443c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37309, "upload_time": "2018-09-20T19:58:30", "url": "https://files.pythonhosted.org/packages/bf/88/6c30ee7e955a297f01c86a8274f6f1b857ff11f04e338bf4f46ce2282348/bossimage-0.6.3.tar.gz" } ] }