{ "info": { "author": "Kevin J. Qiu", "author_email": "kevin@idempotent.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "```\n _____ _ \n|_ _|_ _ _ __ __ _ ___ _ __(_)_ __ ___ \n | |/ _` | '_ \\ / _` |/ _ \\ '__| | '_ \\ / _ \\\n | | (_| | | | | (_| | __/ | | | | | | __/\n |_|\\__,_|_| |_|\\__, |\\___|_| |_|_| |_|\\___|\n |___/ \n```\n\n\n[![Latest PyPI version](https://img.shields.io/pypi/v/tangerine.svg)](https://pypi.python.org/pypi/tangerine)\n[![CircleCI](https://circleci.com/gh/kevinjqiu/tangerine.svg?style=svg)](https://circleci.com/gh/kevinjqiu/tangerine)\n[![codecov](https://codecov.io/gh/kevinjqiu/tangerine/branch/master/graph/badge.svg)](https://codecov.io/gh/kevinjqiu/tangerine)\n\nAPI and scraper for the Tangerine Bank (Canada).\n\nInstall\n=======\n\n pip install tangerine\n\nUsage\n=====\n\nAuthentication\n--------------\n\n```python\nfrom tangerine import InteractiveSecretProvider, TangerineClient\n\nsecret_provider = InteractiveSecretProvider()\nclient = TangerineClient(secret_provider)\n\nwith client.login():\n ...\n\n```\n\nUsing `InteractiveSecretProvider` will prompt user for username/account #, security challenge questions and PIN number.\n\nThe call to `client.login()` will initiate the login process. After the login is successful, subsequent calls to the API will be authenticated.\n\nIf `client.login()` is used as a context manager (i.e., `with client.login():`), logout will be automatically initiated after the code block exits\nor any exception is raised.\n\nList accounts\n-------------\n\nWith an active session, use `client.list_accounts()`:\n\n```python\nwith client.login():\n accounts = client.list_accounts()\n```\n\nList transactions\n-----------------\n\n```python\nwith client.login():\n accounts = client.list_accounts()\n start_date = datetime.date(2017, 10, 1)\n end_date = datetime.date(2017, 11, 1)\n client.list_transactions([acct['number'] for acct in accounts], start_date, end_date)\n```\n\nDownload statements\n-------------------\n\n```python\nwith client.login():\n accounts = client.list_accounts()\n start_date = datetime.date(2017, 10, 1)\n end_date = datetime.date(2017, 11, 1)\n client.download_ofx(account[0], start_date, end_date)\n```\n\n\nContribution\n============\n\nRequirements:\n\n* Python 3\n* [pipenv](https://github.com/kennethreitz/pipenv)\n* basic knowledge of Python and git\n\nTo contribute to the development, fork this repo to your github account, and clone it.\n\n```\n$ git clone https://YOUR-CLONE-URL tangerine\n$ cd tangerine\n$ pipenv install # this creates the virtualenv and installs the dependencies\n$ pipenv shell # this activates the virtualenv\n$ git checkout -b branch-for-feature-or-bug-fix\nHACK...HACK...HACK\n$ git commit ...\n$ git push\n```\n\nand send a PR :)\n\n\nLicence\n=======\n\nMIT\n\nChangelog\n=========\n\nSee [CHANGELOG.md](CHANGELOG.md)\n\nAuthors\n=======\n\ntangerine was written by Kevin J. Qiu with [contributors](https://github.com/kevinjqiu/tangerine/graphs/contributors).\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kevinjqiu/tangerine", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "tangerine", "package_url": "https://pypi.org/project/tangerine/", "platform": "", "project_url": "https://pypi.org/project/tangerine/", "project_urls": { "Homepage": "https://github.com/kevinjqiu/tangerine" }, "release_url": "https://pypi.org/project/tangerine/0.3.9/", "requires_dist": null, "requires_python": "", "summary": "API for the Tangerine Bank", "version": "0.3.9" }, "last_serial": 3386044, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "8e72f825fb66d1c218114a54d166f88a", "sha256": "d9dfaff6fd146c0c60bf8e74a55cb5628f0d30afe861cb700f967ad091de65c0" }, "downloads": -1, "filename": "tangerine-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8e72f825fb66d1c218114a54d166f88a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7531, "upload_time": "2017-11-03T22:57:37", "url": "https://files.pythonhosted.org/packages/02/7c/1bb306f70d13fee5063fb91ab6b29072e43d48910a5dd5064f59dd7513bf/tangerine-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aff2ead8332b972f418ff9ce5780cda2", "sha256": "206cdd53803f2a4825b922a403096759e0119e4ee63590a569eabc777cf5a21b" }, "downloads": -1, "filename": "tangerine-0.1.0.tar.gz", "has_sig": false, "md5_digest": "aff2ead8332b972f418ff9ce5780cda2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5288, "upload_time": "2017-11-04T00:57:07", "url": "https://files.pythonhosted.org/packages/8c/5a/67fe2bd951cacfd9b1ab728a75aad40c4e953124d4a1c4824771d1bf9d28/tangerine-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f5a04c41ef6818f7915b027fbd37262c", "sha256": "c0c47c546c71609394e5d7a9c0488ab5b8866024c1b318c8b2a86745b78493d3" }, "downloads": -1, "filename": "tangerine-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f5a04c41ef6818f7915b027fbd37262c", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8720, "upload_time": "2017-11-04T00:58:10", "url": "https://files.pythonhosted.org/packages/cd/b8/af1b0c14522ab7c17f8ca671484912ffda21edad7966dd4ddd6ab996a51e/tangerine-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "57847bb599e2600ca519554601e1a8cd", "sha256": "2e442045534ea34fc36821d6317a3c98c601d399afb9ee8ffd5492bc00a5a3b1" }, "downloads": -1, "filename": "tangerine-0.1.1.tar.gz", "has_sig": false, "md5_digest": "57847bb599e2600ca519554601e1a8cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5288, "upload_time": "2017-11-04T00:58:08", "url": "https://files.pythonhosted.org/packages/54/8e/169ff7db10d7203e909f04f74a2328ee29def21a4c4a07d95bf8c09d0c69/tangerine-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "8f8009d1d770d81c3d55cb3df6040896", "sha256": "ae44feddc3025ba5d04f657ee801e401929b17c150f19ae87dab30792e7d16fd" }, "downloads": -1, "filename": "tangerine-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8f8009d1d770d81c3d55cb3df6040896", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8849, "upload_time": "2017-11-04T03:32:30", "url": "https://files.pythonhosted.org/packages/a0/04/2bffdeaa63c5847980c37b30e7d475fa68820bd273965953d83ee19fe4f1/tangerine-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a6581362cc7f7bf47f5c1636b38c6d7", "sha256": "6cddc973837353534629383b28e7aa4f0afeeff09bd80536eebd56e315bde46e" }, "downloads": -1, "filename": "tangerine-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5a6581362cc7f7bf47f5c1636b38c6d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5433, "upload_time": "2017-11-04T03:32:29", "url": "https://files.pythonhosted.org/packages/59/bf/04cefc5273a324541d7da25fc40a3cc7c0cd229dae2204d810f800af704b/tangerine-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f7c09cbcfc8fa9c52aaee92c2874f712", "sha256": "50263369dbd98fe1904c62c45f294858ea873119a2ec05ee036fac90c08826e1" }, "downloads": -1, "filename": "tangerine-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f7c09cbcfc8fa9c52aaee92c2874f712", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8852, "upload_time": "2017-11-04T03:34:31", "url": "https://files.pythonhosted.org/packages/c4/40/c9b34e02458ba790c630469ab6e3852bd6d8f80ca31ec6b7c384cc801098/tangerine-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c15aae74e2ee5e9e5ac2707bb1506fe", "sha256": "8bdaace4d65548be54b7ae89a32ac3908f11b6d0a1507a8c5150884334bad89f" }, "downloads": -1, "filename": "tangerine-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9c15aae74e2ee5e9e5ac2707bb1506fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5435, "upload_time": "2017-11-04T03:34:28", "url": "https://files.pythonhosted.org/packages/6d/a6/3c2b2d985206405603912cc1da402a9688d7aa10ccf286540e79e6e264a0/tangerine-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "cc28a57828e84a2a41cd3658c795f84e", "sha256": "6aaeb4a63603e8ea07d0000f4d6977269170b029989bdc98d9fd91a4938b66de" }, "downloads": -1, "filename": "tangerine-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "cc28a57828e84a2a41cd3658c795f84e", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8880, "upload_time": "2017-11-04T03:52:32", "url": "https://files.pythonhosted.org/packages/fd/8c/646434aca568ae2bafe75a95ed9e114e77e04efa7eeff410c0d86e8bbf0d/tangerine-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3948d293a4166eab13cff19d5daaac71", "sha256": "cbbd27d94cc2e158d19e140e76159261214924e139fc58e1e4f4395dba34b7df" }, "downloads": -1, "filename": "tangerine-0.1.5.tar.gz", "has_sig": false, "md5_digest": "3948d293a4166eab13cff19d5daaac71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5485, "upload_time": "2017-11-04T03:52:31", "url": "https://files.pythonhosted.org/packages/21/1f/265e6c1af1ffe7217b60781fe19f17ac961dfb6b3a64e0ad3ef6316c87ff/tangerine-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "814fd109010a65deeedd3b0715597004", "sha256": "6508f590810a483f865355346b24f571a602ada0d99c5c78be00aee540b2d4fc" }, "downloads": -1, "filename": "tangerine-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "814fd109010a65deeedd3b0715597004", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9038, "upload_time": "2017-11-04T03:58:41", "url": "https://files.pythonhosted.org/packages/8b/ea/e656291f28e4f5f0c47c7347a562ffd67abdbc8330e19342e33a37fb9bed/tangerine-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f97871b14092017b3d7d39248b15bbb6", "sha256": "bad15fb8b80c927132367bb65fd5912c5159ee5c41c6171e58a582b5c574ffa1" }, "downloads": -1, "filename": "tangerine-0.1.6.tar.gz", "has_sig": false, "md5_digest": "f97871b14092017b3d7d39248b15bbb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9637, "upload_time": "2017-11-04T03:58:39", "url": "https://files.pythonhosted.org/packages/1d/02/9bf6fca36a8c4decc0464a4eedfab0af96554d6454ebe719804b766e09b9/tangerine-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "2a5af9d8ac5885c242d9d9ac09747dd0", "sha256": "dbe2e5e5938738831325c085d3b9baa3e77cba9a0d82ca52a83e55b4ac513e37" }, "downloads": -1, "filename": "tangerine-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2a5af9d8ac5885c242d9d9ac09747dd0", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9041, "upload_time": "2017-11-04T04:00:57", "url": "https://files.pythonhosted.org/packages/f0/50/13c8e3ccc4cddd7feff91a9cd7d35f20258d6a215c5602511511ccc39891/tangerine-0.1.7-py3-none-any.whl" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "d88e794004fd8a52d274e743aad4ce65", "sha256": "cee39b9d5137ee56bbdee60dbad20a586d97a721dd5adc5f69c29fbbfb381926" }, "downloads": -1, "filename": "tangerine-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "d88e794004fd8a52d274e743aad4ce65", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9041, "upload_time": "2017-11-04T04:05:33", "url": "https://files.pythonhosted.org/packages/c1/27/fbe6dc6b03b5dd9c35a549bb34ec1f790483e60a15298c2248f71d38ae66/tangerine-0.1.8-py3-none-any.whl" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "12881057fdffe6230117509b4334ae68", "sha256": "8fa17738374e207a5723ca541ef4a0ce6166654dd8bad0e48c4356c6e50077ad" }, "downloads": -1, "filename": "tangerine-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "12881057fdffe6230117509b4334ae68", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8078, "upload_time": "2017-11-04T04:10:38", "url": "https://files.pythonhosted.org/packages/c2/ab/436cb5dceb2e7433436b41447fa6defe62e57f1bf6c8434715d556af7fc2/tangerine-0.1.9-py3-none-any.whl" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "9f0ddcebc366e66526e0b3ec44ba3a48", "sha256": "0219270b86bb6633f123cf50749669cbdcaa48fc9b7b34c446375f756188b9b3" }, "downloads": -1, "filename": "tangerine-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "9f0ddcebc366e66526e0b3ec44ba3a48", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8728, "upload_time": "2017-11-24T22:27:47", "url": "https://files.pythonhosted.org/packages/57/b4/54b26cd2466f5825e9bcd8f2fb9e6cef084a229d5759e7088060e47015ad/tangerine-0.2.9-py3-none-any.whl" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "1fb78f243888c6932675e54ae3b677bc", "sha256": "6e52232429222e78c7d38073d3efae031595ebe8051d97d1a5e73cff29c8ee0e" }, "downloads": -1, "filename": "tangerine-0.3.9-py3-none-any.whl", "has_sig": false, "md5_digest": "1fb78f243888c6932675e54ae3b677bc", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8891, "upload_time": "2017-12-04T04:44:26", "url": "https://files.pythonhosted.org/packages/48/4c/e6138e1c04e9b4b0d1082ab7c6e348665f44c19a674e8077e9fc4d4e6638/tangerine-0.3.9-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1fb78f243888c6932675e54ae3b677bc", "sha256": "6e52232429222e78c7d38073d3efae031595ebe8051d97d1a5e73cff29c8ee0e" }, "downloads": -1, "filename": "tangerine-0.3.9-py3-none-any.whl", "has_sig": false, "md5_digest": "1fb78f243888c6932675e54ae3b677bc", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 8891, "upload_time": "2017-12-04T04:44:26", "url": "https://files.pythonhosted.org/packages/48/4c/e6138e1c04e9b4b0d1082ab7c6e348665f44c19a674e8077e9fc4d4e6638/tangerine-0.3.9-py3-none-any.whl" } ] }