{ "info": { "author": "BaseCRM developers", "author_email": "developers@getbase.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "basecrm-python\n==============\n\nBaseCRM Official API V2 library client for Python\n\nInstallation\n------------\n\nBaseCRM package can be installed either via pip or easy\\_install:\n\n.. code:: bash\n\n $ pip install --upgrade basecrm\n\nor\n\n.. code:: bash\n\n $ easy_install --upgrade basecrm\n\nYou can install from the source code as well. First clone the repo and\nthen execute:\n\n.. code:: bash\n\n $ python setup.py install\n\nAfter installing, import ``basecrm`` package:\n\n.. code:: python\n\n import basecrm\n\nUsage\n-----\n\n.. code:: python\n\n import basecrm\n\n # Then we instantiate a client (as shown below)\n\nBuild a client\n~~~~~~~~~~~~~~\n\n**Using this api without authentication gives an error**\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n\nClient Options\n~~~~~~~~~~~~~~\n\nThe following options are available while instantiating a client:\n\n- **access\\_token**: Personal access token\n- **base\\_url**: Base url for the api\n- **user\\_agent**: Default user-agent for all requests\n- **timeout**: Request timeout\n- **verbose**: Verbose/debug mode\n\nArchitecture\n~~~~~~~~~~~~\n\nThe library follows few architectural principles you should understand\nbefore digging deeper. 1. Interactions with resources are done via\nservice objects. 2. Service objects are exposed as properties on client\ninstances. 3. Service objects expose resource-oriented actions. 4.\nActions return dictionaries that support attribute-style access, a la\nJavaScript (thanks to Bunch and it's form Munch).\n\nFor example, to interact with deals API you will use\n``basecrm.DealsService``, which you can get if you call:\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.deals # basecrm.DealsService\n\nTo retrieve list of resources and use filtering you will call ``#list``\nmethod:\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.deals.list(organization_id=google.id, hot=True) # list(dict|Munch)\n\nTo find custom field by name and its value pass kwargs as an argument:\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.deals.list(**{'custom_fields[name]': 1})\n\nTo find a resource by its unique identifier use ``#retrieve`` method:\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.deals.retrieve(id=google.id)\n\nWhen you'd like to create a resource, or update it's attributes you want\nto use either ``#create`` or ``#update`` methods. For example if you\nwant to create a new deal you will call:\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n deal = client.deals.create(name='Website redesign', contact_id=coffeeshop.id)\n\n deal.value = Decimal(\"1000.99\")\n deal.currency = 'USD'\n\n client.deals.update(deal.id, deal)\n\nTo destroy a resource use ``#destroy`` method:\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.deals.destroy(coffeshopdeal.id)\n\nThere other non-CRUD operations supported as well. Please contact\ncorresponding service files for in-depth documentation.\n\nFull example\n~~~~~~~~~~~~\n\nCreate a new organization and after that change it's attributes\n(website).\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n lead = client.leads.create(organization_name='Design service company')\n\n lead.website = 'http://www.designservices.com'\n client.leads.update(lead.id, lead)\n\nPagination\n~~~~~~~~~~\n\nYou can control the maximum number of records that are returned using the standard per_page query parameter.\nTo choose a page, use the standard page query parameter.\nThe default page is always the first one. The default limit is 25 and maximum number that can be returned is 100.\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n leads = client.leads.list(per_page=50, page=2)\n\nError handling\n~~~~~~~~~~~~~~\n\nWhen you instantiate a client or make any request via service objects,\nexceptions can be raised for multiple of reasons e.g. a network error,\nan authentication error, an invalid param error etc.\n\nSample below shows how to properly handle exceptions:\n\n.. code:: python\n\n try:\n # Instantiate a client.\n client = basecrm.Client(access_token='')\n lead = client.leads.create(organization_name='Design service company')\n print lead\n except basecrm.ConfigurationError as e:\n # Invalid client configuration option\n pass\n except basecrm.ResourceError as e:\n # Resource related error\n print 'Http status = ' + e.http_status\n print 'Request ID = ' + e.logref\n for error in e.errors:\n print 'field = ' + error.field\n print 'code = ' + error.code\n print 'message = ' + error.message\n print 'details = ' + error.details\n except basecrm.RequestError as e:\n # Invalid query parameters, authentication error etc.\n pass\n except Exception as e:\n # Other kind of exceptioni, probably connectivity related\n pass\n\nSync API\n---------------------\n\nThe following sample code shows how to perform a full synchronization flow using high-level wrapper.\n\nFirst of all you need an instance of ``basecrm.Client``. High-level ``basecrm.Sync`` wrapper uses ``basecrm.SyncService`` to interact with the Sync API.\nIn addition to the client instance, you must provide a device\u2019s UUID within ``device_uuid`` parameter. The device\u2019s UUID must not change between synchronization sessions, otherwise the sync service will not recognize the device and will send all the data again.\n\n.. code:: python\n\n client = basecrmClient(access_token='')\n sync = basecrm.Sync(client=client, device_uuid='')\n client.accounts # => basecrm.AccountsService\n\nActions:\n\n* Retrieve account details - ``client.accounts.self``\n\nAssociatedContact\n~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.associated_contacts # => basecrm.AssociatedContactsService\n\nActions:\n\n* Retrieve deal's associated contacts - ``client.associated_contacts.list``\n* Create an associated contact - ``client.associated_contacts.create``\n* Remove an associated contact - ``client.associated_contacts.destroy``\n\nContact\n~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.contacts # => basecrm.ContactsService\n\nActions:\n\n* Retrieve all contacts - ``client.contacts.list``\n* Create a contact - ``client.contacts.create``\n* Retrieve a single contact - ``client.contacts.retrieve``\n* Update a contact - ``client.contacts.update``\n* Delete a contact - ``client.contacts.destroy``\n\nDeal\n~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.deals # => basecrm.DealsService\n\nActions:\n\n* Retrieve all deals - ``client.deals.list``\n* Create a deal - ``client.deals.create``\n* Retrieve a single deal - ``client.deals.retrieve``\n* Update a deal - ``client.deals.update``\n* Delete a deal - ``client.deals.destroy``\n\n**A note about deal value**\n\nIt is prefered to use decimal from string or directly string for deal values when creating or modifying a deal. This guarantees correct precision\n\n.. code:: python\n\n deal.value = Decimal(\"1000.99\")\n deal.value = \"1000.00\"\n\nYou should not be using floats or decimal constructed from floats as it may result in precision loss.\n\n.. code:: python\n\n deal.value = 1000.99\n deal.value = decimal(1000.99)\n\nDealSource\n~~~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.deal_sources # => basecrm.DealSourcesService\n\nActions:\n\n* Retrieve all sources - ``client.deal_sources.list``\n* Create a new source - ``client.deal_sources.create``\n* Retrieve a single source - ``client.deal_sources.retrieve``\n* Update a source - ``client.deal_sources.update``\n* Delete a source - ``client.deal_sources.destroy``\n\nDealUnqualifiedReason\n~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.deal_unqualified_reasons # => basecrm.DealUnqualifiedReasonsService\n\nActions:\n\n* Retrieve all deal unqualified reasons - ``client.deal_unqualified_reasons.list``\n* Create a deal unqualified reason - ``client.deal_unqualified_reasons.create``\n* Retrieve a single deal unqualified reason - ``client.deal_unqualified_reasons.retrieve``\n* Update a deal unqualified reason - ``client.deal_unqualified_reasons.update``\n* Delete a deal unqualified reason - ``client.deal_unqualified_reasons.destroy``\n\nLead\n~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.leads # => basecrm.LeadsService\n\nActions:\n\n* Retrieve all leads - ``client.leads.list``\n* Create a lead - ``client.leads.create``\n* Retrieve a single lead - ``client.leads.retrieve``\n* Update a lead - ``client.leads.update``\n* Delete a lead - ``client.leads.destroy``\n\nLeadSource\n~~~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.lead_sources # => basecrm.LeadSourcesService\n\nActions:\n\n* Retrieve all sources - ``client.lead_sources.list``\n* Create a new source - ``client.lead_sources.create``\n* Retrieve a single source - ``client.lead_sources.retrieve``\n* Update a source - ``client.lead_sources.update``\n* Delete a source - ``client.lead_sources.destroy``\n\nLeadUnqualifiedReason\n~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.lead_unqualified_reasons # => basecrm.LeadUnqualifiedReasonsService\n\nActions:\n\n* Retrieve all lead unqualified reasons - ``client.lead_unqualified_reasons.list``\n\nLineItem\n~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.line_items # => basecrm.LineItemsService\n\nActions:\n\n* Retrieve order's line items - ``client.line_items.list``\n* Create a line item - ``client.line_items.create``\n* Retrieve a single line item - ``client.line_items.retrieve``\n* Delete a line item - ``client.line_items.destroy``\n\nLossReason\n~~~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.loss_reasons # => basecrm.LossReasonsService\n\nActions:\n\n* Retrieve all reasons - ``client.loss_reasons.list``\n* Create a loss reason - ``client.loss_reasons.create``\n* Retrieve a single reason - ``client.loss_reasons.retrieve``\n* Update a loss reason - ``client.loss_reasons.update``\n* Delete a reason - ``client.loss_reasons.destroy``\n\nNote\n~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.notes # => basecrm.NotesService\n\nActions:\n\n* Retrieve all notes - ``client.notes.list``\n* Create a note - ``client.notes.create``\n* Retrieve a single note - ``client.notes.retrieve``\n* Update a note - ``client.notes.update``\n* Delete a note - ``client.notes.destroy``\n\nOrder\n~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.orders # => basecrm.OrdersService\n\nActions:\n\n* Retrieve all orders - ``client.orders.list``\n* Create an order - ``client.orders.create``\n* Retrieve a single order - ``client.orders.retrieve``\n* Update an order - ``client.orders.update``\n* Delete an order - ``client.orders.destroy``\n\nPipeline\n~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.pipelines # => basecrm.PipelinesService\n\nActions:\n\n* Retrieve all pipelines - ``client.pipelines.list``\n\nProduct\n~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.products # => basecrm.ProductsService\n\nActions:\n\n* Retrieve all products - ``client.products.list``\n* Create a product - ``client.products.create``\n* Retrieve a single product - ``client.products.retrieve``\n* Update a product - ``client.products.update``\n* Delete a product - ``client.products.destroy``\n\nSource (deprecated, use DealSource, LeadSource instead)\n~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.sources # => basecrm.SourcesService\n\nActions:\n\n* Retrieve all sources - ``client.sources.list``\n* Create a source - ``client.sources.create``\n* Retrieve a single source - ``client.sources.retrieve``\n* Update a source - ``client.sources.update``\n* Delete a source - ``client.sources.destroy``\n\nStage\n~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.stages # => basecrm.StagesService\n\nActions:\n\n* Retrieve all stages - ``client.stages.list``\n\nTag\n~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.tags # => basecrm.TagsService\n\nActions:\n\n* Retrieve all tags - ``client.tags.list``\n* Create a tag - ``client.tags.create``\n* Retrieve a single tag - ``client.tags.retrieve``\n* Update a tag - ``client.tags.update``\n* Delete a tag - ``client.tags.destroy``\n\nTask\n~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.tasks # => basecrm.TasksService\n\nActions:\n\n* Retrieve all tasks - ``client.tasks.list``\n* Create a task - ``client.tasks.create``\n* Retrieve a single task - ``client.tasks.retrieve``\n* Update a task - ``client.tasks.update``\n* Delete a task - ``client.tasks.destroy``\n\nTextMessage\n~~~~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.text_messages # => basecrm.TextMessagesService\n\nActions:\n\n* Retrieve text messages - ``client.text_messages.list``\n* Retrieve a single text message - ``client.text_messages.retrieve``\n\nUser\n~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.users # => basecrm.UsersService\n\nActions:\n\n* Retrieve all users - ``client.users.list``\n* Retrieve a single user - ``client.users.retrieve``\n* Retrieve an authenticating user - ``client.users.self``\n\nVisit\n~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.visits # => basecrm.VisitsService\n\nActions:\n\n* Retrieve visits - ``client.visits.list``\n\nVisitOutcome\n~~~~~~~~~~~~\n\n.. code:: python\n\n client = basecrm.Client(access_token='')\n client.visit_outcomes # => basecrm.VisitOutcomesService\n\nActions:\n\n* Retrieve visit outcomes - ``client.visit_outcomes.list``\n\n\nTests\n-----\n\nTo run all test suites:\n\n.. code:: bash\n\n $ python setup.py test\n\nAnd to run a single suite:\n\n.. code:: bash\n\n $ python setup.py test -s basecrm.test.test_associated_contacts_service.AssociatedContactsServiceTests\n\nThanks\n------\n\nWe would like to give huge thanks to\n`YunoJuno `__. They reqlinquished the package\nname so we were able to publish official wrapper under **basecrm** name.\n\nThank You!\n\nLicense\n-------\n\nMIT\n\nBug Reports\n-----------\n\nReport `here `__.\n\nContact\n-------\n\nBaseCRM developers (developers@getbase.com)", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/basecrm/basecrm-python", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "basecrm", "package_url": "https://pypi.org/project/basecrm/", "platform": "", "project_url": "https://pypi.org/project/basecrm/", "project_urls": { "Homepage": "https://github.com/basecrm/basecrm-python" }, "release_url": "https://pypi.org/project/basecrm/1.2.7/", "requires_dist": null, "requires_python": "", "summary": "BaseCRM Official API V2 library client for Python", "version": "1.2.7" }, "last_serial": 4355483, "releases": { "1.0.0": [], "1.0.1": [ { "comment_text": "", "digests": { "md5": "7d0298ebbfbbd47d4b690df98638f80b", "sha256": "e9102d2c90e94cc31a31326b627bb67c8e78553c41c86b9682f0e452da931398" }, "downloads": -1, "filename": "basecrm-1.0.1.tar.gz", "has_sig": false, "md5_digest": "7d0298ebbfbbd47d4b690df98638f80b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16524, "upload_time": "2015-04-25T20:58:54", "url": "https://files.pythonhosted.org/packages/fe/10/eb55d27bc2ad6080f6e2d3cfde9016f8cb2b0f2a845dee1235792e0db0bd/basecrm-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "ff416ea46efaa8814a59b7c98765ef1b", "sha256": "ecc3142dae3a8a33ce520ca3490b6dec9015ffb55ecee6dd984f492e8259f8cb" }, "downloads": -1, "filename": "basecrm-1.0.2.tar.gz", "has_sig": false, "md5_digest": "ff416ea46efaa8814a59b7c98765ef1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16543, "upload_time": "2015-04-30T17:30:36", "url": "https://files.pythonhosted.org/packages/13/54/e2bc2d42c21e49a10ce2f3f4bd1a2684c8ac07937c87ccd901fd6f25c86e/basecrm-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "dffad0aef549873cbe4b4caab56c9c15", "sha256": "46cc923989e915c8d732aada339ca2de298422fbb38b4a59c00096d1e2e63e74" }, "downloads": -1, "filename": "basecrm-1.0.3.tar.gz", "has_sig": false, "md5_digest": "dffad0aef549873cbe4b4caab56c9c15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16600, "upload_time": "2015-05-01T16:00:30", "url": "https://files.pythonhosted.org/packages/76/a8/fca976b8ae266d0835049fcd40c2ed4aab59b66610a393b890a8a36cfc4a/basecrm-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "e595b9f79f5fb28edd7078a102e4016c", "sha256": "5fc6fae1cc093dd8189eaa56d035a3ca4496995136b44878f5fa58eb9b5f8a4d" }, "downloads": -1, "filename": "basecrm-1.1.0.tar.gz", "has_sig": false, "md5_digest": "e595b9f79f5fb28edd7078a102e4016c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20615, "upload_time": "2015-06-01T20:53:14", "url": "https://files.pythonhosted.org/packages/28/60/06e7e35fdb60bc221d96fb798eea684687af0364d154c7da766a0368bf2d/basecrm-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "db48b702b6eacb8a19bc5c6f46abde95", "sha256": "08a634bedfbc0b22cba05e55d1e87d05f65fb914a98cef19ced63ca174bf80d4" }, "downloads": -1, "filename": "basecrm-1.1.1.tar.gz", "has_sig": false, "md5_digest": "db48b702b6eacb8a19bc5c6f46abde95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20670, "upload_time": "2016-03-10T11:27:28", "url": "https://files.pythonhosted.org/packages/1d/4d/6e200860d1ca64a0a3a041cc13f8f2525786a8d7fb5d8c0eaeca9e45e09c/basecrm-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "cadee387d763bfd01842d537ea44045e", "sha256": "58e24ca75c2a32905855729e6b53d1abdc5f5f55a196f79b2d60068cbc0119a4" }, "downloads": -1, "filename": "basecrm-1.2.0.tar.gz", "has_sig": false, "md5_digest": "cadee387d763bfd01842d537ea44045e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21540, "upload_time": "2016-06-28T14:05:49", "url": "https://files.pythonhosted.org/packages/a9/86/e10bd4657d388b7fbf7b7f570cdcbe24bc59867449261b24979bdf8c9522/basecrm-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "a3af4cd1645ad29e1a0ae00958c6ac86", "sha256": "8810a384c2748d1b64e0db858ca3eea433d8746944f670be0a24062203a5c840" }, "downloads": -1, "filename": "basecrm-1.2.1.tar.gz", "has_sig": false, "md5_digest": "a3af4cd1645ad29e1a0ae00958c6ac86", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21549, "upload_time": "2016-11-02T10:32:15", "url": "https://files.pythonhosted.org/packages/33/e7/7622e9e9bfe4ff3454da81fb704028908fb75e1148e3dca43476b0352d19/basecrm-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "009dfaab1d43b7b63a8b96e6c72e2b2d", "sha256": "142c93ede4a651001ac079265df24f90fb4272a1044a5bfeb0eef1516c157fd4" }, "downloads": -1, "filename": "basecrm-1.2.2.tar.gz", "has_sig": false, "md5_digest": "009dfaab1d43b7b63a8b96e6c72e2b2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21613, "upload_time": "2016-11-28T10:55:01", "url": "https://files.pythonhosted.org/packages/99/7f/674e8ee2d4191005b31170c7cd7e4baa5e5b3613c299a97cac8f0a5922a2/basecrm-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "a979324eea940e776f93a8f4ae17576b", "sha256": "ecb7ccc1e48fee546b08f821c3cc22cb8eec58141703fc8349f6ee16be38347d" }, "downloads": -1, "filename": "basecrm-1.2.3.tar.gz", "has_sig": false, "md5_digest": "a979324eea940e776f93a8f4ae17576b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21614, "upload_time": "2017-06-12T07:51:49", "url": "https://files.pythonhosted.org/packages/aa/b3/8bdb4f535454231d6e200d6af206517ceaeb81828c35c4617b648a86c02e/basecrm-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "b37adb0669e52cc4ee324776cdc276a5", "sha256": "c6fe579ff8089ee418c41df79a49a53c25f40293fc3df00fd1ffb09375b0cca2" }, "downloads": -1, "filename": "basecrm-1.2.4.tar.gz", "has_sig": false, "md5_digest": "b37adb0669e52cc4ee324776cdc276a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24924, "upload_time": "2017-11-24T09:18:50", "url": "https://files.pythonhosted.org/packages/c6/a4/639f37b752d39aa10a0a23f882feef30b2ce4726831444a4505250fe0216/basecrm-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "59bab1070751bfdecc9b938e97ced18f", "sha256": "4522474a8c72b7590324085965d5dcbbe213997bca8e5a4252ec3b3610bb7ee0" }, "downloads": -1, "filename": "basecrm-1.2.5.tar.gz", "has_sig": false, "md5_digest": "59bab1070751bfdecc9b938e97ced18f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26384, "upload_time": "2018-04-11T12:48:16", "url": "https://files.pythonhosted.org/packages/b9/ac/44d40db43a2205adced289138af11d2460800ebf7a5a8b94495293e8eb0b/basecrm-1.2.5.tar.gz" } ], "1.2.6": [ { "comment_text": "", "digests": { "md5": "de82e21d5708b1af2c76b0179ec062dc", "sha256": "3b12e4b130b119a2a3e538e170ba4e0350ae65b78638ef4bb939d80538334abf" }, "downloads": -1, "filename": "basecrm-1.2.6.tar.gz", "has_sig": false, "md5_digest": "de82e21d5708b1af2c76b0179ec062dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26398, "upload_time": "2018-06-05T09:48:48", "url": "https://files.pythonhosted.org/packages/b7/6b/e2b2d20e09ef7cd0e194d3736faf04563efeabc0c98b3c75d593dd34d754/basecrm-1.2.6.tar.gz" } ], "1.2.7": [ { "comment_text": "", "digests": { "md5": "bc34288a56aca7c613926dfeed34e7a0", "sha256": "22c60f8343e321f187cc884612dfa2379629ff4c367da5f28d6b8c8bb67dd864" }, "downloads": -1, "filename": "basecrm-1.2.7.tar.gz", "has_sig": false, "md5_digest": "bc34288a56aca7c613926dfeed34e7a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30488, "upload_time": "2018-10-09T11:46:04", "url": "https://files.pythonhosted.org/packages/11/3e/0e1144e2463e5cc2611d5d1e375228f25ce3627d3f83433e707cc35d9fd6/basecrm-1.2.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bc34288a56aca7c613926dfeed34e7a0", "sha256": "22c60f8343e321f187cc884612dfa2379629ff4c367da5f28d6b8c8bb67dd864" }, "downloads": -1, "filename": "basecrm-1.2.7.tar.gz", "has_sig": false, "md5_digest": "bc34288a56aca7c613926dfeed34e7a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30488, "upload_time": "2018-10-09T11:46:04", "url": "https://files.pythonhosted.org/packages/11/3e/0e1144e2463e5cc2611d5d1e375228f25ce3627d3f83433e707cc35d9fd6/basecrm-1.2.7.tar.gz" } ] }