{ "info": { "author": "Barak Alon", "author_email": "barak.s.alon@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "SOQL\n====\n\n.. image:: https://travis-ci.org/plangrid/soql.svg?branch=master\n :target: https://travis-ci.org/plangrid/soql\n :alt: CI Status\n\n.. image:: https://badge.fury.io/py/soql.svg\n :target: https://badge.fury.io/py/soql\n :alt: PyPI status\n\n|\n\nThis package provides declarative models for Salesforce objects and utilities for generating `Salesforce Object Query Language (SOQL) `_ queries from these models.\n\nThis package works well with `Simple Salesforce `_.\n\n\nUsage\n-----\n\n.. code-block:: python\n\n from simple_salesforce import Salesforce\n from soql import attributes\n from soql import load_models_from_salesforce_data\n from soql import Model\n from soql import select\n\n\n class Account(Model):\n id = attributes.String('Id')\n deleted = attributes.Boolean('IsDeleted')\n name = attributes.String('Name')\n owner = attributes.Relationship('Owner', related_model=User)\n custom_field = attributes.String('CustomField__c', nullable=True)\n\n class User(Model):\n id = attributes.String('Id')\n email = attributes.String('Email')\n\n sf = Salesforce(...)\n\n query = select(Account) \\\n .where(Account.id == '50130000000014c') \\\n .join(Account.owner)\n\n resp = sf.query(str(query))\n\n account = load_models_from_salesforce_data(resp)[0]\n\n print(account.id)\n print(account.owner.id)\n\n\nModels\n~~~~~~\n\nModels define in-memory representations of Salesforce object, and provide an idiomatic way to access the data.\n\n.. code-block:: python\n\n from soql import attributes\n from soql import Model\n\n class User(Model):\n # The first argument to an attribute is its name in Salesforce.\n id = attributes.String('Id')\n email = attributes.String('Email')\n\n user = User(id='123', email='a@b.com')\n\n assert user.id == '123'\n\nHelpers are available to load models directly from ``simple_salesforce``:\n\n.. code-block:: python\n\n query = select(User)\n\n resp = sf.query(str(query))\n\n users = load_models_from_salesforce_data(resp)\n\nRelationships can also be declared:\n\n.. code-block:: python\n\n class Account(Model):\n id = attributes.String('Id')\n owner = attributes.Relationship('Owner', related_model=User)\n contacts = attributes.Relationship('Contacts', related_model=User, many=True)\n\n\nQueries\n~~~~~~~\n\nSOQL queries can be generated from models:\n\n.. code-block:: python\n\n from soql import select\n\n query = select(User).where(User.id == '123')\n\n assert str(query) == \"SELECT User.Id, User.Email FROM User WHERE User.Id = '123'\"\n\nMost of SOQL is supported, including...\n\nJoins:\n\n.. code-block:: python\n\n from soql import select\n\n query = select(Account).join(Account.contacts)\n\n assert str(query) == \"SELECT Account.Id, (SELECT User.Id, User.Email FROM Account.Contacts) FROM Account\"\n\nSubqueries:\n\n.. code-block:: python\n\n from soql import select\n\n subquery = select(User).columns(User.email).subquery()\n query = select(User).where(User.email.in_(subquery))\n\n assert str(query) == \"SELECT User.Id, User.Email FROM User WHERE User.Email IN (SELECT User.Email FROM User)\"\n\nAnd more!\n\n\nInstallation\n------------\n\n.. code-block::\n\n pip install soql\n\n\nContributing\n------------\n\nThere is still work to be done, and contributions are encouraged! Check out the `contribution guide `_ for more information.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/plangrid/soql", "keywords": "salesforce,soql,salesforce.com", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "soql", "package_url": "https://pypi.org/project/soql/", "platform": "", "project_url": "https://pypi.org/project/soql/", "project_urls": { "Homepage": "https://github.com/plangrid/soql" }, "release_url": "https://pypi.org/project/soql/1.0.2/", "requires_dist": null, "requires_python": "", "summary": "Models and query generator for Salesforce Object Query Language (SOQL)", "version": "1.0.2" }, "last_serial": 4153738, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "28504c3a7f2b9472a41d30bbb4591454", "sha256": "20c7056ffd8c07d826a66bce69a687d6a0a1af588e101e18e5bde0812f4b139d" }, "downloads": -1, "filename": "soql-1.0.1.tar.gz", "has_sig": false, "md5_digest": "28504c3a7f2b9472a41d30bbb4591454", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1558, "upload_time": "2018-03-26T22:27:56", "url": "https://files.pythonhosted.org/packages/cc/34/b48e94e11742b9649d1218bfa5a09356ce26c858cac88bc4a98a4a6eca32/soql-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "f54e938fc46a8eb1811846fe16e913d1", "sha256": "785f234acb4307d99da9778e36839ebf61b6371faa48b144404ce524b9516293" }, "downloads": -1, "filename": "soql-1.0.2.tar.gz", "has_sig": false, "md5_digest": "f54e938fc46a8eb1811846fe16e913d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12028, "upload_time": "2018-08-09T17:15:05", "url": "https://files.pythonhosted.org/packages/58/b4/47101d168cb56ceac2b684f382c476725c6841878e15e8c3310a77913785/soql-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f54e938fc46a8eb1811846fe16e913d1", "sha256": "785f234acb4307d99da9778e36839ebf61b6371faa48b144404ce524b9516293" }, "downloads": -1, "filename": "soql-1.0.2.tar.gz", "has_sig": false, "md5_digest": "f54e938fc46a8eb1811846fe16e913d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12028, "upload_time": "2018-08-09T17:15:05", "url": "https://files.pythonhosted.org/packages/58/b4/47101d168cb56ceac2b684f382c476725c6841878e15e8c3310a77913785/soql-1.0.2.tar.gz" } ] }