<h1 align="center"> Python Value-Objects</h1>
<div align="center">
![](https://img.shields.io/badge/PRs-welcome-green.svg)
[![GitHub](https://img.shields.io/github/license/jparadadev/python-value-objects)](https://github.com/jparadadev/python-value-objects/blob/main/LICENSE)
[![Pypi](https://img.shields.io/pypi/v/pyvalueobjects)](https://pypi.org/project/pyvalueobjects/)
[![Downloads](https://pepy.tech/badge/pyvalueobjects)](https://pepy.tech/project/pyvalueobjects)
[![GA](https://github.com/jparadadev/python-value-objects/workflows/Tests/badge.svg)](https://github.com/jparadadev/python-value-objects/actions/workflows/test.yml)
</div>
![](https://raw.githubusercontent.com/jparadadev/python-value-objects/assets/assets/logo.png)
A collection of Value Objects to save time by generalizing types and format validations.
* [Value-objects](#value-objects)
* [Numeric value-objects](#numeric-value-objects)
* [Int](#int)
* [Nullable Int](#nullable-int)
* [Positive Int](#positive-int)
* [Nullable Positive Int](#positive-int)
* [Positive or zero Int](#positive-or-zero-int)
* [Nullable Positive or zero Int](#nullable-positive-or-zero-int)
* [Negative Int](#negative-int)
* [Nullable Negative Int](#nullable-negative-int)
* [Negative or zero Int](#negative-or-zero-int)
* [Nullable Negative or zero Int](#nullable-negative-or-zero-int)
* [String value-objects](#string-value-objects)
* [String](#string)
* [Nullable String](#nullable-string)
* [Uuid4](#uuid4)
* [Nullable Uuid4](#nullable-uuid4)
* [Date value-objects](#date-value-objects)
* [ISO Date](#iso-date)
* [Data Structures value-objects](#data-structures-value-objects)
* [ArrayList](#arraylist)
* [NullableArrayList](#nullable-arraylist)
* [Security value-objects](#security-value-objects)
* [CVE](#cve)
* [Nullable CVE](#nullable-cve)
* [CPE](#cpe)
* [Nullable CPE](#nullable-cpe)
# Value-objects
## Numeric value-objects
### Int
Integer numbers without a fractional component that don't support decimal points.
```python
from pyvalueobjects import Int
# Creation
my_integer = Int(9)
# Getting raw value
my_integer.value() # returns -> 9
```
### Nullable Int
Integer numbers and None.
```python
from pyvalueobjects import NullableInt
# Creation
my_integer = NullableInt(9)
# Creating from None
my_nullable_integer = NullableInt(None)
# Getting raw value
my_integer.value() # returns -> 9
my_nullable_integer.value() # returns -> None
```
### Positive Int
```python
from pyvalueobjects import PositiveInt
# Creation
my_integer = PositiveInt(9)
# Getting raw value
my_integer.value() # returns -> 9
```
### Nullable Positive Int
```python
from pyvalueobjects import NullablePositiveInt
# Creation
my_integer = NullablePositiveInt(9)
# Creating from None
my_nullable_integer = NullablePositiveInt(None)
# Getting raw value
my_integer.value() # returns -> 9
my_nullable_integer.value() # returns -> None
```
### Positive Or Zero Int
```python
from pyvalueobjects import PositiveOrZeroInt
# Creation
my_integer = PositiveOrZeroInt(9)
# Getting raw value
my_integer.value() # returns -> 9
```
### Nullable Positive Or Zero Int
```python
from pyvalueobjects import NullablePositiveOrZeroInt
# Creation
my_integer = NullablePositiveOrZeroInt(9)
# Creating from None
my_nullable_integer = NullablePositiveOrZeroInt(None)
# Getting raw value
my_integer.value() # returns -> 9
my_nullable_integer.value() # returns -> None
```
### Negative Int
```python
from pyvalueobjects import NegativeInt
# Creation
my_integer = NegativeInt(-9)
# Getting raw value
my_integer.value() # returns -> -9
```
### Nullable Negative Int
```python
from pyvalueobjects import NullableNegativeInt
# Creation
my_integer = NullableNegativeInt(-9)
# Creating from None
my_nullable_integer = NullableNegativeInt(None)
# Getting raw value
my_integer.value() # returns -> -9
my_nullable_integer.value() # returns -> None
```
### Negative Or Zero Int
```python
from pyvalueobjects import NegativeOrZeroInt
# Creation
my_integer = NegativeOrZeroInt(-9)
# Getting raw value
my_integer.value() # returns -> -9
```
### Nullable Negative Or Zero Int
```python
from pyvalueobjects import NullableNegativeOrZeroInt
# Creation
my_integer = NullableNegativeOrZeroInt(-9)
# Creating from None
my_nullable_integer = NullableNegativeOrZeroInt(None)
# Getting raw value
my_integer.value() # returns -> -9
my_nullable_integer.value() # returns -> None
```
## String value-objects
### String
```python
from pyvalueobjects import String
# Creation
my_str = String('potato')
# Getting raw value
my_str.value() # returns -> 'potato'
```
### Nullable String
```python
from pyvalueobjects import NullableString
# Creation
my_str = NullableString('potato')
# Getting raw value
my_str.value() # returns -> 'potato'
# Creation
my_nullable_str = NullableString(None)
# Getting raw value
my_nullable_str.value() # returns -> None
```
### Non Empty String
```python
from pyvalueobjects import NonEmptyString
# Creation
my_str = NonEmptyString('potato')
# Getting raw value
my_str.value() # returns -> 'potato'
# Creation
my_str2 = NonEmptyString('') # raises error
```
### Nullable non Empty String
```python
from pyvalueobjects import NullableNonEmptyString
# Creation
my_str = NullableNonEmptyString('potato')
# Getting raw value
my_str.value() # returns -> 'potato'
# Creation
my_str2 = NullableNonEmptyString(None)
# Getting raw value
my_str2.value() # returns -> None
# Creation
my_str3 = NullableNonEmptyString('') # raises error
```
### Uuid4
```python
from pyvalueobjects import Uuid4
# Creation
my_uuid4 = Uuid4('6c7add12-bf35-459e-a6c5-3178a2a33011')
# Getting raw value
my_uuid4.value() # returns -> '6c7add12-bf35-459e-a6c5-3178a2a33011'
```
### Nullable Uuid4
```python
from pyvalueobjects import NullableUuid4
# Creation
my_uuid4 = NullableUuid4('6c7add12-bf35-459e-a6c5-3178a2a33011')
my_null_uuid4 = NullableUuid4(None)
# Getting raw value
my_uuid4.value() # returns -> '6c7add12-bf35-459e-a6c5-3178a2a33011'
my_null_uuid4.value() # returns -> 'None'
```
## Date value-objects
### ISO Date
```python
from pyvalueobjects import IsoDate
# Creation
my_date = IsoDate('2023-08-15T04:55:12.076Z')
# Getting raw value
my_date.value() # returns -> '2023-08-15T04:55:12.076Z'
```
## Data structures value-objects
### ArrayList
```python
from pyvalueobjects import ArrayList
from pyvalueobjects import Int
# Creation
my_int_array = ArrayList(Int)([39])
# Getting raw value
my_int_array.value() # returns -> [39]
```
### Nullable ArrayList
```python
from pyvalueobjects import ArrayList
from pyvalueobjects import Int
# Creation
my_int_array = ArrayList(Int)([39])
my_null_array = ArrayList(Int)(None)
# Getting raw value
my_int_array.value() # returns -> [39]
my_null_array.value() # returns -> None
```
## Security value-objects
### CVE
```python
from pyvalueobjects import Cve
# Creation
my_cve = Cve('CVE-2014-9418')
# Getting raw value
my_cve.value() # returns -> 'CVE-2014-9418'
```
### Nullable CVE
```python
from pyvalueobjects import NullableCve
# Creation
my_cve = NullableCve('CVE-2014-9418')
my_null_cve = NullableCve(None)
# Getting raw value
my_cve.value() # returns -> 'CVE-2014-9418'
my_null_cve.value() # returns -> None
```
### CPE
```python
from pyvalueobjects import Cpe
# Creation
my_cpe = Cpe('cpe:/a:openjdk:openjdk:8u282')
# Getting raw value
my_cpe.value() # returns -> 'cpe:/a:openjdk:openjdk:8u282'
```
### Nullable CPE
```python
from pyvalueobjects import NullableCpe
# Creation
my_cpe = NullableCpe('cpe:/a:openjdk:openjdk:8u282')
my_null_cpe = NullableCpe(None)
# Getting raw value
my_cpe.value() # returns -> 'cpe:/a:openjdk:openjdk:8u282'
my_null_cpe.value() # returns -> None
```
Raw data
{
"_id": null,
"home_page": "https://github.com/jparadadev/python-value-objects",
"name": "pyvalueobjects",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "valueobjects,values",
"author": "Javier Parada",
"author_email": "javierparadadev@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/79/91/fc54f350ecb31f75a8e1fbc6c5ba4235c9d53e123a1d9a4d7bd022edec5c/pyvalueobjects-0.28.1.tar.gz",
"platform": "any",
"description": "<h1 align=\"center\"> Python Value-Objects</h1>\n\n<div align=\"center\">\n\n![](https://img.shields.io/badge/PRs-welcome-green.svg)\n[![GitHub](https://img.shields.io/github/license/jparadadev/python-value-objects)](https://github.com/jparadadev/python-value-objects/blob/main/LICENSE)\n[![Pypi](https://img.shields.io/pypi/v/pyvalueobjects)](https://pypi.org/project/pyvalueobjects/)\n[![Downloads](https://pepy.tech/badge/pyvalueobjects)](https://pepy.tech/project/pyvalueobjects)\n[![GA](https://github.com/jparadadev/python-value-objects/workflows/Tests/badge.svg)](https://github.com/jparadadev/python-value-objects/actions/workflows/test.yml)\n \n</div>\n\n![](https://raw.githubusercontent.com/jparadadev/python-value-objects/assets/assets/logo.png)\n\nA collection of Value Objects to save time by generalizing types and format validations.\n\n* [Value-objects](#value-objects)\n * [Numeric value-objects](#numeric-value-objects)\n * [Int](#int)\n * [Nullable Int](#nullable-int)\n * [Positive Int](#positive-int)\n * [Nullable Positive Int](#positive-int)\n * [Positive or zero Int](#positive-or-zero-int)\n * [Nullable Positive or zero Int](#nullable-positive-or-zero-int)\n * [Negative Int](#negative-int)\n * [Nullable Negative Int](#nullable-negative-int)\n * [Negative or zero Int](#negative-or-zero-int)\n * [Nullable Negative or zero Int](#nullable-negative-or-zero-int)\n * [String value-objects](#string-value-objects)\n * [String](#string)\n * [Nullable String](#nullable-string)\n * [Uuid4](#uuid4)\n * [Nullable Uuid4](#nullable-uuid4)\n * [Date value-objects](#date-value-objects)\n * [ISO Date](#iso-date)\n * [Data Structures value-objects](#data-structures-value-objects)\n * [ArrayList](#arraylist)\n * [NullableArrayList](#nullable-arraylist)\n * [Security value-objects](#security-value-objects)\n * [CVE](#cve)\n * [Nullable CVE](#nullable-cve)\n * [CPE](#cpe)\n * [Nullable CPE](#nullable-cpe)\n\n# Value-objects\n\n## Numeric value-objects\n\n### Int\n\nInteger numbers without a fractional component that don't support decimal points.\n\n```python\nfrom pyvalueobjects import Int\n\n# Creation\nmy_integer = Int(9)\n\n# Getting raw value\nmy_integer.value() # returns -> 9\n```\n\n### Nullable Int\n\nInteger numbers and None.\n\n```python\nfrom pyvalueobjects import NullableInt\n\n# Creation\nmy_integer = NullableInt(9)\n\n# Creating from None\nmy_nullable_integer = NullableInt(None)\n\n# Getting raw value\nmy_integer.value() # returns -> 9\nmy_nullable_integer.value() # returns -> None\n```\n\n### Positive Int\n\n```python\nfrom pyvalueobjects import PositiveInt\n\n# Creation\nmy_integer = PositiveInt(9)\n\n# Getting raw value\nmy_integer.value() # returns -> 9\n```\n\n### Nullable Positive Int\n\n```python\nfrom pyvalueobjects import NullablePositiveInt\n\n# Creation\nmy_integer = NullablePositiveInt(9)\n\n# Creating from None\nmy_nullable_integer = NullablePositiveInt(None)\n\n# Getting raw value\nmy_integer.value() # returns -> 9\nmy_nullable_integer.value() # returns -> None\n```\n\n### Positive Or Zero Int\n\n```python\nfrom pyvalueobjects import PositiveOrZeroInt\n\n# Creation\nmy_integer = PositiveOrZeroInt(9)\n\n# Getting raw value\nmy_integer.value() # returns -> 9\n```\n\n### Nullable Positive Or Zero Int\n\n```python\nfrom pyvalueobjects import NullablePositiveOrZeroInt\n\n# Creation\nmy_integer = NullablePositiveOrZeroInt(9)\n\n# Creating from None\nmy_nullable_integer = NullablePositiveOrZeroInt(None)\n\n# Getting raw value\nmy_integer.value() # returns -> 9\nmy_nullable_integer.value() # returns -> None\n```\n\n### Negative Int\n\n```python\nfrom pyvalueobjects import NegativeInt\n\n# Creation\nmy_integer = NegativeInt(-9)\n\n# Getting raw value\nmy_integer.value() # returns -> -9\n```\n\n### Nullable Negative Int\n\n```python\nfrom pyvalueobjects import NullableNegativeInt\n\n# Creation\nmy_integer = NullableNegativeInt(-9)\n\n# Creating from None\nmy_nullable_integer = NullableNegativeInt(None)\n\n# Getting raw value\nmy_integer.value() # returns -> -9\nmy_nullable_integer.value() # returns -> None\n```\n\n### Negative Or Zero Int\n\n```python\nfrom pyvalueobjects import NegativeOrZeroInt\n\n# Creation\nmy_integer = NegativeOrZeroInt(-9)\n\n# Getting raw value\nmy_integer.value() # returns -> -9\n```\n\n### Nullable Negative Or Zero Int\n\n```python\nfrom pyvalueobjects import NullableNegativeOrZeroInt\n\n# Creation\nmy_integer = NullableNegativeOrZeroInt(-9)\n\n# Creating from None\nmy_nullable_integer = NullableNegativeOrZeroInt(None)\n\n# Getting raw value\nmy_integer.value() # returns -> -9\nmy_nullable_integer.value() # returns -> None\n```\n\n## String value-objects\n\n### String\n\n```python\nfrom pyvalueobjects import String\n\n# Creation\nmy_str = String('potato')\n\n# Getting raw value\nmy_str.value() # returns -> 'potato'\n```\n\n### Nullable String\n\n```python\nfrom pyvalueobjects import NullableString\n\n# Creation\nmy_str = NullableString('potato')\n\n# Getting raw value\nmy_str.value() # returns -> 'potato'\n\n# Creation\nmy_nullable_str = NullableString(None)\n\n# Getting raw value\nmy_nullable_str.value() # returns -> None\n```\n\n### Non Empty String\n\n```python\nfrom pyvalueobjects import NonEmptyString\n\n# Creation\nmy_str = NonEmptyString('potato')\n\n# Getting raw value\nmy_str.value() # returns -> 'potato'\n\n# Creation\nmy_str2 = NonEmptyString('') # raises error\n```\n\n### Nullable non Empty String\n\n```python\nfrom pyvalueobjects import NullableNonEmptyString\n\n# Creation\nmy_str = NullableNonEmptyString('potato')\n\n# Getting raw value\nmy_str.value() # returns -> 'potato'\n\n# Creation\nmy_str2 = NullableNonEmptyString(None)\n\n# Getting raw value\nmy_str2.value() # returns -> None\n\n# Creation\nmy_str3 = NullableNonEmptyString('') # raises error\n```\n\n### Uuid4\n\n```python\nfrom pyvalueobjects import Uuid4\n\n# Creation\nmy_uuid4 = Uuid4('6c7add12-bf35-459e-a6c5-3178a2a33011')\n\n# Getting raw value\nmy_uuid4.value() # returns -> '6c7add12-bf35-459e-a6c5-3178a2a33011'\n```\n\n### Nullable Uuid4\n\n```python\nfrom pyvalueobjects import NullableUuid4\n\n# Creation\nmy_uuid4 = NullableUuid4('6c7add12-bf35-459e-a6c5-3178a2a33011')\nmy_null_uuid4 = NullableUuid4(None)\n\n# Getting raw value\nmy_uuid4.value() # returns -> '6c7add12-bf35-459e-a6c5-3178a2a33011'\nmy_null_uuid4.value() # returns -> 'None'\n```\n\n## Date value-objects\n\n### ISO Date\n\n```python\nfrom pyvalueobjects import IsoDate\n\n# Creation\nmy_date = IsoDate('2023-08-15T04:55:12.076Z')\n\n# Getting raw value\nmy_date.value() # returns -> '2023-08-15T04:55:12.076Z'\n```\n\n## Data structures value-objects\n\n### ArrayList\n\n```python\nfrom pyvalueobjects import ArrayList\nfrom pyvalueobjects import Int\n\n# Creation\nmy_int_array = ArrayList(Int)([39])\n\n# Getting raw value\nmy_int_array.value() # returns -> [39]\n```\n\n### Nullable ArrayList\n\n```python\nfrom pyvalueobjects import ArrayList\nfrom pyvalueobjects import Int\n\n# Creation\nmy_int_array = ArrayList(Int)([39])\nmy_null_array = ArrayList(Int)(None)\n\n# Getting raw value\nmy_int_array.value() # returns -> [39]\nmy_null_array.value() # returns -> None\n```\n\n## Security value-objects\n\n### CVE\n\n```python\nfrom pyvalueobjects import Cve\n\n# Creation\nmy_cve = Cve('CVE-2014-9418')\n\n# Getting raw value\nmy_cve.value() # returns -> 'CVE-2014-9418'\n```\n\n### Nullable CVE\n\n```python\nfrom pyvalueobjects import NullableCve\n\n# Creation\nmy_cve = NullableCve('CVE-2014-9418')\nmy_null_cve = NullableCve(None)\n\n# Getting raw value\nmy_cve.value() # returns -> 'CVE-2014-9418'\nmy_null_cve.value() # returns -> None\n```\n\n### CPE\n\n```python\nfrom pyvalueobjects import Cpe\n\n# Creation\nmy_cpe = Cpe('cpe:/a:openjdk:openjdk:8u282')\n\n# Getting raw value\nmy_cpe.value() # returns -> 'cpe:/a:openjdk:openjdk:8u282'\n```\n\n### Nullable CPE\n\n```python\nfrom pyvalueobjects import NullableCpe\n\n# Creation\nmy_cpe = NullableCpe('cpe:/a:openjdk:openjdk:8u282')\nmy_null_cpe = NullableCpe(None)\n\n# Getting raw value\nmy_cpe.value() # returns -> 'cpe:/a:openjdk:openjdk:8u282'\nmy_null_cpe.value() # returns -> None\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A collection of Value Objects to save time by generalizing data type and format validations.",
"version": "0.28.1",
"project_urls": {
"Bug Tracker": "https://github.com/jparadadev/python-value-objects/issues",
"Homepage": "https://github.com/jparadadev/python-value-objects"
},
"split_keywords": [
"valueobjects",
"values"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4334c494f39ac8e23d797c23bc221800d8142bfeba754fca1f9bd2aaba077ec9",
"md5": "99dd599f553870e9ea79a1a04202c504",
"sha256": "b155dad1b670aff1852f83ba11ca91b09d2098c1b214282d08156144ae59e2b0"
},
"downloads": -1,
"filename": "pyvalueobjects-0.28.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "99dd599f553870e9ea79a1a04202c504",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 14534,
"upload_time": "2023-12-15T00:31:33",
"upload_time_iso_8601": "2023-12-15T00:31:33.878105Z",
"url": "https://files.pythonhosted.org/packages/43/34/c494f39ac8e23d797c23bc221800d8142bfeba754fca1f9bd2aaba077ec9/pyvalueobjects-0.28.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7991fc54f350ecb31f75a8e1fbc6c5ba4235c9d53e123a1d9a4d7bd022edec5c",
"md5": "bd78fe7a0bbb46547f659b1c43ed4f79",
"sha256": "199e4013f08e9a7434c6b371f74c61b09daa0d235223d9d927737fc9785850a8"
},
"downloads": -1,
"filename": "pyvalueobjects-0.28.1.tar.gz",
"has_sig": false,
"md5_digest": "bd78fe7a0bbb46547f659b1c43ed4f79",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8260,
"upload_time": "2023-12-15T00:31:43",
"upload_time_iso_8601": "2023-12-15T00:31:43.768500Z",
"url": "https://files.pythonhosted.org/packages/79/91/fc54f350ecb31f75a8e1fbc6c5ba4235c9d53e123a1d9a4d7bd022edec5c/pyvalueobjects-0.28.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-15 00:31:43",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jparadadev",
"github_project": "python-value-objects",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "pyvalueobjects"
}