{ "info": { "author": "Pawel", "author_email": "inne.poczta@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Libraries" ], "description": "pyOptional\n==========\n\nDescription\n-----------\n\nLibrary provided implementation Optional object similar to `Java\noptional `__.\nUsing this object, You will never check ``if x is None``.\n\nInstall\n-------\n\n``pip install pyOptional``\n\nUsage\n-----\n\nExamples\n~~~~~~~~\n\n.. code:: python\n\n from pyOptional import Optional\n\n optional_with_value = Optional('ABC')\n optional_empty = Optional(None)\n\n print(optional_with_value)\n print(optional_empty)\n\n**output:**\n\n::\n\n Optional of: ABC\n Optional empty\n\nMethods:\n~~~~~~~~\n\nget()\n^^^^^\n\nReturns value or throw ``NoneValueError`` exception on empty optional\n\n.. code:: python\n\n print(optional_with_value.get())\n print(optional_empty.get())\n\n**output**:\n\n::\n\n ABC\n Traceback (most recent call last):\n ...\n pyOptional.exceptions.NoneValueError: Called get on empty optional\n\nget\\_or\\_else(default\\_value)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns value if exists or default\\_value when empty\n\n.. code:: python\n\n print(optional_with_value.get_or_else('XYZ'))\n print(optional_empty.get_or_else('XYZ'))\n\n**output**:\n\n::\n\n ABC\n XYZ\n\nget\\_or\\_else\\_get(callable\\_for\\_generate\\_default\\_value)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns value if exists, otherwise result of\n``callable_for_generate_default_value``\n\n.. code:: python\n\n def gen_value():\n return 'QWERTY'\n\n print(optional_with_value.get_or_else_get(gen_value))\n print(optional_empty.get_or_else_get(gen_value))\n print(optional_empty.get_or_else_get(lambda: 'From lambda'))\n\n**output**:\n\n::\n\n ABC\n QWERTY\n From lambda\n\nget\\_or\\_raise(exception\\_class, \\*args, \\*\\*kwargs) Returns value if exists or raise provided exception\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n print(optional_with_value.get_or_raise(FileNotFoundError, 'Some message'))\n print(optional_empty.get_or_raise(FileNotFoundError, 'Some message'))\n\n**output**:\n\n::\n\n ABC\n Traceback (most recent call last):\n ...\n FileNotFoundError: Some message\n\nmap(callable\\_to\\_transform\\_value)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nReturns optional of other value (result returned by\n``callable_to_transform_value``) or Optional empty if source Optional\nwas empty\n\n.. code:: python\n\n print(optional_with_value.map(lambda val: val*2))\n print(optional_empty.map(lambda val: val*2))\n\n**output**:\n\n::\n\n Optional of: ABCABC\n Optional empty\n\nflat\\_map(callable\\_to\\_transform\\_value)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSimilar to map, but if source Optional contains another Optionals,\nresult will contain single Optional\n\n.. code:: python\n\n nested_val_optional = Optional(Optional(Optional(8)))\n nested_empty_optional = Optional(Optional(Optional(None)))\n print(nested_val_optional.map(lambda val: val*3))\n print('---------------------')\n print(nested_empty_optional.map(lambda val: val*3))\n print('---------------------')\n print(nested_val_optional.flat_map(lambda val: val*3))\n print('---------------------')\n print(nested_empty_optional.flat_map(lambda val: val*3))\n\n**output**:\n\n::\n\n Traceback (most recent call last):\n ...\n TypeError: unsupported operand type(s) for *: 'Optional' and 'int'\n ---------------------\n Traceback (most recent call last):\n ...\n TypeError: unsupported operand type(s) for *: 'Optional' and 'int'\n ---------------------\n Optional of: 24\n ---------------------\n Optional empty\n\nif\\_present(func)\n^^^^^^^^^^^^^^^^^\n\nCall func with optional value if exists. If optional is empty, do\nnothing.\n\n.. code:: python\n\n optional_with_value.if_present(lambda val: print('found value ' + val))\n optional_empty.if_present(lambda val: print('found value ' + val))\n\n**output**:\n\n::\n\n found value ABC\n\nis\\_present()\n^^^^^^^^^^^^^\n\nreturn True if Optional not empty, otherwise False\n\n.. code:: python\n\n print(optional_with_value.is_present())\n print(optional_empty.is_present())\n\n**output**:\n\n::\n\n True\n False\n\nStatic Methods:\n~~~~~~~~~~~~~~~\n\nempty()\n^^^^^^^\n\nreturn an empty Optional\n\n.. code:: python\n\n print(Optional.empty())\n\n**output**:\n\n::\n\n Optional empty\n\n\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/PawelJ-PL/pyOptional", "keywords": "Python optional", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyOptional", "package_url": "https://pypi.org/project/pyOptional/", "platform": "", "project_url": "https://pypi.org/project/pyOptional/", "project_urls": { "Homepage": "https://github.com/PawelJ-PL/pyOptional" }, "release_url": "https://pypi.org/project/pyOptional/1.1.2/", "requires_dist": [ "coverage; extra == 'test'" ], "requires_python": ">=3", "summary": "Library provided implementation Optional object similar to Java optional. Using this object, You will never check \"if x is None\"", "version": "1.1.2" }, "last_serial": 3508549, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "43051ae58dea6d622d73d3a746cf6e96", "sha256": "0ccbfe37755067ee58b579151415de4f4b7b7f8835b675b1eaee973c4ecc3566" }, "downloads": -1, "filename": "pyOptional-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "43051ae58dea6d622d73d3a746cf6e96", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6370, "upload_time": "2017-11-23T21:29:34", "url": "https://files.pythonhosted.org/packages/39/a2/5cc23b7a6fa313bfa4362d68e157b69398b5dba7990cb3da84d3bf518554/pyOptional-1.0.0-py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "3706bcf52d06f83bf0f6fe46a7533d48", "sha256": "c6f7d709f988c5e6c5d479df3e6bbc66b65012cb09002994e91cf1e8de2f8a3b" }, "downloads": -1, "filename": "pyOptional-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3706bcf52d06f83bf0f6fe46a7533d48", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6387, "upload_time": "2017-11-23T21:42:08", "url": "https://files.pythonhosted.org/packages/ff/ec/b95423ee8dd1e179b5db924ec7c9ecc7cd8ee233da51ce380041514112ee/pyOptional-1.0.1-py3-none-any.whl" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "9c471fb762d5ada53eeae8ec2d77d93d", "sha256": "acfb6800acde8d6854264679a512ef01c5c34478778d0af2dfefd0462205f71b" }, "downloads": -1, "filename": "pyOptional-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9c471fb762d5ada53eeae8ec2d77d93d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6561, "upload_time": "2017-11-23T22:01:10", "url": "https://files.pythonhosted.org/packages/11/05/b37e247839f2a430a05eab141423ea26a0c6e663d305b84ad3408cdf71d9/pyOptional-1.0.2-py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "926be0c36b1653cec0286d24ec6d05d0", "sha256": "7c6469fc111bc34c3ba1037042924e670e56c70cbc710307e131c405b1beb7fd" }, "downloads": -1, "filename": "pyOptional-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "926be0c36b1653cec0286d24ec6d05d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6601, "upload_time": "2018-01-20T19:51:44", "url": "https://files.pythonhosted.org/packages/85/d8/413aa84ee5e2605fe1b3e6a1a7618ddbcd8529f4883129fbae648d3e52ec/pyOptional-1.1.0-py3-none-any.whl" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "14a6c12be4bdafa789b7f71186efde73", "sha256": "fd4fd7a50e61dccb3aaaffa71640934246480819e0225d12b9056a6d678b15fc" }, "downloads": -1, "filename": "pyOptional-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "14a6c12be4bdafa789b7f71186efde73", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6672, "upload_time": "2018-01-20T20:03:34", "url": "https://files.pythonhosted.org/packages/79/5f/f94f151f26a7f579f554d14f2cac12343da43f530c69cff51fca2a41c6a7/pyOptional-1.1.1-py3-none-any.whl" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "7245c777fbdbf8f891f79b7bab95e18f", "sha256": "48260246fd69b1a594611571dc6eba980f6c0aea6fc48d025033ef734ee7f5bb" }, "downloads": -1, "filename": "pyOptional-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7245c777fbdbf8f891f79b7bab95e18f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6745, "upload_time": "2018-01-21T11:06:56", "url": "https://files.pythonhosted.org/packages/75/66/8b681423d90da3297eb92831cd874f58ccd1a6e234c2b42df48f53c0ee95/pyOptional-1.1.2-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7245c777fbdbf8f891f79b7bab95e18f", "sha256": "48260246fd69b1a594611571dc6eba980f6c0aea6fc48d025033ef734ee7f5bb" }, "downloads": -1, "filename": "pyOptional-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7245c777fbdbf8f891f79b7bab95e18f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6745, "upload_time": "2018-01-21T11:06:56", "url": "https://files.pythonhosted.org/packages/75/66/8b681423d90da3297eb92831cd874f58ccd1a6e234c2b42df48f53c0ee95/pyOptional-1.1.2-py3-none-any.whl" } ] }