{ "info": { "author": "Alon Diamant", "author_email": "alon@mayple.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# swydo\n\n[![PyPI version](https://badge.fury.io/py/swydo.svg)](https://badge.fury.io/py/swydo)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/swydo.svg)](https://pypi.python.org/pypi/swydo/)\n[![Build Status](https://travis-ci.com/mayple/swydo.svg?branch=master)](https://travis-ci.com/mayple/swydo)\n\n> A Python 3 module to interact with the Swydo API.\n\nDeveloped in [Mayple](https://www.mayple.com).\n\n## Install\n\n```sh\npip install swydo\n```\n\n## Example\n\n```python\nimport logging\nimport swydo\nimport itertools\nfrom bravado.exception import HTTPError\n\nlogging.basicConfig()\n\nYOUR_API_KEY=\"...\"\n\n# Manually injected, as Swydo sometimes doesn't return teams\nyourTeamId = \"...\"\n\nprint(\"Starting...\")\nswydoClient = swydo.SwydoClient(apiKey=YOUR_API_KEY, autoRetry=True)\n\nyourBrandTemplateId = \"...\"\nyourReportTemplateId = \"...\"\nyourFacebookAdsConnectionId = \"...\"\nyourFacebookGraphConnectionId = \"...\"\nyourGoogleAdWordsConnectionId = \"...\"\nyourGoogleAnalyticsConnectionId = \"...\"\n\n# If you have one\ntestClientId = \"\"\n\nskipInitialEnumeration = False\n\nif not skipInitialEnumeration:\n teams = list(swydoClient.getTeams())\n\n for teamId in itertools.chain(\n (team['id'] for team in teams),\n [yourTeamId]\n ):\n team = swydoClient.getTeam(teamId)\n assert team['id'] == teamId\n print(\"Team: %s\" % team)\n\n teamUsers = swydoClient.getTeamUsers(teamId=teamId)\n for userId in (user['id'] for user in teamUsers):\n user = swydoClient.getTeamUser(teamId=teamId, userId=userId)\n assert userId == user['id']\n print(\"User: %s\" % user)\n\n teamConnections = swydoClient.getTeamConnections(teamId=teamId)\n for connectionId in (connection['id'] for connection in teamConnections):\n connection = swydoClient.getTeamConnection(teamId=teamId, connectionId=connectionId)\n assert connectionId == connection['id']\n print(\"Connection: %s\" % connection)\n\n teamBrandTemplates = swydoClient.getTeamBrandTemplates(teamId=teamId)\n for brandTemplateId in (brandTemplate['id'] for brandTemplate in teamBrandTemplates):\n brandTemplate = swydoClient.getTeamBrandTemplate(teamId=teamId, brandTemplateId=brandTemplateId)\n assert brandTemplateId == brandTemplate['id']\n print(\"BrandTemplate: %s\" % brandTemplate)\n\n teamReportTemplates = swydoClient.getTeamReportTemplates(teamId=teamId)\n for reportTemplateId in (reportTemplate['id'] for reportTemplate in teamReportTemplates):\n reportTemplate = swydoClient.getTeamReportTemplate(teamId=teamId, reportTemplateId=reportTemplateId)\n assert reportTemplateId == reportTemplate['id']\n print(\"ReportTemplate: %s\" % reportTemplate)\n\n teamClients = swydoClient.getTeamClients(teamId=teamId)\n for clientId in (client['id'] for client in teamClients):\n client = swydoClient.getTeamClient(teamId=teamId, clientId=clientId)\n assert clientId == client['id']\n print(\"Client: %s\" % client)\n\n clientDataSources = swydoClient.getClientDataSources(teamId=teamId, clientId=clientId)\n assert clientId == clientDataSources['id']\n print(\"ClientDataSources: %s\" % clientDataSources)\n\n teamReports = swydoClient.getTeamReports(teamId=teamId)\n for reportId in (report['id'] for report in teamReports):\n report = swydoClient.getTeamReport(teamId=teamId, reportId=reportId)\n assert reportId == report['id']\n print(\"Report: %s\" % report)\n\n# Find a specific client\ntry:\n testClient = swydoClient.getTeamClient(teamId=yourTeamId, clientId=testClientId)\nexcept HTTPError as he:\n if he.status_code == 404:\n testClient = None\n else:\n raise\nif not testClient:\n testClient = swydoClient.createTeamClient(\n teamId=yourTeamId,\n name=\"Test Client via API\",\n description=\"Test Client's Description\",\n email=\"test@email.com\"\n )\nprint(\"Test Client: %s\" % testClient)\n\ntestClient = swydoClient.updateTeamClient(\n teamId=yourTeamId,\n clientId=testClient['id'],\n name=\"Updated Test Client via API\",\n description=\"Updated Test Client's Description\",\n)\nprint(\"Test Client: %s\" % testClient)\n\nswydoClient.archiveTeamClient(\n teamId=yourTeamId,\n clientId=testClient['id'],\n)\nprint(\"Test Client archived.\")\n\nswydoClient.unarchiveTeamClient(\n teamId=yourTeamId,\n clientId=testClient['id'],\n)\nprint(\"Test Client unarchived.\")\n\nswydoClient.removeClientDataSourceFacebookAds(\n teamId=yourTeamId,\n clientId=testClientId,\n)\nprint(\"facebookAdsDataSource removed\")\n\nswydoClient.removeClientDataSourceFacebookGraph(\n teamId=yourTeamId,\n clientId=testClientId,\n)\nprint(\"FacebookGraph DataSource removed\")\n\nswydoClient.removeClientDataSourceGoogleAdWords(\n teamId=yourTeamId,\n clientId=testClientId,\n)\nprint(\"GoogleAdWords DataSource removed\")\n\nswydoClient.removeClientDataSourceGoogleAnalytics(\n teamId=yourTeamId,\n clientId=testClientId,\n)\nprint(\"GoogleAnalytics DataSource removed\")\n\n# FacebookAds\nfacebookAdsDataSource = swydoClient.setClientDataSourceFacebookAds(\n teamId=yourTeamId,\n clientId=testClientId,\n connectionId=yourFacebookAdsConnectionId,\n dataSourceId='adAccountId',\n dataSourceName='Added Facebook Ad Account',\n dataSourceCurrencyCode='USD',\n)\nprint(\"FacebookAds DataSource: %s\" % facebookAdsDataSource)\n\n# FacebookGraph\nfacebookGraphDataSource = swydoClient.setClientDataSourceFacebookGraph(\n teamId=yourTeamId,\n clientId=testClientId,\n connectionId=yourFacebookGraphConnectionId,\n dataSourceId='dataSourceId',\n dataSourceName='Added Facebook Graph Account',\n dataSourcePageId='dataSourcePageId',\n)\nprint(\"FacebookGraph DataSource: %s\" % facebookGraphDataSource)\n\n# GoogleAdWords\ngoogleAdWordsDataSource = swydoClient.setClientDataSourceGoogleAdWords(\n teamId=yourTeamId,\n clientId=testClientId,\n connectionId=yourGoogleAdWordsConnectionId,\n dataSourceClientId='dataSourceClientId',\n dataSourceName='Added Google Ads Account',\n dataSourceCurrencyCode='USD',\n)\nprint(\"GoogleAdWords DataSource: %s\" % googleAdWordsDataSource)\n\n# GoogleAnalytics\ngoogleAnalyticsDataSource = swydoClient.setClientDataSourceGoogleAnalytics(\n teamId=yourTeamId,\n clientId=testClientId,\n connectionId=yourGoogleAnalyticsConnectionId,\n dataSourceAccountId='dataSourceAccountId',\n dataSourceName='Added Google Analytics Account',\n dataSourceAccountName='dataSourceAccountName',\n dataSourceWebPropertyId='dataSourceWebPropertyId',\n dataSourceProfileId='dataSourceProfileId',\n dataSourceCurrencyCode='USD',\n)\nprint(\"GoogleAnalytics DataSource: %s\" % googleAnalyticsDataSource)\n\n# Create a report\ntestReport = swydoClient.createTeamReport(\n teamId=yourTeamId,\n name=\"Temporary Report\",\n clientId=testClientId,\n brandTemplateId=yourBrandTemplateId,\n reportTemplateId=yourReportTemplateId,\n comparePeriod=swydo.Enumerations.ComparePeriod.previous,\n)\nprint(\"TestReport: %s\" % testReport)\ntestReportId = testReport['id']\n\n# Share the report\nswydoClient.shareTeamReport(\n teamId=yourTeamId,\n reportId=testReportId,\n)\n\n# Update the report\ntestReport = swydoClient.updateTeamReport(\n teamId=yourTeamId,\n reportId=testReportId,\n name=\"Temporary Report Updated\",\n)\nprint(\"TestReport: %s\" % testReport)\ntestReportId = testReport['id']\n\n# Unshare the report\nswydoClient.unshareTeamReport(\n teamId=yourTeamId,\n reportId=testReportId,\n)\n\n# Delete the report\nswydoClient.deleteTeamReport(\n teamId=yourTeamId,\n reportId=testReportId,\n)\n\nswydoClient.removeClientDataSourceFacebookAds(\n teamId=yourTeamId,\n clientId=testClientId,\n)\nprint(\"facebookAdsDataSource removed\")\n\nswydoClient.removeClientDataSourceFacebookGraph(\n teamId=yourTeamId,\n clientId=testClientId,\n)\nprint(\"FacebookGraph DataSource removed\")\n\nswydoClient.removeClientDataSourceGoogleAdWords(\n teamId=yourTeamId,\n clientId=testClientId,\n)\nprint(\"GoogleAdWords DataSource removed\")\n\nswydoClient.removeClientDataSourceGoogleAnalytics(\n teamId=yourTeamId,\n clientId=testClientId,\n)\nprint(\"GoogleAnalytics DataSource removed\")\n\nprint(\"Success!...\")\n```\n\n## Contributing\n\nPull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/mayple/swydo/issues/new).\n\nInstall with:\n```sh\n$ virtualenv .venv -p python3\n$ . .venv/bin/activate\n(.venv) $ pip install -r requirements.txt\n```\nand run the tests with:\n```sh\n(.venv) $ pip install -r tests/requirements.txt\n(.venv) $ pytest tests/\n```\ndocumentation can be generated like this:\n```sh\n(.venv) $ pip install -r doc/requirements.txt\n(.venv) $ sphinx-build -b html doc doc/_build/html\n```\n\n## Related Projects\n\nUsed [cookiecutter Python library template](https://github.com/mdklatt/cookiecutter-python-lib) by [mdklatt](https://github.com/mdklatt).\n\n## Author\n\n**Alon Diamant (advance512)**\n\n* [github/advance512](https://github.com/advance512)\n* [Homepage](http://www.alondiamant.com)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.github.com/mayple/swydo", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "swydo", "package_url": "https://pypi.org/project/swydo/", "platform": "", "project_url": "https://pypi.org/project/swydo/", "project_urls": { "Homepage": "https://www.github.com/mayple/swydo" }, "release_url": "https://pypi.org/project/swydo/1.2019.5.26/", "requires_dist": [ "bravado (==10.3.2)", "ratelimit (==2.2.1)", "backoff (==1.8.0)" ], "requires_python": "", "summary": "Swydo Python SDK (swydo)", "version": "1.2019.5.26" }, "last_serial": 5318666, "releases": { "1.2019.4.23": [ { "comment_text": "", "digests": { "md5": "b41b3cb10b2aa39f93c2a48ceb4cc8f4", "sha256": "49b47028b8e3de3089847cc744499d0b512ebd4b5273ba8e9a8edca69fd041bc" }, "downloads": -1, "filename": "swydo-1.2019.4.23-py3-none-any.whl", "has_sig": false, "md5_digest": "b41b3cb10b2aa39f93c2a48ceb4cc8f4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11263, "upload_time": "2019-04-22T21:55:01", "url": "https://files.pythonhosted.org/packages/5e/8e/e311529dff6d17033059b6e6a4b3f9a6b5722be7c57d3f6a48542377a8aa/swydo-1.2019.4.23-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b256f6135e7e46e899e2045d17b94a29", "sha256": "18d1502ed5eebaa920068e7d3fc7f35f870780a93582bcefa902a44b0204893e" }, "downloads": -1, "filename": "swydo-1.2019.4.23.tar.gz", "has_sig": false, "md5_digest": "b256f6135e7e46e899e2045d17b94a29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11357, "upload_time": "2019-04-22T21:55:03", "url": "https://files.pythonhosted.org/packages/11/5a/04725ddc9b4fa2e757eac016ee3f3ca4239d95b1e9b1e7909fe7815defc6/swydo-1.2019.4.23.tar.gz" } ], "1.2019.5.19": [ { "comment_text": "", "digests": { "md5": "def73994ee72e48d21b9511451c3516c", "sha256": "627f2eb3a1c9ebcabc7594f9b749b893ddb21db4986ed76708c8fe451f195cea" }, "downloads": -1, "filename": "swydo-1.2019.5.19-py3-none-any.whl", "has_sig": false, "md5_digest": "def73994ee72e48d21b9511451c3516c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13230, "upload_time": "2019-05-19T18:37:40", "url": "https://files.pythonhosted.org/packages/24/70/47a1fa7ec88b89b58096bceebee1af4458e13077e8fe664661bf5603949a/swydo-1.2019.5.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73c7bac3f617e6cb3c6b21dc3b483320", "sha256": "9705fbdea055fd2030ab34151c6083a923cf6bf57945ffe6978c85db1ef55500" }, "downloads": -1, "filename": "swydo-1.2019.5.19.tar.gz", "has_sig": false, "md5_digest": "73c7bac3f617e6cb3c6b21dc3b483320", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14747, "upload_time": "2019-05-19T18:37:42", "url": "https://files.pythonhosted.org/packages/52/3a/986db30ca30b840c97d53edcf1c83cff5678689a5412bafe6d239f11f090/swydo-1.2019.5.19.tar.gz" } ], "1.2019.5.26": [ { "comment_text": "", "digests": { "md5": "582e504db3535add38896b3aeec5bb24", "sha256": "bc6c31df5f78b2abda28d351a044d7ffb1b2f2dde6b28a8521a493d6b50c0e38" }, "downloads": -1, "filename": "swydo-1.2019.5.26-py3-none-any.whl", "has_sig": false, "md5_digest": "582e504db3535add38896b3aeec5bb24", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12384, "upload_time": "2019-05-26T11:58:58", "url": "https://files.pythonhosted.org/packages/20/6a/569446a0199ddcdfc4e808c2151f9bd1c907f1556f0c63b523fd35b5e310/swydo-1.2019.5.26-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac9d2772355e7bff43743ee51a63cbcb", "sha256": "59408dfbe7e13ef685bac6a3c15f3187040b564382edd58041f7c760cab76592" }, "downloads": -1, "filename": "swydo-1.2019.5.26.tar.gz", "has_sig": false, "md5_digest": "ac9d2772355e7bff43743ee51a63cbcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14679, "upload_time": "2019-05-26T11:59:02", "url": "https://files.pythonhosted.org/packages/a9/fa/93f045e43b5b90faca8150b7c6a177e1966a521349a2d6392ed678bdc99c/swydo-1.2019.5.26.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "582e504db3535add38896b3aeec5bb24", "sha256": "bc6c31df5f78b2abda28d351a044d7ffb1b2f2dde6b28a8521a493d6b50c0e38" }, "downloads": -1, "filename": "swydo-1.2019.5.26-py3-none-any.whl", "has_sig": false, "md5_digest": "582e504db3535add38896b3aeec5bb24", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12384, "upload_time": "2019-05-26T11:58:58", "url": "https://files.pythonhosted.org/packages/20/6a/569446a0199ddcdfc4e808c2151f9bd1c907f1556f0c63b523fd35b5e310/swydo-1.2019.5.26-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac9d2772355e7bff43743ee51a63cbcb", "sha256": "59408dfbe7e13ef685bac6a3c15f3187040b564382edd58041f7c760cab76592" }, "downloads": -1, "filename": "swydo-1.2019.5.26.tar.gz", "has_sig": false, "md5_digest": "ac9d2772355e7bff43743ee51a63cbcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14679, "upload_time": "2019-05-26T11:59:02", "url": "https://files.pythonhosted.org/packages/a9/fa/93f045e43b5b90faca8150b7c6a177e1966a521349a2d6392ed678bdc99c/swydo-1.2019.5.26.tar.gz" } ] }