sdata 0.25.2__tar.gz → 0.25.3__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.
Files changed (107) hide show
  1. {sdata-0.25.2/sdata.egg-info → sdata-0.25.3}/PKG-INFO +1 -1
  2. {sdata-0.25.2 → sdata-0.25.3}/sdata/__init__.py +2 -1
  3. sdata-0.25.3/sdata/base.py +131 -0
  4. {sdata-0.25.2 → sdata-0.25.3/sdata.egg-info}/PKG-INFO +1 -1
  5. {sdata-0.25.2 → sdata-0.25.3}/sdata.egg-info/SOURCES.txt +1 -0
  6. {sdata-0.25.2 → sdata-0.25.3}/LICENSE-MIT +0 -0
  7. {sdata-0.25.2 → sdata-0.25.3}/MANIFEST.in +0 -0
  8. {sdata-0.25.2 → sdata-0.25.3}/README.md +0 -0
  9. {sdata-0.25.2 → sdata-0.25.3}/pyproject.toml +0 -0
  10. {sdata-0.25.2 → sdata-0.25.3}/sdata/blob.py +0 -0
  11. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/__init__.py +0 -0
  12. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/attrdict/__init__.py +0 -0
  13. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/attrdict/default.py +0 -0
  14. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/attrdict/dictionary.py +0 -0
  15. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/attrdict/mapping.py +0 -0
  16. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/attrdict/merge.py +0 -0
  17. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/attrdict/mixins.py +0 -0
  18. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/__init__.py +0 -0
  19. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_common.py +0 -0
  20. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_dump.py +0 -0
  21. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_exceptions.py +0 -0
  22. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_exif.py +0 -0
  23. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_insert.py +0 -0
  24. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_load.py +0 -0
  25. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_remove.py +0 -0
  26. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_transplant.py +0 -0
  27. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/_webp.py +0 -0
  28. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/piexif/helper.py +0 -0
  29. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/ranger/__init__.py +0 -0
  30. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/ranger/collections/__init__.py +0 -0
  31. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/ranger/collections/rangebucketmap.py +0 -0
  32. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/ranger/collections/rangemap.py +0 -0
  33. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/ranger/collections/rangeset.py +0 -0
  34. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/ranger/range/__init__.py +0 -0
  35. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/ranger/range/cut.py +0 -0
  36. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/ranger/range/range.py +0 -0
  37. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/semver.py +0 -0
  38. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/simple_graph_db/LICENSE +0 -0
  39. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/simple_graph_db/__init__.py +0 -0
  40. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/simple_graph_db/database.py +0 -0
  41. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/simple_graph_db/schema.sql +0 -0
  42. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/sobol_seq.py +0 -0
  43. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/sortedcontainers/LICENSE +0 -0
  44. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/sortedcontainers/__init__.py +0 -0
  45. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/sortedcontainers/sorteddict.py +0 -0
  46. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/sortedcontainers/sortedlist.py +0 -0
  47. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/sortedcontainers/sortedset.py +0 -0
  48. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/sqlitedict.py +0 -0
  49. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/timeflake/__init__.py +0 -0
  50. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/timeflake/flake.py +0 -0
  51. {sdata-0.25.2 → sdata-0.25.3}/sdata/contrib/timeflake/utils.py +0 -0
  52. {sdata-0.25.2 → sdata-0.25.3}/sdata/data.py +0 -0
  53. {sdata-0.25.2 → sdata-0.25.3}/sdata/doe.py +0 -0
  54. {sdata-0.25.2 → sdata-0.25.3}/sdata/experiments/__init__.py +0 -0
  55. {sdata-0.25.2 → sdata-0.25.3}/sdata/experiments/ks2.py +0 -0
  56. {sdata-0.25.2 → sdata-0.25.3}/sdata/experiments/lapshear.py +0 -0
  57. {sdata-0.25.2 → sdata-0.25.3}/sdata/experiments/material.py +0 -0
  58. {sdata-0.25.2 → sdata-0.25.3}/sdata/image.py +0 -0
  59. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/__init__.py +0 -0
  60. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/db.py +0 -0
  61. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/hashtree.py +0 -0
  62. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/hdf.py +0 -0
  63. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/isomme.py +0 -0
  64. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/json1sqlitestore.py +0 -0
  65. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/jsonsqlitestore.py +0 -0
  66. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/owncloudfs.py +0 -0
  67. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/pgp.py +0 -0
  68. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/pud.py +0 -0
  69. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/simple_signature.py +0 -0
  70. {sdata-0.25.2 → sdata-0.25.3}/sdata/iolib/vault.py +0 -0
  71. {sdata-0.25.2 → sdata-0.25.3}/sdata/metadata.py +0 -0
  72. {sdata-0.25.2 → sdata-0.25.3}/sdata/node.py +0 -0
  73. {sdata-0.25.2 → sdata-0.25.3}/sdata/parameter.py +0 -0
  74. {sdata-0.25.2 → sdata-0.25.3}/sdata/parameters_deprecated.py +0 -0
  75. {sdata-0.25.2 → sdata-0.25.3}/sdata/suuid.py +0 -0
  76. {sdata-0.25.2 → sdata-0.25.3}/sdata/timestamp.py +0 -0
  77. {sdata-0.25.2 → sdata-0.25.3}/sdata/tools.py +0 -0
  78. {sdata-0.25.2 → sdata-0.25.3}/sdata/workbook.py +0 -0
  79. {sdata-0.25.2 → sdata-0.25.3}/sdata.egg-info/dependency_links.txt +0 -0
  80. {sdata-0.25.2 → sdata-0.25.3}/sdata.egg-info/requires.txt +0 -0
  81. {sdata-0.25.2 → sdata-0.25.3}/sdata.egg-info/top_level.txt +0 -0
  82. {sdata-0.25.2 → sdata-0.25.3}/setup.cfg +0 -0
  83. {sdata-0.25.2 → sdata-0.25.3}/setup.py +0 -0
  84. {sdata-0.25.2 → sdata-0.25.3}/tests/__init__.py +0 -0
  85. {sdata-0.25.2 → sdata-0.25.3}/tests/iolib/__init__.py +0 -0
  86. {sdata-0.25.2 → sdata-0.25.3}/tests/iolib/pud/__init__.py +0 -0
  87. {sdata-0.25.2 → sdata-0.25.3}/tests/iolib/pud/test_pud.py +0 -0
  88. {sdata-0.25.2 → sdata-0.25.3}/tests/iolib/test_hasttree.py +0 -0
  89. {sdata-0.25.2 → sdata-0.25.3}/tests/iolib/test_hdf.py +0 -0
  90. {sdata-0.25.2 → sdata-0.25.3}/tests/iolib/test_jsonsqlitestore.py +0 -0
  91. {sdata-0.25.2 → sdata-0.25.3}/tests/test_attribute.py +0 -0
  92. {sdata-0.25.2 → sdata-0.25.3}/tests/test_blob.py +0 -0
  93. {sdata-0.25.2 → sdata-0.25.3}/tests/test_data.py +0 -0
  94. {sdata-0.25.2 → sdata-0.25.3}/tests/test_image.py +0 -0
  95. {sdata-0.25.2 → sdata-0.25.3}/tests/test_io.py +0 -0
  96. {sdata-0.25.2 → sdata-0.25.3}/tests/test_ks2.py +0 -0
  97. {sdata-0.25.2 → sdata-0.25.3}/tests/test_metadata.py +0 -0
  98. {sdata-0.25.2 → sdata-0.25.3}/tests/test_parameter.py +0 -0
  99. {sdata-0.25.2 → sdata-0.25.3}/tests/test_sqlite.py +0 -0
  100. {sdata-0.25.2 → sdata-0.25.3}/tests/test_suuid.py +0 -0
  101. {sdata-0.25.2 → sdata-0.25.3}/tests/test_table.py +0 -0
  102. {sdata-0.25.2 → sdata-0.25.3}/tests/test_testprogram.py +0 -0
  103. {sdata-0.25.2 → sdata-0.25.3}/tests/test_timeflake.py +0 -0
  104. {sdata-0.25.2 → sdata-0.25.3}/tests/test_timestamp.py +0 -0
  105. {sdata-0.25.2 → sdata-0.25.3}/tests/test_tools.py +0 -0
  106. {sdata-0.25.2 → sdata-0.25.3}/tests/test_vault.py +0 -0
  107. {sdata-0.25.2 → sdata-0.25.3}/tests/test_workbook.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sdata
3
- Version: 0.25.2
3
+ Version: 0.25.3
4
4
  Summary: a structured data format
5
5
  Home-page: https://github.com/lepy/sdata
6
6
  Author: Lepy
@@ -1,7 +1,7 @@
1
1
  # -*-coding: utf-8-*-
2
2
  from __future__ import division
3
3
 
4
- __version__ = '0.25.2'
4
+ __version__ = '0.25.3'
5
5
  __revision__ = None
6
6
  __version_info__ = tuple([int(num) for num in __version__.split('.')])
7
7
 
@@ -20,6 +20,7 @@ import pandas
20
20
 
21
21
  from sdata.metadata import Metadata, Attribute
22
22
  from sdata.data import Data
23
+ from sdata.base import Base
23
24
  from sdata.blob import Blob
24
25
  from sdata.suuid import SUUID
25
26
  from sdata.image import Image
@@ -0,0 +1,131 @@
1
+ import sdata
2
+ from sdata import __version__
3
+ from sdata.suuid import SUUID
4
+ from sdata.metadata import Metadata, Attribute, extract_name_unit
5
+ from sdata.timestamp import now_utc_str, now_local_str, today_str
6
+ import uuid
7
+ import copy
8
+
9
+
10
+ class Base:
11
+
12
+ SDATA_VERSION = "!sdata_version"
13
+ SDATA_NAME = "!sdata_name"
14
+ SDATA_SNAME = "!sdata_sname"
15
+ SDATA_UUID = "!sdata_uuid"
16
+ SDATA_SUUID = "!sdata_suuid"
17
+ SDATA_CTIME = "!sdata_ctime"
18
+ SDATA_MTIME = "!sdata_mtime"
19
+ SDATA_PARENT = "!sdata_parent"
20
+ SDATA_CLASS = "!sdata_class"
21
+ SDATA_PROJECT = "!sdata_project"
22
+ SDATA_URL = "!sdata_url"
23
+ SDATA_COLUMN = "!sdata_column"
24
+
25
+ SDATA_ATTRIBUTES = [SDATA_VERSION, SDATA_NAME, SDATA_UUID, SDATA_SUUID, SDATA_CLASS, SDATA_PARENT, SDATA_PROJECT,
26
+ SDATA_CTIME, SDATA_MTIME, SDATA_URL]
27
+
28
+ def __init__(self, **kwargs):
29
+ name = kwargs.get("name", "N.N.")
30
+ suuid = SUUID.from_name(class_name=self.__class__.__name__, name=name)
31
+ self.metadata = Metadata(name=suuid.sname)
32
+ self.metadata.add(self.SDATA_VERSION, __version__, dtype="str", description="sdata package version")
33
+ self.metadata.add(self.SDATA_NAME, name, dtype="str", description="name of the data object")
34
+ self.metadata.add(self.SDATA_SNAME, suuid.sname, dtype="str", description="sname of the data object")
35
+ self.metadata.add(self.SDATA_UUID, suuid.huuid, dtype="str", description="Universally Unique Identifier")
36
+ self.metadata.add(self.SDATA_SUUID, suuid.suuid, dtype="str", description="Super Universally Unique Identifier")
37
+ self.metadata.add(self.SDATA_PARENT, str(kwargs.get("parent", "")), dtype="str", description="suuid of the parent sdata object")
38
+ self.metadata.add(self.SDATA_CLASS, self.__class__.__name__, dtype="str", description="sdata class")
39
+ self.metadata.add(self.SDATA_CTIME, now_utc_str(), dtype="str", description="creation date")
40
+ self.metadata.add(self.SDATA_MTIME, now_utc_str(), dtype="str", description="modification date")
41
+ self.metadata.add(self.SDATA_URL, str(kwargs.get("url", "")), dtype="str", description="url of the data object")
42
+ self.metadata.add(self.SDATA_PROJECT, str(kwargs.get("project", "")), dtype="str", description="project name")
43
+
44
+ @property
45
+ def md(self):
46
+ return self.metadata
47
+
48
+ @property
49
+ def mdf(self):
50
+ return self.metadata.df
51
+
52
+ @property
53
+ def osname(self):
54
+ """:returns: os compatible name (ascii?)"""
55
+ return self.asciiname(self.name)
56
+
57
+ @staticmethod
58
+ def asciiname(name):
59
+ name = copy.copy(name)
60
+ mapper = [("ä", "ae"), ("ö", "oe"), ("ü", "ue"), ("Ä", "Ae"), ("Ö", "Oe"), ("Ü", "Ue"),
61
+ ("ß", "sz"), (" ", "_"), ("/", "_"), ("\\", "_")]
62
+ for k, v in mapper:
63
+ name = name.replace(k, v)
64
+ name = name.lower()
65
+ return name.encode('ascii', 'replace').decode("ascii")
66
+
67
+ def __str__(self):
68
+ return f"({self.__class__.__name__} '{self.name}':{self.uuid})"
69
+
70
+ def _get_uuid(self):
71
+ return self.metadata.get(self.SDATA_UUID).value
72
+ # return self._uuid
73
+
74
+ def _set_uuid(self, value):
75
+ if isinstance(value, str):
76
+ try:
77
+ uuid.UUID(value)
78
+ self.metadata.set_attr(self.SDATA_UUID, uuid.UUID(value).hex)
79
+ except ValueError as exp:
80
+ logger.warning("data.uuid: %s" % exp)
81
+ raise Sdata_Uuid_Exeption("got invalid uuid str '{}'".format(str(value)))
82
+ elif isinstance(value, uuid.UUID):
83
+ self.metadata.set_attr(self.SDATA_UUID, value.hex)
84
+ else:
85
+ logger.error("Data.uuid: invalid uuid '{}'".format(value))
86
+ raise Exception("Data.uuid: invalid uuid '{}'".format(value))
87
+
88
+ uuid = property(fget=_get_uuid, fset=_set_uuid, doc="uuid of the object")
89
+
90
+ def get_uuid(self):
91
+ return uuid.UUID(self.uuid)
92
+
93
+ def _get_suuid(self):
94
+ return self.metadata.get(self.SDATA_SUUID).value
95
+
96
+ def _set_suuid(self, value):
97
+ self.metadata.set_attr(self.SDATA_SUUID, value)
98
+
99
+ suuid = property(fget=_get_suuid, fset=_set_suuid, doc="suuid of the object")
100
+
101
+ def get_suuid(self):
102
+ return sdata.SUUID.from_suuid_sname(self.sname)
103
+
104
+ def _get_sname(self):
105
+ return self.metadata.get(self.SDATA_SNAME).value
106
+
107
+ def _set_sname(self, value):
108
+ self.metadata.set_attr(self.SDATA_SNAME, value)
109
+
110
+ sname = property(fget=_get_sname, fset=_set_sname, doc="sname of the object")
111
+
112
+ def _get_name(self):
113
+ return self.metadata.get(self.SDATA_NAME).value
114
+
115
+ def _set_name(self, value):
116
+ self.metadata.set_attr(self.SDATA_NAME, value)
117
+
118
+ name = property(fget=_get_name, fset=_set_name, doc="name of the object")
119
+
120
+ if __name__ == '__main__':
121
+ class MyFancyClass(Base):
122
+ def __init__(self, **kwargs):
123
+ super().__init__(**kwargs)
124
+ pass
125
+
126
+
127
+ c = MyFancyClass(name="Hello Spencer")
128
+ print(c)
129
+ print(c.osname)
130
+ print(c.mdf)
131
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sdata
3
- Version: 0.25.2
3
+ Version: 0.25.3
4
4
  Summary: a structured data format
5
5
  Home-page: https://github.com/lepy/sdata
6
6
  Author: Lepy
@@ -5,6 +5,7 @@ pyproject.toml
5
5
  setup.cfg
6
6
  setup.py
7
7
  sdata/__init__.py
8
+ sdata/base.py
8
9
  sdata/blob.py
9
10
  sdata/data.py
10
11
  sdata/doe.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes