{ "info": { "author": "Sina Rezaei", "author_email": "sinarezaei1991@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "![alt text][pypi_version] ![alt text][licence_version]\n\n# Pinform: An InfluxDB ORM (OSTM) for Python\n\nPInfORM is an Object/TimeSeries Mapping layer for connecting to [InfluxDB](https://www.influxdata.com/) in python.\n\nTested with:\n* Python 3.6+\n* InfluxDB 1.7.3\n\nUse the following command to install using pip:\n```\npip install pinform\n```\n\n## Usage example\n### Create Measurement Models\nFirst, create your measurement model in \n```\nfrom pinform import Measurement\nfrom pinform.fields import FloatField\nfrom pinform.tags import Tag\n\nclass OHLC(Measurement):\n class Meta:\n measurement_name = 'ohlc'\n\n symbol = Tag(null=False)\n open = FloatField(null=False)\n high = FloatField(null=False)\n low = FloatField(null=False)\n close = FloatField(null=False)\n```\n\n### Create InfluxClient\nThen you must create an instance of `InfluxClient` to connect to database:\n```\nfrom pinform.client import InfluxClient\n\ncli = InfluxClient(host=\"localhost\", port=8086, database_name=\"defaultdb\")\n```\n\nIf the database needs authentication, use:\n```\ncli = InfluxClient(host=\"localhost\", port=8086, database_name=\"defaultdb\", username='your db username', password='your db password')\n```\n\n\n### Save and Retrieve Points\nTo save data in database, use `save_points` or `save_dataframe` functions of InfluxClient:\n```\nohlc = OHLC(time_point=datetime.datetime.now(), symbol='AAPL', open=100.6, high=102.5, low=90.4, close=94.2)\ncli.save_points([ohlc])\n```\n\nTo retrieve data from database, use `load_points` or `load_points_as_dataframe` functions of InfluxClient:\n```\nohlc_points = cli.load_points(OHLC, {'symbol':'AAPL'})\n```\n\n### Get Distinct Tag Values\nTo get distinct tag values from all measurements, use `get_distinct_existing_tag_values` function from InfluxClient:\n```\ntag_values = cli.get_distinct_existing_tag_values('symbol')\n```\n\nTo get distinct tag values from an specific measurements,pass measurement to the previous function:\n```\ntag_values = cli.get_distinct_existing_tag_values('symbol', measurement=OHLC)\n```\n\n\n\n## Fields\nIt's possible to use `IntegerField`, `FloatField`, `BooleanField` and `StringField` to save field values in InfluxDB.\nThere are four other types of fields which help with storing fields with specific integer or string values. To create a field with multiple choice integer values, use `MultipleChoiceIntegerField` or `EnumIntegerField` classes. To create a field with multiple choice string values, use `MultipleChoiceStringField` or `EnumStringField` classes.\n\nExample for MultipleChoiceStringField:\n```\nfrom pinform.fields import MultipleChoiceStringField\n\nclass WeatherInfo(Measurement):\n class Meta:\n measurement_name = 'weather_info'\n\n condition = MultipleChoiceStringField(options=['sunny','cloudy','rainy'], null=False)\n\n```\n\nExample for EnumStringField:\n```\nfrom enum import Enum\nfrom pinform.fields import EnumStringField\n\nclass WeatherCondition(Enum):\n SUNNY = 'sunny'\n CLOUDY = 'cloudy'\n RAINY = 'rainy'\n\n\nclass WeatherInfo(Measurement):\n class Meta:\n measurement_name = 'weather_info'\n\n condition = EnumStringField(enum=WeatherCondition, null=False)\n\n```\n\n\n\n## Advanced usage\n\n### Dynamic measurement names\nIt is possible to use tags in measurement name wrapped in parenthesis\n```\nclass OHLC(Measurement):\n class Meta:\n measurement_name = 'ohlc_(symbol)'\n\n symbol = Tag(null=False)\n ...\n```\n\n### Query Field and Pandas Series\nUse `get_fields_as_series` function from InfluxClient to get fields of specific measurement class as Pandas Series. It's also possible to aggregate data and group by time. This function returnes a `dict` with aggregated field names as keys and pandas series as values.\n```\nfrom pinform.client import AggregationMode\n\nseries_dict = cli.get_fields_as_series(OHLC, \n field_aggregations={'close': [AggregationMode.MEAN, AggregationMode.STDDEV]},\n tags={'symbol': 'AAPL'},\n time_range=(start_datetime, end_datetime),\n group_by_time_interval='10d')\nmean_close_series = series_dict['mean_close']\nstddev_close_series = series_dict['stddev_close']\n```\n\n\n\n[pypi_version]: https://img.shields.io/pypi/v/pinform.svg \"PYPI version\"\n[licence_version]: https://img.shields.io/badge/license-MIT%20v2-brightgreen.svg \"MIT Licence\"\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sinarezaei/pinform", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pinform", "package_url": "https://pypi.org/project/pinform/", "platform": "", "project_url": "https://pypi.org/project/pinform/", "project_urls": { "Homepage": "https://github.com/sinarezaei/pinform" }, "release_url": "https://pypi.org/project/pinform/0.6/", "requires_dist": null, "requires_python": "", "summary": "Python InfluxDB ORM (OSTM)", "version": "0.6" }, "last_serial": 4865047, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a65790b2b3aef092d239f2b1ff7fe8f5", "sha256": "dbfea486488a3108af6fa0dc70c8458d58122cd4d6a90cb32e83ba729736a8fc" }, "downloads": -1, "filename": "pinform-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a65790b2b3aef092d239f2b1ff7fe8f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9069, "upload_time": "2019-02-11T11:45:47", "url": "https://files.pythonhosted.org/packages/35/35/1881af0bed4513efd5f4217fe2cfd699b83b62cc2ebf47d0df5063ea4aab/pinform-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "216252f4c17f1b6b2531c1ac6bf13961", "sha256": "5113de26b5c0846b20734aed0f2f695fdb464b919cb85397273e9d1d4bcfd43e" }, "downloads": -1, "filename": "pinform-0.1.tar.gz", "has_sig": false, "md5_digest": "216252f4c17f1b6b2531c1ac6bf13961", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7333, "upload_time": "2019-02-11T11:45:50", "url": "https://files.pythonhosted.org/packages/3f/25/87033b8c74367541fee5591a8d4390d7a4d6914a00d458ed3a9a13d632da/pinform-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "171a9321202f8c02c8462f2677672e32", "sha256": "606b33d0a0fe5a1700c20626c8f412cb7a220b56480483e4c9b765215e237d80" }, "downloads": -1, "filename": "pinform-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "171a9321202f8c02c8462f2677672e32", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11886, "upload_time": "2019-02-11T12:53:01", "url": "https://files.pythonhosted.org/packages/1b/15/45707c43c1a7bf00fc9fecf1339231ffdaddd938151779f578de334203db/pinform-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d704f0292836681ae0be9d8ecd0b6432", "sha256": "1d74a8fbfbf6d91de29c98b9e14a2ded9c690caf372ee69e96ffd9c5a16ed133" }, "downloads": -1, "filename": "pinform-0.2.tar.gz", "has_sig": false, "md5_digest": "d704f0292836681ae0be9d8ecd0b6432", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8938, "upload_time": "2019-02-11T12:53:04", "url": "https://files.pythonhosted.org/packages/5a/2e/4fcfd79ff83137d5a51a264cd5a153e91fcfc29656bcbe58f2813371f786/pinform-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "e7c5d57946d4d9aff51e0b46ee5fb834", "sha256": "31fbbb2fa7a5e2d9625a7208c57cfb61d4ebe3a1cf9ecbd2dc64c50e70e2d3d2" }, "downloads": -1, "filename": "pinform-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e7c5d57946d4d9aff51e0b46ee5fb834", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13650, "upload_time": "2019-02-14T19:19:33", "url": "https://files.pythonhosted.org/packages/42/5c/2cb238dc7416aead406ff90c101a49501aa709a58ab9a4f639258b7747ee/pinform-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0942ab7603e0b54d5948403aa43c2a41", "sha256": "a766609af68313b7ed923e1f197b8fb5a536daced3a6d1a108518a78cb07c8d5" }, "downloads": -1, "filename": "pinform-0.3.tar.gz", "has_sig": false, "md5_digest": "0942ab7603e0b54d5948403aa43c2a41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10150, "upload_time": "2019-02-14T19:19:41", "url": "https://files.pythonhosted.org/packages/25/d5/c0f4028bf54bdb8c13a2616cde5a223a2bf933065e31070c3c8eb8aaed7b/pinform-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "0b376ff1112c09d6a8ad27529c1e2c87", "sha256": "2c9bb016691b342d175c18cbd0e7b8c9e49966ba45a3ae6e1f3637f23509cf23" }, "downloads": -1, "filename": "pinform-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0b376ff1112c09d6a8ad27529c1e2c87", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13660, "upload_time": "2019-02-16T22:30:49", "url": "https://files.pythonhosted.org/packages/d5/e1/9c28dfe58237b6da583799071feac00f2fa97d3234d67cc4929305b3fbac/pinform-0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf44780b6599bd952534e5a528e26a0b", "sha256": "662a387b390705e5cc9b5efac7c85da8052d42e794bf18e7c4e87250339753f0" }, "downloads": -1, "filename": "pinform-0.4.tar.gz", "has_sig": false, "md5_digest": "bf44780b6599bd952534e5a528e26a0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10150, "upload_time": "2019-02-16T22:30:54", "url": "https://files.pythonhosted.org/packages/15/ef/b8a2997fa08ca1d08b5d3cd8211650dc7abc694c728d4dc2e6bf7c858e17/pinform-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "f80c53d4666fda344f5b545ed2660976", "sha256": "30d2311cc81e5619ac64fe34c53fccfb869e67fb5c9341c6c6abdeb44d4f10fc" }, "downloads": -1, "filename": "pinform-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f80c53d4666fda344f5b545ed2660976", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13656, "upload_time": "2019-02-18T13:34:26", "url": "https://files.pythonhosted.org/packages/88/29/8e053ca867b15d7ea97002415ea0fd87dab6b148a8de92688c274c2485e8/pinform-0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcc41ab424c2839e14cd99b5f9f3e0ea", "sha256": "7d2c9abbadb9d7e43969baa9b6b6dc50ce53de3f643ae6af6a778c60e3a31aa3" }, "downloads": -1, "filename": "pinform-0.5.tar.gz", "has_sig": false, "md5_digest": "dcc41ab424c2839e14cd99b5f9f3e0ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10149, "upload_time": "2019-02-18T13:34:32", "url": "https://files.pythonhosted.org/packages/31/e1/96850b9c8d3ca5efd291e4208113ca526224c4f39476c3ed39d454ddc657/pinform-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "b26ac9d0f533808bfc88cb10d07ea443", "sha256": "f024cb8fd085575c9a52f3d0ac79fd1a4efc58590fcc01b905dc74fbb7025c15" }, "downloads": -1, "filename": "pinform-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "b26ac9d0f533808bfc88cb10d07ea443", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13878, "upload_time": "2019-02-25T15:12:11", "url": "https://files.pythonhosted.org/packages/64/d3/6ac1515402ee15f004eb2b2d6a743277803023adf5f883dc6ba734deeb6e/pinform-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f95c10d2a24ddc8af34a835fccb65928", "sha256": "8bb72ad572d6a0454c70feb918f5f79ef8d08dcf463b1dd2c40a8b60a30deed2" }, "downloads": -1, "filename": "pinform-0.6.tar.gz", "has_sig": false, "md5_digest": "f95c10d2a24ddc8af34a835fccb65928", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10261, "upload_time": "2019-02-25T15:12:17", "url": "https://files.pythonhosted.org/packages/bd/94/e5cbc890b5708d63e7c71ff2d3af082c8129afe503b90b11101b5a0efee0/pinform-0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b26ac9d0f533808bfc88cb10d07ea443", "sha256": "f024cb8fd085575c9a52f3d0ac79fd1a4efc58590fcc01b905dc74fbb7025c15" }, "downloads": -1, "filename": "pinform-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "b26ac9d0f533808bfc88cb10d07ea443", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13878, "upload_time": "2019-02-25T15:12:11", "url": "https://files.pythonhosted.org/packages/64/d3/6ac1515402ee15f004eb2b2d6a743277803023adf5f883dc6ba734deeb6e/pinform-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f95c10d2a24ddc8af34a835fccb65928", "sha256": "8bb72ad572d6a0454c70feb918f5f79ef8d08dcf463b1dd2c40a8b60a30deed2" }, "downloads": -1, "filename": "pinform-0.6.tar.gz", "has_sig": false, "md5_digest": "f95c10d2a24ddc8af34a835fccb65928", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10261, "upload_time": "2019-02-25T15:12:17", "url": "https://files.pythonhosted.org/packages/bd/94/e5cbc890b5708d63e7c71ff2d3af082c8129afe503b90b11101b5a0efee0/pinform-0.6.tar.gz" } ] }