hopeit.dataframes 0.25.0b9__tar.gz → 0.25.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/PKG-INFO +5 -6
- hopeit_dataframes-0.25.2/pyproject.toml +51 -0
- hopeit_dataframes-0.25.2/setup.py +25 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/__init__.py +2 -2
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/dataframe.py +95 -16
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/serialization/dataset.py +15 -3
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/serialization/files.py +2 -0
- hopeit_dataframes-0.25.2/src/hopeit/dataframes/setup/__init__.py +0 -0
- hopeit_dataframes-0.25.2/src/hopeit/dataframes/setup/py.typed +0 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit.dataframes.egg-info/PKG-INFO +5 -6
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit.dataframes.egg-info/SOURCES.txt +4 -1
- hopeit_dataframes-0.25.2/src/hopeit.dataframes.egg-info/requires.txt +6 -0
- hopeit_dataframes-0.25.0b9/setup.py +0 -58
- hopeit_dataframes-0.25.0b9/src/hopeit.dataframes.egg-info/requires.txt +0 -6
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/README.md +0 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/setup.cfg +0 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/py.typed +0 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/serialization/__init__.py +0 -0
- /hopeit_dataframes-0.25.0b9/src/hopeit/dataframes/setup/__init__.py → /hopeit_dataframes-0.25.2/src/hopeit/dataframes/serialization/py.typed +0 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/serialization/settings.py +0 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/setup/dataframes.py +0 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit.dataframes.egg-info/dependency_links.txt +0 -0
- {hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit.dataframes.egg-info/top_level.txt +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: hopeit.dataframes
|
|
3
|
-
Version: 0.25.
|
|
3
|
+
Version: 0.25.2
|
|
4
4
|
Summary: Hopeit Engine Dataframes Toolkit
|
|
5
|
-
|
|
6
|
-
Author: Leo Smerling and Pablo Canto
|
|
7
|
-
Author-email: contact@hopeit.com.ar
|
|
5
|
+
Author-email: Leo Smerling <contact@hopeit.com.ar>, Pablo Canto <contact@hopeit.com.ar>
|
|
8
6
|
License: Apache 2
|
|
7
|
+
Project-URL: Homepage, https://github.com/hopeit-git/hopeit.engine
|
|
9
8
|
Project-URL: CI: GitHub Actions, https://github.com/hopeit-git/hopeit.engine/actions?query=workflow
|
|
10
9
|
Project-URL: Docs: RTD, https://hopeitengine.readthedocs.io/en/latest/
|
|
11
10
|
Project-URL: GitHub: issues, https://github.com/hopeit-git/hopeit.engine/issues
|
|
@@ -24,8 +23,8 @@ Classifier: Topic :: Internet :: WWW/HTTP
|
|
|
24
23
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
24
|
Classifier: Framework :: AsyncIO
|
|
26
25
|
Requires-Python: >=3.9
|
|
27
|
-
Description-Content-Type: text/
|
|
28
|
-
Requires-Dist: hopeit.engine[fs-storage]==0.25.
|
|
26
|
+
Description-Content-Type: text/plain
|
|
27
|
+
Requires-Dist: hopeit.engine[fs-storage]==0.25.2
|
|
29
28
|
Requires-Dist: pandas
|
|
30
29
|
Requires-Dist: numpy
|
|
31
30
|
Provides-Extra: pyarrow
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools >= 64", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "hopeit.dataframes"
|
|
7
|
+
description = "Hopeit Engine Dataframes Toolkit"
|
|
8
|
+
dynamic = ["version", "readme", "dependencies", "optional-dependencies"]
|
|
9
|
+
license = { text = "Apache 2" }
|
|
10
|
+
authors = [
|
|
11
|
+
{ name = "Leo Smerling", email = "contact@hopeit.com.ar" },
|
|
12
|
+
{ name = "Pablo Canto", email = "contact@hopeit.com.ar" },
|
|
13
|
+
]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"License :: OSI Approved :: Apache Software License",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"Programming Language :: Python",
|
|
18
|
+
"Programming Language :: Python :: 3.9",
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Development Status :: 4 - Beta",
|
|
22
|
+
"Operating System :: POSIX :: Linux",
|
|
23
|
+
"Operating System :: MacOS :: MacOS X",
|
|
24
|
+
"Operating System :: Microsoft :: Windows",
|
|
25
|
+
"Topic :: Internet :: WWW/HTTP",
|
|
26
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
27
|
+
"Framework :: AsyncIO",
|
|
28
|
+
]
|
|
29
|
+
requires-python = ">=3.9"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
"Homepage" = "https://github.com/hopeit-git/hopeit.engine"
|
|
34
|
+
"CI: GitHub Actions" = "https://github.com/hopeit-git/hopeit.engine/actions?query=workflow"
|
|
35
|
+
"Docs: RTD" = "https://hopeitengine.readthedocs.io/en/latest/"
|
|
36
|
+
"GitHub: issues" = "https://github.com/hopeit-git/hopeit.engine/issues"
|
|
37
|
+
"GitHub: repo" = "https://github.com/hopeit-git/hopeit.engine"
|
|
38
|
+
|
|
39
|
+
[tool.setuptools]
|
|
40
|
+
include-package-data = true
|
|
41
|
+
|
|
42
|
+
[tool.setuptools.packages.find]
|
|
43
|
+
where = ["src"]
|
|
44
|
+
|
|
45
|
+
[tool.setuptools.package-data]
|
|
46
|
+
"hopeit.dataframes" = ["py.typed"]
|
|
47
|
+
"hopeit.dataframes.serialization" = ["py.typed"]
|
|
48
|
+
"hopeit.dataframes.setup" = ["py.typed"]
|
|
49
|
+
|
|
50
|
+
[tool.setuptools.dynamic]
|
|
51
|
+
readme = { file = ["README.md"], content-type = "text/plain" }
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from setuptools import setup
|
|
2
|
+
from os import environ
|
|
3
|
+
|
|
4
|
+
version = {}
|
|
5
|
+
try:
|
|
6
|
+
with open("../../../engine/src/hopeit/server/version.py") as fp:
|
|
7
|
+
exec(fp.read(), version)
|
|
8
|
+
ENGINE_VERSION = version["ENGINE_VERSION"]
|
|
9
|
+
except FileNotFoundError:
|
|
10
|
+
ENGINE_VERSION = environ.get("ENGINE_VERSION")
|
|
11
|
+
|
|
12
|
+
if not ENGINE_VERSION:
|
|
13
|
+
raise RuntimeError("ENGINE_VERSION is not specified.")
|
|
14
|
+
|
|
15
|
+
setup(
|
|
16
|
+
version=ENGINE_VERSION,
|
|
17
|
+
install_requires=[
|
|
18
|
+
f"hopeit.engine[fs-storage]=={ENGINE_VERSION}",
|
|
19
|
+
"pandas",
|
|
20
|
+
"numpy",
|
|
21
|
+
],
|
|
22
|
+
extras_require={
|
|
23
|
+
"pyarrow": ["pyarrow"],
|
|
24
|
+
},
|
|
25
|
+
)
|
|
@@ -118,9 +118,9 @@ class DataFrames(Generic[DataFrameT, DataObject]):
|
|
|
118
118
|
return datatype._from_dataobjects(dataobjects) # type: ignore # pylint: disable=protected-access
|
|
119
119
|
|
|
120
120
|
@staticmethod
|
|
121
|
-
def to_dataobjects(obj: DataFrameT) -> List[DataObject]:
|
|
121
|
+
def to_dataobjects(obj: DataFrameT, *, normalize_null_values: bool = False) -> List[DataObject]:
|
|
122
122
|
"""Converts `@dataframe` object to a list of standard `@dataobject`s"""
|
|
123
|
-
return obj._to_dataobjects() # type: ignore # pylint: disable=protected-access
|
|
123
|
+
return obj._to_dataobjects(normalize_null_values) # type: ignore # pylint: disable=protected-access
|
|
124
124
|
|
|
125
125
|
@staticmethod
|
|
126
126
|
def from_array(datatype: Type[DataFrameT], array: np.ndarray) -> DataFrameT:
|
|
@@ -4,8 +4,7 @@ DataFrames type abstractions.
|
|
|
4
4
|
|
|
5
5
|
import dataclasses
|
|
6
6
|
from datetime import date, datetime, timezone
|
|
7
|
-
from
|
|
8
|
-
from typing import Any, Callable, Dict, Generic, Iterator, List, Type, TypeVar
|
|
7
|
+
from typing import Any, Callable, Dict, Generic, Iterator, List, Type, TypeVar, Union
|
|
9
8
|
|
|
10
9
|
import numpy as np
|
|
11
10
|
import pandas as pd
|
|
@@ -20,6 +19,7 @@ from hopeit.dataobjects import (
|
|
|
20
19
|
fields,
|
|
21
20
|
)
|
|
22
21
|
from hopeit.dataobjects.payload import Payload
|
|
22
|
+
from pydantic_core import PydanticUndefined
|
|
23
23
|
|
|
24
24
|
DataFrameT = TypeVar("DataFrameT")
|
|
25
25
|
|
|
@@ -31,19 +31,65 @@ class DataFrameMetadata:
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
# Functions to do type coercion
|
|
34
|
-
def _series_to_int(x: pd.Series) -> pd.Series:
|
|
34
|
+
def _series_to_int(field_name: str, x: pd.Series) -> pd.Series:
|
|
35
|
+
if x.isnull().values.any(): # type: ignore[union-attr]
|
|
36
|
+
raise ValueError(f"Field `{field_name}` is not nullable")
|
|
35
37
|
return x.astype(np.int64)
|
|
36
38
|
|
|
37
39
|
|
|
38
|
-
def
|
|
40
|
+
def _series_to_bool(field_name: str, x: pd.Series) -> pd.Series:
|
|
41
|
+
if x.isnull().values.any(): # type: ignore[union-attr]
|
|
42
|
+
raise ValueError(f"Field `{field_name}` is not nullable")
|
|
43
|
+
return x.astype(bool)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _series_to_float(field_name: str, x: pd.Series) -> pd.Series:
|
|
47
|
+
if x.isnull().values.any(): # type: ignore[union-attr]
|
|
48
|
+
raise ValueError(f"Field `{field_name}` is not nullable")
|
|
39
49
|
return x.astype(np.float64)
|
|
40
50
|
|
|
41
51
|
|
|
42
|
-
def _series_to_str(x: pd.Series) -> pd.Series:
|
|
52
|
+
def _series_to_str(field_name: str, x: pd.Series) -> pd.Series:
|
|
53
|
+
if x.isnull().values.any(): # type: ignore[union-attr]
|
|
54
|
+
raise ValueError(f"Field `{field_name}` is not nullable")
|
|
43
55
|
return x.astype(str)
|
|
44
56
|
|
|
45
57
|
|
|
46
|
-
|
|
58
|
+
# Functions to do type coercion
|
|
59
|
+
def _series_to_int_nullable(_field_name: str, x: pd.Series) -> pd.Series:
|
|
60
|
+
return x.dropna().astype(np.int64)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _series_to_bool_nullable(_field_name: str, x: pd.Series) -> pd.Series:
|
|
64
|
+
return x.dropna().astype(bool)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _series_to_float_nullable(_field_name: str, x: pd.Series) -> pd.Series:
|
|
68
|
+
return x.dropna().astype(np.float64)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _series_to_str_nullable(_field_name: str, x: pd.Series) -> pd.Series:
|
|
72
|
+
return x.dropna().astype(str)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _series_to_datetime(field_name: str, x: pd.Series) -> pd.Series:
|
|
76
|
+
if x.isnull().values.any(): # type: ignore[union-attr]
|
|
77
|
+
raise ValueError(f"Field `{field_name}` is not nullable")
|
|
78
|
+
return pd.to_datetime(x)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _series_to_utc_datetime(field_name: str, x: pd.Series) -> pd.Series:
|
|
82
|
+
if x.isnull().values.any(): # type: ignore[union-attr]
|
|
83
|
+
raise ValueError(f"Field `{field_name}` is not nullable")
|
|
84
|
+
return pd.to_datetime(x, utc=True)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _series_to_datetime_nullable(_field_name: str, x: pd.Series) -> pd.Series:
|
|
88
|
+
return pd.to_datetime(x.dropna())
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _series_to_utc_datetime_nullable(_field_name: str, x: pd.Series) -> pd.Series:
|
|
92
|
+
return pd.to_datetime(x.dropna(), utc=True)
|
|
47
93
|
|
|
48
94
|
|
|
49
95
|
class DataFrameMixin(Generic[DataFrameT, DataObject]):
|
|
@@ -53,15 +99,24 @@ class DataFrameMixin(Generic[DataFrameT, DataObject]):
|
|
|
53
99
|
Do not use this class directly, instead use `@dataframe` class decorator.
|
|
54
100
|
"""
|
|
55
101
|
|
|
102
|
+
DataFrameValueType = Union[int, bool, float, str, date, datetime, None]
|
|
103
|
+
|
|
56
104
|
DATATYPE_MAPPING = {
|
|
57
105
|
int: _series_to_int,
|
|
106
|
+
bool: _series_to_bool,
|
|
58
107
|
float: _series_to_float,
|
|
59
108
|
str: _series_to_str,
|
|
60
|
-
date:
|
|
109
|
+
date: _series_to_datetime,
|
|
61
110
|
datetime: _series_to_utc_datetime,
|
|
111
|
+
Union[int, None]: _series_to_int_nullable,
|
|
112
|
+
Union[bool, None]: _series_to_bool_nullable,
|
|
113
|
+
Union[float, None]: _series_to_float_nullable,
|
|
114
|
+
Union[str, None]: _series_to_str_nullable,
|
|
115
|
+
Union[date, None]: _series_to_datetime_nullable,
|
|
116
|
+
Union[datetime, None]: _series_to_utc_datetime_nullable,
|
|
62
117
|
}
|
|
63
118
|
|
|
64
|
-
def __init__(self) -> None:
|
|
119
|
+
def __init__(self, **series: pd.Series) -> None:
|
|
65
120
|
# Fields added here only to allow mypy to provide correct type hints
|
|
66
121
|
self.__data_object__: Dict[str, Any] = {}
|
|
67
122
|
self.__dataframe__: DataFrameMetadata = None # type: ignore
|
|
@@ -104,7 +159,17 @@ class DataFrameMixin(Generic[DataFrameT, DataObject]):
|
|
|
104
159
|
def __getitem__(self, key) -> "DataFrameT":
|
|
105
160
|
return self._from_df(self.__df[key])
|
|
106
161
|
|
|
107
|
-
def
|
|
162
|
+
def _normalize_null_values(
|
|
163
|
+
self, value: Union[DataFrameValueType, pd.Timestamp]
|
|
164
|
+
) -> DataFrameValueType:
|
|
165
|
+
return None if pd.isnull(value) else value
|
|
166
|
+
|
|
167
|
+
def _to_dataobjects(self, normalize_null_values: bool) -> List[DataObject]:
|
|
168
|
+
if normalize_null_values:
|
|
169
|
+
return [
|
|
170
|
+
self.DataObject(**{k: self._normalize_null_values(v) for k, v in fields.items()})
|
|
171
|
+
for fields in self.__df.to_dict(orient="records")
|
|
172
|
+
]
|
|
108
173
|
return [self.DataObject(**fields) for fields in self.__df.to_dict(orient="records")]
|
|
109
174
|
|
|
110
175
|
def event_id(self, *args, **kwargs) -> str:
|
|
@@ -128,9 +193,28 @@ class DataFrameMixin(Generic[DataFrameT, DataObject]):
|
|
|
128
193
|
else:
|
|
129
194
|
object.__setattr__(self, name, value)
|
|
130
195
|
|
|
131
|
-
def
|
|
196
|
+
def _get_series(
|
|
197
|
+
self,
|
|
198
|
+
df: pd.DataFrame,
|
|
199
|
+
field_name: str,
|
|
200
|
+
field_info: FieldInfo,
|
|
201
|
+
) -> pd.Series:
|
|
202
|
+
try:
|
|
203
|
+
return df[field_name]
|
|
204
|
+
except KeyError:
|
|
205
|
+
default_value = field_info.get_default()
|
|
206
|
+
if default_value is not PydanticUndefined:
|
|
207
|
+
return pd.Series([default_value] * len(df))
|
|
208
|
+
raise
|
|
209
|
+
|
|
210
|
+
def _coerce_datatypes(
|
|
211
|
+
self,
|
|
212
|
+
df: pd.DataFrame,
|
|
213
|
+
) -> Dict[str, pd.Series]:
|
|
132
214
|
return {
|
|
133
|
-
name: self.DATATYPE_MAPPING[field.annotation](
|
|
215
|
+
name: self.DATATYPE_MAPPING[field.annotation]( # type: ignore[index, operator]
|
|
216
|
+
name, self._get_series(df, name, field)
|
|
217
|
+
)
|
|
134
218
|
for name, field in self.__dataframe__.fields.items()
|
|
135
219
|
}
|
|
136
220
|
|
|
@@ -181,17 +265,12 @@ def dataframe(
|
|
|
181
265
|
setattr(cls, "event_id", StreamEventMixin.event_id)
|
|
182
266
|
setattr(cls, "event_ts", StreamEventMixin.event_ts)
|
|
183
267
|
|
|
184
|
-
def set_fields_optional(cls):
|
|
185
|
-
for _, field in fields(cls).items():
|
|
186
|
-
field.default = None
|
|
187
|
-
|
|
188
268
|
def wrap(cls) -> Type[DataFrameMixin]:
|
|
189
269
|
if hasattr(cls, "__dataframe__"):
|
|
190
270
|
return cls
|
|
191
271
|
add_dataframe_metadata(cls)
|
|
192
272
|
amended_class = add_dataframe_mixin(cls)
|
|
193
273
|
add_dataobject_annotations(amended_class, unsafe, validate, schema)
|
|
194
|
-
set_fields_optional(amended_class)
|
|
195
274
|
return amended_class
|
|
196
275
|
|
|
197
276
|
if decorated_class is None:
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
"""Dataset objects definition, used as a result of serialized dataframes"""
|
|
2
2
|
|
|
3
3
|
from importlib import import_module
|
|
4
|
-
from typing import Generic, Type, TypeVar
|
|
4
|
+
from typing import Any, Dict, Generic, Type, TypeVar
|
|
5
5
|
|
|
6
|
-
from hopeit.dataobjects import dataclass, dataobject
|
|
6
|
+
from hopeit.dataobjects import dataclass, dataobject, field
|
|
7
7
|
|
|
8
8
|
DataFrameT = TypeVar("DataFrameT")
|
|
9
9
|
|
|
10
10
|
|
|
11
|
+
class DatasetLoadError(Exception):
|
|
12
|
+
pass
|
|
13
|
+
|
|
14
|
+
|
|
11
15
|
@dataobject
|
|
12
16
|
@dataclass
|
|
13
17
|
class Dataset(Generic[DataFrameT]):
|
|
@@ -17,9 +21,17 @@ class Dataset(Generic[DataFrameT]):
|
|
|
17
21
|
partition_key: str
|
|
18
22
|
key: str
|
|
19
23
|
datatype: str
|
|
24
|
+
schema: Dict[str, Any] = field(default_factory=dict)
|
|
20
25
|
|
|
21
26
|
async def load(self) -> DataFrameT:
|
|
22
|
-
|
|
27
|
+
try:
|
|
28
|
+
dataframe = await self.__storage.load(self) # type: ignore[attr-defined]
|
|
29
|
+
return dataframe
|
|
30
|
+
except (RuntimeError, IOError, KeyError) as e:
|
|
31
|
+
raise DatasetLoadError(
|
|
32
|
+
f"Error {type(e).__name__}: {e} loading dataset of type {self.datatype} "
|
|
33
|
+
f"at location {self.partition_key}/{self.key}"
|
|
34
|
+
) from e
|
|
23
35
|
|
|
24
36
|
@classmethod
|
|
25
37
|
async def save(cls, dataframe: DataFrameT) -> "Dataset[DataFrameT]":
|
{hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/serialization/files.py
RENAMED
|
@@ -6,6 +6,7 @@ from typing import Generic, Optional, Type, TypeVar
|
|
|
6
6
|
from uuid import uuid4
|
|
7
7
|
|
|
8
8
|
import pandas as pd
|
|
9
|
+
from pydantic import TypeAdapter
|
|
9
10
|
|
|
10
11
|
try:
|
|
11
12
|
import pyarrow # type: ignore # noqa # pylint: disable=unused-import
|
|
@@ -53,6 +54,7 @@ class DatasetFileStorage(Generic[DataFrameT]):
|
|
|
53
54
|
partition_key=partition_key,
|
|
54
55
|
key=key,
|
|
55
56
|
datatype=f"{datatype.__module__}.{datatype.__qualname__}",
|
|
57
|
+
schema=TypeAdapter(datatype).json_schema(),
|
|
56
58
|
)
|
|
57
59
|
|
|
58
60
|
async def load(self, dataset: Dataset) -> EventPayloadType:
|
|
File without changes
|
|
File without changes
|
{hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit.dataframes.egg-info/PKG-INFO
RENAMED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: hopeit.dataframes
|
|
3
|
-
Version: 0.25.
|
|
3
|
+
Version: 0.25.2
|
|
4
4
|
Summary: Hopeit Engine Dataframes Toolkit
|
|
5
|
-
|
|
6
|
-
Author: Leo Smerling and Pablo Canto
|
|
7
|
-
Author-email: contact@hopeit.com.ar
|
|
5
|
+
Author-email: Leo Smerling <contact@hopeit.com.ar>, Pablo Canto <contact@hopeit.com.ar>
|
|
8
6
|
License: Apache 2
|
|
7
|
+
Project-URL: Homepage, https://github.com/hopeit-git/hopeit.engine
|
|
9
8
|
Project-URL: CI: GitHub Actions, https://github.com/hopeit-git/hopeit.engine/actions?query=workflow
|
|
10
9
|
Project-URL: Docs: RTD, https://hopeitengine.readthedocs.io/en/latest/
|
|
11
10
|
Project-URL: GitHub: issues, https://github.com/hopeit-git/hopeit.engine/issues
|
|
@@ -24,8 +23,8 @@ Classifier: Topic :: Internet :: WWW/HTTP
|
|
|
24
23
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
24
|
Classifier: Framework :: AsyncIO
|
|
26
25
|
Requires-Python: >=3.9
|
|
27
|
-
Description-Content-Type: text/
|
|
28
|
-
Requires-Dist: hopeit.engine[fs-storage]==0.25.
|
|
26
|
+
Description-Content-Type: text/plain
|
|
27
|
+
Requires-Dist: hopeit.engine[fs-storage]==0.25.2
|
|
29
28
|
Requires-Dist: pandas
|
|
30
29
|
Requires-Dist: numpy
|
|
31
30
|
Provides-Extra: pyarrow
|
{hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit.dataframes.egg-info/SOURCES.txt
RENAMED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
README.md
|
|
2
|
+
pyproject.toml
|
|
2
3
|
setup.py
|
|
3
4
|
src/hopeit.dataframes.egg-info/PKG-INFO
|
|
4
5
|
src/hopeit.dataframes.egg-info/SOURCES.txt
|
|
@@ -11,6 +12,8 @@ src/hopeit/dataframes/py.typed
|
|
|
11
12
|
src/hopeit/dataframes/serialization/__init__.py
|
|
12
13
|
src/hopeit/dataframes/serialization/dataset.py
|
|
13
14
|
src/hopeit/dataframes/serialization/files.py
|
|
15
|
+
src/hopeit/dataframes/serialization/py.typed
|
|
14
16
|
src/hopeit/dataframes/serialization/settings.py
|
|
15
17
|
src/hopeit/dataframes/setup/__init__.py
|
|
16
|
-
src/hopeit/dataframes/setup/dataframes.py
|
|
18
|
+
src/hopeit/dataframes/setup/dataframes.py
|
|
19
|
+
src/hopeit/dataframes/setup/py.typed
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import setuptools
|
|
2
|
-
|
|
3
|
-
version = {}
|
|
4
|
-
with open("../../../engine/src/hopeit/server/version.py") as fp:
|
|
5
|
-
exec(fp.read(), version)
|
|
6
|
-
|
|
7
|
-
setuptools.setup(
|
|
8
|
-
name="hopeit.dataframes",
|
|
9
|
-
version=version["ENGINE_VERSION"],
|
|
10
|
-
description="Hopeit Engine Dataframes Toolkit",
|
|
11
|
-
license="Apache 2",
|
|
12
|
-
long_description=open("README.md").read(),
|
|
13
|
-
long_description_content_type="text/markdown",
|
|
14
|
-
author="Leo Smerling and Pablo Canto",
|
|
15
|
-
author_email="contact@hopeit.com.ar",
|
|
16
|
-
url="https://github.com/hopeit-git/hopeit.engine",
|
|
17
|
-
classifiers=[
|
|
18
|
-
"License :: OSI Approved :: Apache Software License",
|
|
19
|
-
"Intended Audience :: Developers",
|
|
20
|
-
"Programming Language :: Python",
|
|
21
|
-
"Programming Language :: Python :: 3.9",
|
|
22
|
-
"Programming Language :: Python :: 3.10",
|
|
23
|
-
"Programming Language :: Python :: 3.11",
|
|
24
|
-
"Development Status :: 4 - Beta",
|
|
25
|
-
"Operating System :: POSIX :: Linux",
|
|
26
|
-
"Operating System :: MacOS :: MacOS X",
|
|
27
|
-
"Operating System :: Microsoft :: Windows",
|
|
28
|
-
"Topic :: Internet :: WWW/HTTP",
|
|
29
|
-
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
30
|
-
"Framework :: AsyncIO",
|
|
31
|
-
],
|
|
32
|
-
project_urls={
|
|
33
|
-
"CI: GitHub Actions": "https://github.com/hopeit-git/hopeit.engine/actions?query=workflow", # noqa
|
|
34
|
-
"Docs: RTD": "https://hopeitengine.readthedocs.io/en/latest/",
|
|
35
|
-
"GitHub: issues": "https://github.com/hopeit-git/hopeit.engine/issues",
|
|
36
|
-
"GitHub: repo": "https://github.com/hopeit-git/hopeit.engine",
|
|
37
|
-
},
|
|
38
|
-
package_dir={"": "src"},
|
|
39
|
-
packages=[
|
|
40
|
-
"hopeit.dataframes",
|
|
41
|
-
"hopeit.dataframes.serialization",
|
|
42
|
-
"hopeit.dataframes.setup",
|
|
43
|
-
],
|
|
44
|
-
include_package_data=True,
|
|
45
|
-
package_data={
|
|
46
|
-
"hopeit.dataframes": ["py.typed"],
|
|
47
|
-
},
|
|
48
|
-
python_requires=">=3.9",
|
|
49
|
-
install_requires=[
|
|
50
|
-
f"hopeit.engine[fs-storage]=={version['ENGINE_VERSION']}",
|
|
51
|
-
"pandas",
|
|
52
|
-
"numpy",
|
|
53
|
-
],
|
|
54
|
-
extras_require={
|
|
55
|
-
"pyarrow": ["pyarrow"],
|
|
56
|
-
},
|
|
57
|
-
entry_points={},
|
|
58
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit/dataframes/setup/dataframes.py
RENAMED
|
File without changes
|
|
File without changes
|
{hopeit_dataframes-0.25.0b9 → hopeit_dataframes-0.25.2}/src/hopeit.dataframes.egg-info/top_level.txt
RENAMED
|
File without changes
|