sdata 0.23.1__tar.gz → 0.23.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 (95) hide show
  1. {sdata-0.23.1/sdata.egg-info → sdata-0.23.3}/PKG-INFO +1 -1
  2. {sdata-0.23.1 → sdata-0.23.3}/sdata/__init__.py +3 -3
  3. {sdata-0.23.1 → sdata-0.23.3}/sdata/data.py +11 -1
  4. {sdata-0.23.1 → sdata-0.23.3}/sdata/experiments/__init__.py +43 -7
  5. {sdata-0.23.1 → sdata-0.23.3}/sdata/metadata.py +14 -2
  6. {sdata-0.23.1 → sdata-0.23.3/sdata.egg-info}/PKG-INFO +1 -1
  7. {sdata-0.23.1 → sdata-0.23.3}/LICENSE-MIT +0 -0
  8. {sdata-0.23.1 → sdata-0.23.3}/MANIFEST.in +0 -0
  9. {sdata-0.23.1 → sdata-0.23.3}/README.md +0 -0
  10. {sdata-0.23.1 → sdata-0.23.3}/sdata/blob.py +0 -0
  11. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/__init__.py +0 -0
  12. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/attrdict/__init__.py +0 -0
  13. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/attrdict/default.py +0 -0
  14. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/attrdict/dictionary.py +0 -0
  15. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/attrdict/mapping.py +0 -0
  16. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/attrdict/merge.py +0 -0
  17. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/attrdict/mixins.py +0 -0
  18. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/__init__.py +0 -0
  19. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_common.py +0 -0
  20. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_dump.py +0 -0
  21. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_exceptions.py +0 -0
  22. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_exif.py +0 -0
  23. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_insert.py +0 -0
  24. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_load.py +0 -0
  25. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_remove.py +0 -0
  26. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_transplant.py +0 -0
  27. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/_webp.py +0 -0
  28. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/piexif/helper.py +0 -0
  29. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/ranger/__init__.py +0 -0
  30. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/ranger/collections/__init__.py +0 -0
  31. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/ranger/collections/rangebucketmap.py +0 -0
  32. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/ranger/collections/rangemap.py +0 -0
  33. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/ranger/collections/rangeset.py +0 -0
  34. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/ranger/range/__init__.py +0 -0
  35. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/ranger/range/cut.py +0 -0
  36. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/ranger/range/range.py +0 -0
  37. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/semver.py +0 -0
  38. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/simple_graph_db/LICENSE +0 -0
  39. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/simple_graph_db/__init__.py +0 -0
  40. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/simple_graph_db/database.py +0 -0
  41. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/simple_graph_db/schema.sql +0 -0
  42. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/sobol_seq.py +0 -0
  43. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/sortedcontainers/LICENSE +0 -0
  44. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/sortedcontainers/__init__.py +0 -0
  45. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/sortedcontainers/sorteddict.py +0 -0
  46. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/sortedcontainers/sortedlist.py +0 -0
  47. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/sortedcontainers/sortedset.py +0 -0
  48. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/sqlitedict.py +0 -0
  49. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/timeflake/__init__.py +0 -0
  50. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/timeflake/flake.py +0 -0
  51. {sdata-0.23.1 → sdata-0.23.3}/sdata/contrib/timeflake/utils.py +0 -0
  52. {sdata-0.23.1 → sdata-0.23.3}/sdata/doe.py +0 -0
  53. {sdata-0.23.1 → sdata-0.23.3}/sdata/experiments/ks2.py +0 -0
  54. {sdata-0.23.1 → sdata-0.23.3}/sdata/experiments/lapshear.py +0 -0
  55. {sdata-0.23.1 → sdata-0.23.3}/sdata/experiments/material.py +0 -0
  56. {sdata-0.23.1 → sdata-0.23.3}/sdata/image.py +0 -0
  57. {sdata-0.23.1 → sdata-0.23.3}/sdata/iolib/__init__.py +0 -0
  58. {sdata-0.23.1 → sdata-0.23.3}/sdata/iolib/db.py +0 -0
  59. {sdata-0.23.1 → sdata-0.23.3}/sdata/iolib/hdf.py +0 -0
  60. {sdata-0.23.1 → sdata-0.23.3}/sdata/iolib/isomme.py +0 -0
  61. {sdata-0.23.1 → sdata-0.23.3}/sdata/iolib/pgp.py +0 -0
  62. {sdata-0.23.1 → sdata-0.23.3}/sdata/iolib/pud.py +0 -0
  63. {sdata-0.23.1 → sdata-0.23.3}/sdata/iolib/simple_signature.py +0 -0
  64. {sdata-0.23.1 → sdata-0.23.3}/sdata/iolib/vault.py +0 -0
  65. {sdata-0.23.1 → sdata-0.23.3}/sdata/suuid.py +0 -0
  66. {sdata-0.23.1 → sdata-0.23.3}/sdata/timestamp.py +0 -0
  67. {sdata-0.23.1 → sdata-0.23.3}/sdata/tools.py +0 -0
  68. {sdata-0.23.1 → sdata-0.23.3}/sdata/workbook.py +0 -0
  69. {sdata-0.23.1 → sdata-0.23.3}/sdata.egg-info/SOURCES.txt +0 -0
  70. {sdata-0.23.1 → sdata-0.23.3}/sdata.egg-info/dependency_links.txt +0 -0
  71. {sdata-0.23.1 → sdata-0.23.3}/sdata.egg-info/requires.txt +0 -0
  72. {sdata-0.23.1 → sdata-0.23.3}/sdata.egg-info/top_level.txt +0 -0
  73. {sdata-0.23.1 → sdata-0.23.3}/setup.cfg +0 -0
  74. {sdata-0.23.1 → sdata-0.23.3}/setup.py +0 -0
  75. {sdata-0.23.1 → sdata-0.23.3}/tests/__init__.py +0 -0
  76. {sdata-0.23.1 → sdata-0.23.3}/tests/iolib/__init__.py +0 -0
  77. {sdata-0.23.1 → sdata-0.23.3}/tests/iolib/pud/__init__.py +0 -0
  78. {sdata-0.23.1 → sdata-0.23.3}/tests/iolib/pud/test_pud.py +0 -0
  79. {sdata-0.23.1 → sdata-0.23.3}/tests/iolib/test_hdf.py +0 -0
  80. {sdata-0.23.1 → sdata-0.23.3}/tests/test_attribute.py +0 -0
  81. {sdata-0.23.1 → sdata-0.23.3}/tests/test_blob.py +0 -0
  82. {sdata-0.23.1 → sdata-0.23.3}/tests/test_data.py +0 -0
  83. {sdata-0.23.1 → sdata-0.23.3}/tests/test_image.py +0 -0
  84. {sdata-0.23.1 → sdata-0.23.3}/tests/test_io.py +0 -0
  85. {sdata-0.23.1 → sdata-0.23.3}/tests/test_ks2.py +0 -0
  86. {sdata-0.23.1 → sdata-0.23.3}/tests/test_metadata.py +0 -0
  87. {sdata-0.23.1 → sdata-0.23.3}/tests/test_sqlite.py +0 -0
  88. {sdata-0.23.1 → sdata-0.23.3}/tests/test_suuid.py +0 -0
  89. {sdata-0.23.1 → sdata-0.23.3}/tests/test_table.py +0 -0
  90. {sdata-0.23.1 → sdata-0.23.3}/tests/test_testprogram.py +0 -0
  91. {sdata-0.23.1 → sdata-0.23.3}/tests/test_timeflake.py +0 -0
  92. {sdata-0.23.1 → sdata-0.23.3}/tests/test_timestamp.py +0 -0
  93. {sdata-0.23.1 → sdata-0.23.3}/tests/test_tools.py +0 -0
  94. {sdata-0.23.1 → sdata-0.23.3}/tests/test_vault.py +0 -0
  95. {sdata-0.23.1 → sdata-0.23.3}/tests/test_workbook.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sdata
3
- Version: 0.23.1
3
+ Version: 0.23.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.23.1'
4
+ __version__ = '0.23.3'
5
5
  __revision__ = None
6
6
  __version_info__ = tuple([int(num) for num in __version__.split('.')])
7
7
 
@@ -14,8 +14,8 @@ import uuid
14
14
  import logging
15
15
 
16
16
  # fix "ValueError: unsupported pickle protocol: 5"
17
- import pickle
18
- pickle.HIGHEST_PROTOCOL = 4
17
+ #import pickle
18
+ #pickle.HIGHEST_PROTOCOL = 4
19
19
  import pandas
20
20
 
21
21
  from sdata.metadata import Metadata, Attribute
@@ -104,6 +104,7 @@ class Data(object):
104
104
  self.metadata.add(self.SDATA_CTIME, now_utc_str(), dtype="str", description="creation date")
105
105
  self.metadata.add(self.SDATA_MTIME, now_utc_str(), dtype="str", description="modification date")
106
106
  self.metadata.add(self.SDATA_URL, "", dtype="str", description="url of the data object")
107
+ self.metadata.add(self.SDATA_PROJECT, "", dtype="str", description="project name")
107
108
 
108
109
  metadata = kwargs.get("metadata")
109
110
  if metadata is not None:
@@ -130,7 +131,8 @@ class Data(object):
130
131
  self.table = kwargs.get("table", None)
131
132
  self._description = ""
132
133
  self.description = kwargs.get("description", "")
133
- self.project = kwargs.get("project", "")
134
+ self.project = kwargs.get("project", "N.N.")
135
+ self.metadata.add(self.SDATA_PROJECT, self.project, dtype="str", description="project name")
134
136
 
135
137
  if (kwargs.get("uuid")=="" or kwargs.get("uuid") is not None) and not self.metadata.get(self.SDATA_UUID).value and kwargs.get("uuid")!="hash":
136
138
  # logger.info("uuid in kwargs")
@@ -656,6 +658,14 @@ class Data(object):
656
658
  def mdf(self):
657
659
  return self.metadata.df
658
660
 
661
+ @property
662
+ def udf(self):
663
+ return self.metadata.udf
664
+
665
+ @property
666
+ def sdf(self):
667
+ return self.metadata.sdf
668
+
659
669
  @property
660
670
  def md(self):
661
671
  return self.metadata
@@ -21,6 +21,21 @@ class TestProgram(Data):
21
21
  """A sdata Testprogram
22
22
 
23
23
  """
24
+ ATTRIBUTES = [
25
+ ['material_name', '', 'str', '-', 'Der Name des Materials.', '', False],
26
+ ['material_norm_name', '', 'str', '-', 'Der normative Name des Materials.', '', False],
27
+ ['material_number_norm', '', 'str', '-', 'Die normative Nummer des Materials.', '', False],
28
+ ['material_manifacturer', '', 'str', '-', 'Die Hersteller des Materials.', '', False],
29
+ ['material_grade', '', 'str', '-', 'Der Zustand des Materials.', '', False],
30
+ ['material_coating', '', 'str', '-', 'Die Beschichtung des Materials.', '', False],
31
+ ['material_density', '', 'float', 'g/cm^3', 'Die Dichte des Materials.', '', False],
32
+ ['material_production_date', '', 'str', '-', 'Das Produktionsdatum des Materials.', '', False],
33
+ ['responsible_person', '', 'str', '-', 'Verantwortlicher des Testprogramms.', '', False],
34
+ ['responsible_person_phone', '', 'str', '-', 'Telefonnummer des Verantwortlichen vom Testprogramms.', '', False],
35
+ ['responsible_person_email', '', 'str', '-', 'Emailadressen des Verantwortlichen vom Testprogramms.', '', False],
36
+ ['responsible_person_organisation', '', 'str', '-', 'Organisation des Verantwortlichen vom Testprogramms.', '', False],
37
+ ['notes', '', 'str', '-', 'Notizen zum Testprogramm.', '', False],
38
+ ]
24
39
 
25
40
  def __init__(self, **kwargs):
26
41
  """
@@ -48,13 +63,26 @@ class TestProgram(Data):
48
63
  if kwargs.get("uuid_testprogram") is not None:
49
64
  self._set_uuid(kwargs.get("uuid_testprogram"))
50
65
 
66
+ for attrlist in self.ATTRIBUTES:
67
+ self.metadata.set_attr(attrlist[0], attrlist[1],
68
+ dtype=attrlist[2],
69
+ unit=attrlist[3],
70
+ description=attrlist[4],
71
+ label=attrlist[5],
72
+ required=attrlist[6])
73
+
74
+
51
75
  def gen_testseries(self, **kwargs):
52
76
  """generate TestSeries instance
53
77
 
54
78
  :param kwargs:
55
79
  :return: TestSeries()
56
80
  """
57
- ts = TestSeries(**kwargs)
81
+ class_name = kwargs.get("class_name", TestSeries)
82
+ if "class_name" in kwargs:
83
+ kwargs.pop("class_name")
84
+
85
+ ts = class_name(**kwargs)
58
86
  ts.project = self.project
59
87
  ts.name_testprogram = self.name_testprogram
60
88
  ts.uuid_testprogram = self.uuid_testprogram
@@ -63,7 +91,7 @@ class TestProgram(Data):
63
91
 
64
92
  @property
65
93
  def longname(self):
66
- return "_".join([self.name_testprogram])
94
+ return "|".join([self.name_testprogram])
67
95
 
68
96
  class TestSeries(TestProgram):
69
97
  """A sdata TestSeries
@@ -75,6 +103,8 @@ class TestSeries(TestProgram):
75
103
 
76
104
  SDATA_TESTTYPE = "!sdata_testtype"
77
105
 
106
+
107
+
78
108
  def __init__(self, **kwargs):
79
109
  """Test Series
80
110
 
@@ -185,7 +215,11 @@ class TestSeries(TestProgram):
185
215
  :param kwargs:
186
216
  :return: Test()
187
217
  """
188
- t = Test(**kwargs)
218
+ class_name = kwargs.get("class_name", Test)
219
+ if "class_name" in kwargs:
220
+ kwargs.pop("class_name")
221
+
222
+ t = class_name(**kwargs)
189
223
  t.name_testprogram = self.name_testprogram
190
224
  t.uuid_testprogram = self.uuid_testprogram
191
225
  t.name_testseries = self.name_testseries
@@ -198,7 +232,7 @@ class TestSeries(TestProgram):
198
232
 
199
233
  @property
200
234
  def longname(self):
201
- return "_".join([self.name_testprogram, self.name])
235
+ return "|".join([self.name_testprogram, self.name])
202
236
 
203
237
 
204
238
  class Test(TestSeries):
@@ -209,14 +243,15 @@ class Test(TestSeries):
209
243
  SDATA_TESTSERIES_NAME = "!sdata_testseries_name"
210
244
  SDATA_TESTSERIES_UUID = "!sdata_testseries_uuid"
211
245
 
246
+
212
247
  def __init__(self, **kwargs):
213
248
  """Test
214
249
 
215
250
  :param kwargs:
216
251
  """
217
252
  TestSeries.__init__(self, **kwargs)
218
- self.metadata.add(name=self.SDATA_TESTSERIES_NAME, value="N.N.", dtype="str")
219
- self.metadata.add(name=self.SDATA_TESTSERIES_UUID, value="", dtype="str")
253
+ self.metadata.add(name=self.SDATA_TESTSERIES_NAME, value="N.N.", dtype="str", description="name of the testseries")
254
+ self.metadata.add(name=self.SDATA_TESTSERIES_UUID, value="", dtype="str", description="uuid of the testseries")
220
255
 
221
256
  if kwargs.get("name") is not None:
222
257
  self._set_name(kwargs.get("name"))
@@ -235,6 +270,7 @@ class Test(TestSeries):
235
270
  # print("uuid_testprogram", kwargs.get("uuid_testprogram"), self._set_uuid_testprogram)
236
271
  self._set_uuid_testprogram(kwargs.get("uuid_testprogram"))
237
272
 
273
+
238
274
  def _get_uuid_testseries(self):
239
275
  return self.metadata.get(self.SDATA_TESTSERIES_UUID).value
240
276
 
@@ -284,7 +320,7 @@ class Test(TestSeries):
284
320
 
285
321
  @property
286
322
  def longname(self):
287
- return "_".join([self.name_testprogram, self.name_testseries, self.name])
323
+ return "|".join([self.name_testprogram, self.name_testseries, self.name])
288
324
 
289
325
 
290
326
 
@@ -59,7 +59,7 @@ class Attribute(object):
59
59
  DTYPES_INV = {v: k for k, v in DTYPES.items()}
60
60
 
61
61
  def __init__(self, name, value, **kwargs):
62
- """Attribute
62
+ """Attribute(name, value, dtype=str, unit="-", description="", label="", required=False)
63
63
  :param name
64
64
  :param value
65
65
  :param dtype ['float', 'int', 'str', 'timestamp', 'uuid?', 'unicode?']
@@ -303,10 +303,15 @@ class Metadata(object):
303
303
  required_attributes = [(attr.name, attr) for attr in self.attributes.values() if attr.required is True]
304
304
  return SortedDict(required_attributes)
305
305
 
306
+ def add_attribute(self, attr, **kwargs):
307
+ """set Attribute"""
308
+ prefix = kwargs.get("prefix", "")
309
+ self._attributes[prefix + attr.name] = attr
310
+
306
311
  def set_attr(self, name="N.N.", value=None, **kwargs):
307
312
  """set Attribute"""
308
313
  prefix = kwargs.get("prefix", "")
309
- if isinstance(name, Attribute):
314
+ if isinstance(name, Attribute) or "Attribute" in name.__class__.__name__:
310
315
  attr = name # name is the Attribute!
311
316
  else:
312
317
  attr = self.get_attr(prefix + name) or Attribute(name, value, **kwargs)
@@ -419,6 +424,13 @@ class Metadata(object):
419
424
  d[attr.name] = attr.value
420
425
  return d
421
426
 
427
+ def get_dict(self):
428
+ """get user attribute as dict"""
429
+ d = {}
430
+ for attr in self.attributes.values():
431
+ d[attr.name] = attr.value
432
+ return d
433
+
422
434
  def _to_dataframe(self, attributes):
423
435
  """create dataframe from attributes"""
424
436
  d = self._to_dict(attributes)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sdata
3
- Version: 0.23.1
3
+ Version: 0.23.3
4
4
  Summary: a structured data format
5
5
  Home-page: https://github.com/lepy/sdata
6
6
  Author: Lepy
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