layrz-sdk 2.2.2__tar.gz → 2.2.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.
Potentially problematic release.
This version of layrz-sdk might be problematic. Click here for more details.
- {layrz-sdk-2.2.2/layrz_sdk.egg-info → layrz-sdk-2.2.3}/PKG-INFO +1 -1
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/__init__.py +2 -1
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/reports/__init__.py +1 -1
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/reports/col.py +9 -5
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/reports/header.py +19 -6
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/reports/page.py +22 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/reports/report.py +35 -14
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/reports/row.py +6 -3
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3/layrz_sdk.egg-info}/PKG-INFO +1 -1
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/pyproject.toml +1 -1
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/LICENSE +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/README.md +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/broadcasts/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/broadcasts/request.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/broadcasts/response.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/broadcasts/result.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/broadcasts/service.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/broadcasts/status.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/cases/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/cases/case.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/cases/comment.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/cases/trigger.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/alignment.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/bar.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/column.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/configuration.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/data_type.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/exceptions.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/html.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/line.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/map.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/number.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/pie.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/radar.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/radial_bar.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/scatter.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/serie.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/serie_type.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/table.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/charts/timeline.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/checkpoints/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/checkpoints/checkpoint.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/checkpoints/geofence.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/checkpoints/waypoint.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/events/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/events/event.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/formatting/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/formatting/text_align.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/general/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/general/asset.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/general/asset_operation_mode.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/general/custom_field.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/general/device.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/general/sensor.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/general/user.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/repcom/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/repcom/transaction.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/reports/format.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/telemetry/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/telemetry/message.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/entities/telemetry/position.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/helpers/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/helpers/color.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/lcl/__init__.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz/sdk/lcl/core.py +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz_sdk.egg-info/SOURCES.txt +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz_sdk.egg-info/dependency_links.txt +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz_sdk.egg-info/requires.txt +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/layrz_sdk.egg-info/top_level.txt +0 -0
- {layrz-sdk-2.2.2 → layrz-sdk-2.2.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: layrz-sdk
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
4
4
|
Summary: Layrz SDK for Python
|
|
5
5
|
Author-email: "Golden M, Inc." <software@goldenm.com>
|
|
6
6
|
Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>
|
|
@@ -20,6 +20,7 @@ from .general import (Asset, AssetOperationMode, CustomField, Device, Sensor, Us
|
|
|
20
20
|
# REPCOM entities
|
|
21
21
|
from .repcom import Transaction
|
|
22
22
|
# Reports entities
|
|
23
|
-
from .reports import (Report, ReportCol, ReportDataType, ReportFormat, ReportHeader, ReportPage,
|
|
23
|
+
from .reports import (CustomReportPage, Report, ReportCol, ReportDataType, ReportFormat, ReportHeader, ReportPage,
|
|
24
|
+
ReportRow)
|
|
24
25
|
# Telemetry entities
|
|
25
26
|
from .telemetry import Message, Position
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
""" Report col """
|
|
2
|
+
import warnings
|
|
2
3
|
from enum import Enum
|
|
3
4
|
from typing import Any
|
|
4
5
|
|
|
@@ -38,6 +39,8 @@ class ReportCol:
|
|
|
38
39
|
- content : Display content
|
|
39
40
|
- color : Cell color
|
|
40
41
|
- text_color : Text color
|
|
42
|
+
Deprecated, The text color now will use the luminance of the background color to determine the
|
|
43
|
+
text color
|
|
41
44
|
- align : Text Alignment
|
|
42
45
|
- data_type : Data type
|
|
43
46
|
- datetime_format : Date time format
|
|
@@ -48,7 +51,7 @@ class ReportCol:
|
|
|
48
51
|
self,
|
|
49
52
|
content: Any,
|
|
50
53
|
color: str = '#ffffff',
|
|
51
|
-
text_color: str =
|
|
54
|
+
text_color: str = None,
|
|
52
55
|
align: TextAlignment = TextAlignment.LEFT,
|
|
53
56
|
data_type: ReportDataType = ReportDataType.STR,
|
|
54
57
|
datetime_format: str = '%Y-%m-%d %H:%M:%S',
|
|
@@ -57,7 +60,10 @@ class ReportCol:
|
|
|
57
60
|
) -> None:
|
|
58
61
|
self.content = content
|
|
59
62
|
self.color = color
|
|
60
|
-
|
|
63
|
+
|
|
64
|
+
if text_color is not None:
|
|
65
|
+
warnings.warn('text_color is deprecated, use color instead', DeprecationWarning)
|
|
66
|
+
|
|
61
67
|
self.align = align
|
|
62
68
|
self.data_type = data_type
|
|
63
69
|
self.datetime_format = datetime_format
|
|
@@ -67,9 +73,7 @@ class ReportCol:
|
|
|
67
73
|
@property
|
|
68
74
|
def _readable(self) -> str:
|
|
69
75
|
""" Readable property """
|
|
70
|
-
return f'ReportCol(content={self.content}
|
|
71
|
-
f'align={self.align}, data_type={self.data_type}, datetime_format={self.datetime_format}, ' +\
|
|
72
|
-
f'currency_symbol={self.currency_symbol}, bold={self.bold})'
|
|
76
|
+
return f'ReportCol(content={self.content})'
|
|
73
77
|
|
|
74
78
|
def __repr__(self) -> str:
|
|
75
79
|
""" Readable property """
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
""" Report header """
|
|
2
|
+
import warnings
|
|
3
|
+
|
|
2
4
|
from ..formatting.text_align import TextAlignment
|
|
3
5
|
|
|
4
6
|
|
|
@@ -9,30 +11,41 @@ class ReportHeader:
|
|
|
9
11
|
Attributes
|
|
10
12
|
- content : Display name
|
|
11
13
|
- width : Column width in points (pt)
|
|
14
|
+
Deprecated, now uses the `autofit()` method of `xlsxwriter`
|
|
12
15
|
- color : Cell color
|
|
13
16
|
- text_color : Text color
|
|
17
|
+
Deprecated, The text color now will use the luminance of the background color to determine the
|
|
18
|
+
text color
|
|
14
19
|
- align : Text Alignment
|
|
20
|
+
- bold : Should the text be bold
|
|
15
21
|
"""
|
|
16
22
|
|
|
17
23
|
def __init__(
|
|
18
24
|
self,
|
|
19
25
|
content: str,
|
|
20
|
-
width: int =
|
|
26
|
+
width: int = None,
|
|
21
27
|
color: str = '#ffffff',
|
|
22
|
-
text_color: str =
|
|
28
|
+
text_color: str = None,
|
|
23
29
|
align: TextAlignment = TextAlignment.CENTER,
|
|
30
|
+
bold: bool = False,
|
|
24
31
|
) -> None:
|
|
25
32
|
self.content = content
|
|
26
|
-
|
|
33
|
+
|
|
34
|
+
if width is not None:
|
|
35
|
+
warnings.warn('width is deprecated, use width instead', DeprecationWarning)
|
|
36
|
+
|
|
27
37
|
self.color = color
|
|
28
|
-
|
|
38
|
+
|
|
39
|
+
if text_color is not None:
|
|
40
|
+
warnings.warn('text_color is deprecated, use color instead', DeprecationWarning)
|
|
41
|
+
|
|
29
42
|
self.align = align
|
|
43
|
+
self.bold = bold
|
|
30
44
|
|
|
31
45
|
@property
|
|
32
46
|
def _readable(self) -> str:
|
|
33
47
|
""" Readable property """
|
|
34
|
-
return f'ReportHeader(content={self.content}
|
|
35
|
-
f'text_color={self.text_color}, align={self.align})'
|
|
48
|
+
return f'ReportHeader(content={self.content})'
|
|
36
49
|
|
|
37
50
|
def __str__(self) -> str:
|
|
38
51
|
""" Readable property """
|
|
@@ -37,3 +37,25 @@ class ReportPage:
|
|
|
37
37
|
def __repr__(self) -> str:
|
|
38
38
|
""" Readable property """
|
|
39
39
|
return self._readable
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class CustomReportPage:
|
|
43
|
+
"""
|
|
44
|
+
Custom report page
|
|
45
|
+
Basically it's a wrapper of the `xlswriter` worksheet that uses a function to construct the page
|
|
46
|
+
---
|
|
47
|
+
Attributes:
|
|
48
|
+
- name : Name of the page. Length should be less than 60 characters
|
|
49
|
+
Methods:
|
|
50
|
+
- builder(Worksheet) -> None : Function to build the page
|
|
51
|
+
The builder receives a `Worksheet` object as an argument and shouldn't
|
|
52
|
+
return anything.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
def __init__(self, name: str, builder: callable) -> None:
|
|
56
|
+
""" Constructor """
|
|
57
|
+
self.name = name
|
|
58
|
+
|
|
59
|
+
if not callable(builder):
|
|
60
|
+
raise ValueError('builder should be a callable')
|
|
61
|
+
self.builder = builder
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
""" Report class """
|
|
2
2
|
import os
|
|
3
3
|
import time
|
|
4
|
+
import warnings
|
|
4
5
|
|
|
5
6
|
import xlsxwriter
|
|
6
7
|
|
|
8
|
+
from layrz.sdk.helpers.color import use_black
|
|
9
|
+
|
|
7
10
|
from .col import ReportDataType
|
|
8
11
|
from .format import ReportFormat
|
|
9
|
-
from .page import ReportPage
|
|
12
|
+
from .page import CustomReportPage, ReportPage
|
|
10
13
|
|
|
11
14
|
|
|
12
15
|
class Report:
|
|
@@ -22,11 +25,16 @@ class Report:
|
|
|
22
25
|
def __init__(
|
|
23
26
|
self,
|
|
24
27
|
name: str,
|
|
25
|
-
pages: list[ReportPage],
|
|
26
|
-
export_format: ReportFormat,
|
|
28
|
+
pages: list[ReportPage | CustomReportPage],
|
|
29
|
+
export_format: ReportFormat = None,
|
|
27
30
|
) -> None:
|
|
28
31
|
self.name = name
|
|
29
32
|
self.pages = pages
|
|
33
|
+
|
|
34
|
+
if export_format is not None:
|
|
35
|
+
warnings.warn('export_format is deprecated, submit the export format in the `export()` method instead',
|
|
36
|
+
DeprecationWarning)
|
|
37
|
+
|
|
30
38
|
self.export_format = export_format
|
|
31
39
|
|
|
32
40
|
@property
|
|
@@ -37,7 +45,7 @@ class Report:
|
|
|
37
45
|
@property
|
|
38
46
|
def _readable(self) -> str:
|
|
39
47
|
""" Readable property """
|
|
40
|
-
return f'Report(name={self.name}, pages={self.pages}
|
|
48
|
+
return f'Report(name={self.name}, pages={len(self.pages)})'
|
|
41
49
|
|
|
42
50
|
def __repr__(self) -> str:
|
|
43
51
|
""" Readable property """
|
|
@@ -76,7 +84,7 @@ class Report:
|
|
|
76
84
|
for header in page.headers:
|
|
77
85
|
headers.append({
|
|
78
86
|
'content': header.content,
|
|
79
|
-
'text_color': header.
|
|
87
|
+
'text_color': '#000000' if use_black(header.color) else '#ffffff',
|
|
80
88
|
'color': header.color,
|
|
81
89
|
})
|
|
82
90
|
rows = []
|
|
@@ -85,7 +93,7 @@ class Report:
|
|
|
85
93
|
for cell in row.content:
|
|
86
94
|
cells.append({
|
|
87
95
|
'content': cell.content,
|
|
88
|
-
'text_color': cell.
|
|
96
|
+
'text_color': '#000000' if use_black(cell.color) else '#ffffff',
|
|
89
97
|
'color': cell.color,
|
|
90
98
|
'data_type': cell.data_type.value,
|
|
91
99
|
})
|
|
@@ -111,40 +119,51 @@ class Report:
|
|
|
111
119
|
book = xlsxwriter.Workbook(full_path)
|
|
112
120
|
|
|
113
121
|
for page in self.pages:
|
|
114
|
-
|
|
122
|
+
sheet_name = page.name[0:31]
|
|
123
|
+
|
|
124
|
+
# Allow only numbers, letters, spaces and _ or - characters
|
|
125
|
+
# Other characters will be removed
|
|
126
|
+
sheet_name = ''.join(e for e in sheet_name if e.isalnum() or e in [' ', '_', '-'])
|
|
127
|
+
sheet = book.add_worksheet(sheet_name)
|
|
128
|
+
|
|
129
|
+
if isinstance(page, CustomReportPage):
|
|
130
|
+
page.builder(sheet)
|
|
131
|
+
sheet.autofit()
|
|
132
|
+
continue
|
|
133
|
+
|
|
115
134
|
if page.freeze_header:
|
|
116
135
|
sheet.freeze_panes(1, 0)
|
|
117
136
|
|
|
118
137
|
for i, header in enumerate(page.headers):
|
|
119
138
|
style = book.add_format({
|
|
120
139
|
'align': header.align.value,
|
|
121
|
-
'font_color': header.
|
|
140
|
+
'font_color': '#000000' if use_black(header.color) else '#ffffff',
|
|
122
141
|
'bg_color': header.color,
|
|
142
|
+
'bold': header.bold,
|
|
123
143
|
'valign': 'vcenter',
|
|
124
|
-
'font_size':
|
|
144
|
+
'font_size': 11,
|
|
125
145
|
'top': 1,
|
|
126
146
|
'left': 1,
|
|
127
147
|
'right': 1,
|
|
128
148
|
'bottom': 1,
|
|
129
|
-
'font_name': '
|
|
149
|
+
'font_name': 'Aptos Narrow',
|
|
130
150
|
})
|
|
131
151
|
sheet.write(0, i, header.content, style)
|
|
132
|
-
sheet.set_column(i, i, header.width)
|
|
133
152
|
|
|
134
153
|
for i, row in enumerate(page.rows):
|
|
135
154
|
for j, cell in enumerate(row.content):
|
|
136
155
|
style = {
|
|
137
156
|
'align': cell.align.value,
|
|
138
|
-
'font_color': cell.
|
|
157
|
+
'font_color': '#000000' if use_black(cell.color) else '#ffffff',
|
|
139
158
|
'bg_color': cell.color,
|
|
140
159
|
'bold': cell.bold,
|
|
141
160
|
'valign': 'vcenter',
|
|
142
|
-
'font_size':
|
|
161
|
+
'font_size': 11,
|
|
143
162
|
'top': 1,
|
|
144
163
|
'left': 1,
|
|
145
164
|
'right': 1,
|
|
146
165
|
'bottom': 1,
|
|
147
|
-
'font_name': '
|
|
166
|
+
'font_name': 'Aptos Narrow',
|
|
148
167
|
}
|
|
149
168
|
|
|
150
169
|
if cell.data_type == ReportDataType.BOOL:
|
|
@@ -169,6 +188,8 @@ class Report:
|
|
|
169
188
|
sheet.set_row(i + 1, None, None, {'level': 1, 'hidden': True})
|
|
170
189
|
else:
|
|
171
190
|
sheet.set_row(i + 1, None, None, {'collapsed': True})
|
|
191
|
+
|
|
192
|
+
sheet.autofit()
|
|
172
193
|
book.close()
|
|
173
194
|
|
|
174
195
|
return full_path
|
|
@@ -17,18 +17,21 @@ class ReportRow:
|
|
|
17
17
|
def __init__(
|
|
18
18
|
self,
|
|
19
19
|
content: list[ReportCol],
|
|
20
|
-
height: float =
|
|
20
|
+
height: float = None,
|
|
21
21
|
compact: bool = False,
|
|
22
22
|
) -> None:
|
|
23
23
|
""" Constructor """
|
|
24
24
|
self.content = content
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
if height is not None:
|
|
27
|
+
raise DeprecationWarning('height is deprecated, use height instead')
|
|
28
|
+
|
|
26
29
|
self.compact = compact
|
|
27
30
|
|
|
28
31
|
@property
|
|
29
32
|
def _readable(self) -> str:
|
|
30
33
|
""" Readable property """
|
|
31
|
-
return f'ReportRow(content={self.content}
|
|
34
|
+
return f'ReportRow(content={self.content})'
|
|
32
35
|
|
|
33
36
|
def __str__(self) -> str:
|
|
34
37
|
""" Readable property """
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: layrz-sdk
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
4
4
|
Summary: Layrz SDK for Python
|
|
5
5
|
Author-email: "Golden M, Inc." <software@goldenm.com>
|
|
6
6
|
Maintainer-email: Kenny Mochizuki <kenny@goldenm.com>, Luis Reyes <lreyes@goldenm.com>, Kasen Li <kli@goldenm.com>
|
|
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
|
|
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
|