layrz-sdk 3.1.12__tar.gz → 3.1.14__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.

Files changed (94) hide show
  1. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/.github/workflows/deploy.yml +2 -7
  2. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/.vscode/settings.json +10 -1
  3. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/CHANGELOG.md +4 -0
  4. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/CODE_OF_CONDUCT.md +5 -0
  5. layrz_sdk-3.1.14/CONTRIBUTING.md +26 -0
  6. {layrz_sdk-3.1.12/layrz_sdk.egg-info → layrz_sdk-3.1.14}/PKG-INFO +1 -1
  7. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/case.py +5 -1
  8. layrz_sdk-3.1.14/layrz_sdk/entities/custom_report_page.py +40 -0
  9. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/report.py +7 -1
  10. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14/layrz_sdk.egg-info}/PKG-INFO +1 -1
  11. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/pyproject.toml +104 -104
  12. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/uv.lock +1 -1
  13. layrz_sdk-3.1.12/CONTRIBUTING.md +0 -30
  14. layrz_sdk-3.1.12/layrz_sdk/entities/custom_report_page.py +0 -16
  15. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/.github/workflows/checks.yml +0 -0
  16. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/.gitignore +0 -0
  17. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/.vscode/extensions.json +0 -0
  18. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/LICENSE +0 -0
  19. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/README.md +0 -0
  20. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/__init__.py +0 -0
  21. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/constants.py +0 -0
  22. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/__init__.py +0 -0
  23. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/asset.py +0 -0
  24. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/asset_operation_mode.py +0 -0
  25. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/broadcast_request.py +0 -0
  26. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/broadcast_response.py +0 -0
  27. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/broadcast_result.py +0 -0
  28. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/broadcast_status.py +0 -0
  29. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/case_ignored_status.py +0 -0
  30. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/case_status.py +0 -0
  31. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/axis_config.py +0 -0
  32. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/bar_chart.py +0 -0
  33. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/chart_alignment.py +0 -0
  34. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/chart_color.py +0 -0
  35. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/chart_configuration.py +0 -0
  36. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/chart_data_serie.py +0 -0
  37. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/chart_data_serie_type.py +0 -0
  38. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/chart_data_type.py +0 -0
  39. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/chart_render_technology.py +0 -0
  40. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/column_chart.py +0 -0
  41. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/html_chart.py +0 -0
  42. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/line_chart.py +0 -0
  43. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/map_center_type.py +0 -0
  44. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/map_chart.py +0 -0
  45. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/map_point.py +0 -0
  46. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/number_chart.py +0 -0
  47. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/pie_chart.py +0 -0
  48. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/radar_chart.py +0 -0
  49. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/radial_bar_chart.py +0 -0
  50. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/scatter_chart.py +0 -0
  51. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/scatter_serie.py +0 -0
  52. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/scatter_serie_item.py +0 -0
  53. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/table_chart.py +0 -0
  54. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/table_header.py +0 -0
  55. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/table_row.py +0 -0
  56. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/timeline_chart.py +0 -0
  57. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/timeline_serie.py +0 -0
  58. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/charts/timeline_serie_item.py +0 -0
  59. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/checkpoint.py +0 -0
  60. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/comment.py +0 -0
  61. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/custom_field.py +0 -0
  62. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/device.py +0 -0
  63. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/event.py +0 -0
  64. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/geofence.py +0 -0
  65. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/last_message.py +0 -0
  66. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/message.py +0 -0
  67. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/outbound_service.py +0 -0
  68. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/position.py +0 -0
  69. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/presence_type.py +0 -0
  70. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/report_col.py +0 -0
  71. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/report_configuration.py +0 -0
  72. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/report_data_type.py +0 -0
  73. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/report_format.py +0 -0
  74. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/report_header.py +0 -0
  75. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/report_page.py +0 -0
  76. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/report_row.py +0 -0
  77. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/sensor.py +0 -0
  78. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/text_alignment.py +0 -0
  79. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/trigger.py +0 -0
  80. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/user.py +0 -0
  81. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/entities/waypoint.py +0 -0
  82. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/helpers/__init__.py +0 -0
  83. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/helpers/color.py +0 -0
  84. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/lcl/__init__.py +0 -0
  85. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/lcl/core.py +0 -0
  86. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk/py.typed +0 -0
  87. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk.egg-info/SOURCES.txt +0 -0
  88. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk.egg-info/dependency_links.txt +0 -0
  89. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk.egg-info/requires.txt +0 -0
  90. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/layrz_sdk.egg-info/top_level.txt +0 -0
  91. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/manual_deploy.py +0 -0
  92. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/setup.cfg +0 -0
  93. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/tests/__init__.py +0 -0
  94. {layrz_sdk-3.1.12 → layrz_sdk-3.1.14}/tests/test_lcl.py +0 -0
@@ -24,14 +24,9 @@ jobs:
24
24
  - name: Checkout
25
25
  uses: actions/checkout@v4
26
26
 
27
- - name: Build
27
+ - name: Build and upload
28
28
  run: |
29
29
  uv venv --python 3.13
30
30
  uv sync --only-group dev
31
31
  uv run python -m build
32
-
33
- - name: Upload to Python Package Index
34
- uses: pypa/gh-action-pypi-publish@v1.8.10
35
- with:
36
- user: ${{ secrets.LAYRZ_PYPI_USERNAME }}
37
- password: ${{ secrets.LAYRZ_PYPI_PASSWORD }}
32
+ uv run python -m twine upload -u ${{ secrets.LAYRZ_PYPI_USERNAME }} -p ${{ secrets.LAYRZ_PYPI_PASSWORD }} dist/*
@@ -18,5 +18,14 @@
18
18
  ],
19
19
  "mypy-type-checker.importStrategy": "fromEnvironment",
20
20
  "python.testing.unittestEnabled": false,
21
- "python.testing.pytestEnabled": true
21
+ "python.testing.pytestEnabled": true,
22
+ "cSpell.words": [
23
+ "Aptos",
24
+ "autofit",
25
+ "layrz",
26
+ "msoffice",
27
+ "rtype",
28
+ "xlswriter",
29
+ "xslx"
30
+ ]
22
31
  }
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.1.14
4
+
5
+ - Some changes related to the `Case` entity
6
+
3
7
  ## 3.1.12
4
8
 
5
9
  - Adjustment of all typings
@@ -1,18 +1,23 @@
1
1
  # Code of conduct
2
2
 
3
3
  ## Be friendly and patient.
4
+
4
5
  Our objective is contribute to community and help us together to create better code.
5
6
 
6
7
  ## Be welcoming
8
+
7
9
  We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.
8
10
 
9
11
  ## Be considerate
12
+
10
13
  Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we're a world-wide community, so you might not be communicating in someone else's primary language.
11
14
 
12
15
  ## Be respectful
16
+
13
17
  Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one.
14
18
 
15
19
  ## Be careful in the words that you choose
20
+
16
21
  We are a community of professionals, and we conduct ourselves professionally. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren't acceptable. This includes, but is not limited to:
17
22
  * Violent threats or language directed against another person.
18
23
  * Discriminatory jokes and language.
@@ -0,0 +1,26 @@
1
+ # Contributing
2
+
3
+ As an open source project, we welcomes contributions of many forms.
4
+
5
+ ## To request a Pull Request
6
+
7
+ Please follow the next structure of your request:
8
+
9
+ 1. **Title**: A short description of the change.
10
+
11
+ 2. **Description**: A detailed description of the change, including:
12
+ - What is the problem you are solving?
13
+ - How does your change solve the problem?
14
+ - Any additional information that might be helpful for reviewers.
15
+
16
+ 3. **Code**: The code changes you are proposing, including:
17
+ - The files you are changing.
18
+ - The specific lines of code that are being added, modified, or removed.
19
+ - Any tests you have written to verify your changes.
20
+
21
+ 4. **Testing**: A description of how you tested your changes, including:
22
+ - The environment you tested in (e.g., local, staging).
23
+ - Any specific test cases you ran.
24
+ - The results of your tests.
25
+
26
+ You can attach screenshots or other files to help illustrate your changes.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 3.1.12
3
+ Version: 3.1.14
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>
@@ -41,7 +41,11 @@ class Case(BaseModel):
41
41
  """Validate model"""
42
42
  sequence = data.get('sequence')
43
43
  if sequence is not None and isinstance(sequence, int):
44
- data['sequence'] = f'{data["trigger"].code}/{sequence}'
44
+ trigger = data['trigger']
45
+ if not isinstance(trigger, Trigger):
46
+ data['sequence'] = f'{trigger["code"]}/{data["pk"]}'
47
+ else:
48
+ data['sequence'] = f'{trigger.code}/{sequence}'
45
49
  else:
46
50
  data['sequence'] = f'GENERIC/{data["pk"]}'
47
51
 
@@ -0,0 +1,40 @@
1
+ from collections.abc import Callable
2
+ from typing import Any, Protocol, runtime_checkable
3
+
4
+ from pydantic import BaseModel, ConfigDict, Field
5
+ from xlsxwriter.worksheet import Worksheet
6
+
7
+
8
+ @runtime_checkable
9
+ class BuilderFunction(Protocol):
10
+ """
11
+ Protocol for the builder function.
12
+ """
13
+
14
+ def __call__(self, *, sheet: Worksheet, **kwargs: Any) -> None: ...
15
+
16
+
17
+ class CustomReportPage(BaseModel):
18
+ """
19
+ Custom report page
20
+ Basically it's a wrapper of the `xlswriter` worksheet that uses a function to construct the page
21
+ """
22
+
23
+ model_config = ConfigDict(
24
+ from_attributes=True,
25
+ arbitrary_types_allowed=True,
26
+ )
27
+
28
+ name: str = Field(description='Name of the page. Length should be less than 60 characters')
29
+ builder: Callable[[Worksheet], None] | None = Field(
30
+ description=('Function to build the page. The only argument is the worksheet object'),
31
+ default=None,
32
+ )
33
+ extended_builder: BuilderFunction | None = Field(
34
+ description=(
35
+ 'Function to build the page. The first argument is the worksheet object, '
36
+ 'and the rest are the kwargs to give support for the builder function.'
37
+ '\n Currently, the only supported kwarg is `workbook` which is the workbook object'
38
+ ),
39
+ default=None,
40
+ )
@@ -190,7 +190,13 @@ class Report(BaseModel):
190
190
  sheet = book.add_worksheet(sheet_name)
191
191
 
192
192
  if isinstance(page, CustomReportPage):
193
- page.builder(sheet)
193
+ if page.extended_builder:
194
+ page.extended_builder(sheet=sheet, workbook=book)
195
+ elif page.builder:
196
+ page.builder(sheet)
197
+ else:
198
+ raise AttributeError('Custom report page must have a builder or extended_builder function')
199
+
194
200
  sheet.autofit()
195
201
  continue
196
202
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: layrz-sdk
3
- Version: 3.1.12
3
+ Version: 3.1.14
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>
@@ -1,104 +1,104 @@
1
- [project]
2
- name = "layrz-sdk"
3
- version = "3.1.12"
4
- description = "Layrz SDK for Python"
5
- authors = [
6
- {name = "Golden M, Inc.", email = "software@goldenm.com"}
7
- ]
8
- requires-python = ">=3.10, <3.14"
9
-
10
- maintainers = [
11
- {name = "Kenny Mochizuki", email = "kenny@goldenm.com"},
12
- {name = "Luis Reyes", email = "lreyes@goldenm.com"},
13
- {name = "Kasen Li", email = "kli@goldenm.com"},
14
- ]
15
-
16
- readme = "README.md"
17
-
18
- license = {text = "MIT License"}
19
-
20
- keywords = [
21
- "sdk",
22
- "goldenm",
23
- "lcl",
24
- "layrz compute language",
25
- "layrz",
26
- ]
27
- classifiers = [
28
- "Programming Language :: Python :: 3",
29
- "Programming Language :: Python :: 3.10",
30
- "Programming Language :: Python :: 3.11",
31
- "Programming Language :: Python :: 3.12",
32
- "Programming Language :: Python :: 3.13",
33
- ]
34
- dependencies = [
35
- "requests",
36
- "xlsxwriter",
37
- "tzdata",
38
- "pydantic>=2.10.6",
39
- "typing-extensions>=4.10.0",
40
- ]
41
-
42
- [project.urls]
43
- Repository = "https://github.com/goldenm-software/layrz-sdk"
44
- Changelog = "https://github.com/goldenm-software/layrz-sdk/blob/main/CHANGELOG.md"
45
-
46
- [build-system]
47
- requires = ["setuptools", "setuptools-scm"]
48
- build-backend = "setuptools.build_meta"
49
-
50
- [dependency-groups]
51
- dev = [
52
- "build>=1.2.2.post1",
53
- "mypy>=1.15.0",
54
- "pytest>=8.3.5",
55
- "python-dotenv>=1.0.1",
56
- "ruff>=0.11.0",
57
- "twine>=6.1.0",
58
- ]
59
-
60
-
61
- [tool.ruff]
62
- indent-width = 2
63
- line-length = 120
64
-
65
- exclude = [".venv"]
66
-
67
- [tool.ruff.lint]
68
- ignore = [
69
- "F401", # Unused import
70
- "E701", # Multiple statements on one line
71
- "TD003", # Missing issue link
72
- "ANN401", # Any type annotation
73
- ]
74
-
75
- select = [
76
- "I", # isort
77
- "E", "W", # pycodestyle
78
- "F", # pyflakes
79
- "B", # flakes8-bugbear
80
- "TD", # flake8-todo
81
- "DJ", # flake8-django
82
- "DTZ", # flake8-datetimez
83
- "T20", # flake8-print # En un futuro
84
- "PYI", # flake8-pyi
85
- "ANN", # flake8-annotations
86
- ]
87
-
88
- [tool.ruff.format]
89
- quote-style = "single"
90
- indent-style = "space"
91
- docstring-code-format = true
92
-
93
- [tool.mypy]
94
- python_version = "3.10"
95
- strict = true
96
- ignore_missing_imports = true
97
- check_untyped_defs = true
98
- disallow_untyped_defs = true
99
-
100
- exclude = [
101
- ".*\\.venv",
102
- ".*\\.ruff_cache",
103
- ".*\\.mypy_cache",
104
- ]
1
+ [project]
2
+ name = "layrz-sdk"
3
+ version = "3.1.14"
4
+ description = "Layrz SDK for Python"
5
+ authors = [
6
+ {name = "Golden M, Inc.", email = "software@goldenm.com"}
7
+ ]
8
+ requires-python = ">=3.10, <3.14"
9
+
10
+ maintainers = [
11
+ {name = "Kenny Mochizuki", email = "kenny@goldenm.com"},
12
+ {name = "Luis Reyes", email = "lreyes@goldenm.com"},
13
+ {name = "Kasen Li", email = "kli@goldenm.com"},
14
+ ]
15
+
16
+ readme = "README.md"
17
+
18
+ license = {text = "MIT License"}
19
+
20
+ keywords = [
21
+ "sdk",
22
+ "goldenm",
23
+ "lcl",
24
+ "layrz compute language",
25
+ "layrz",
26
+ ]
27
+ classifiers = [
28
+ "Programming Language :: Python :: 3",
29
+ "Programming Language :: Python :: 3.10",
30
+ "Programming Language :: Python :: 3.11",
31
+ "Programming Language :: Python :: 3.12",
32
+ "Programming Language :: Python :: 3.13",
33
+ ]
34
+ dependencies = [
35
+ "requests",
36
+ "xlsxwriter",
37
+ "tzdata",
38
+ "pydantic>=2.10.6",
39
+ "typing-extensions>=4.10.0",
40
+ ]
41
+
42
+ [project.urls]
43
+ Repository = "https://github.com/goldenm-software/layrz-sdk"
44
+ Changelog = "https://github.com/goldenm-software/layrz-sdk/blob/main/CHANGELOG.md"
45
+
46
+ [build-system]
47
+ requires = ["setuptools", "setuptools-scm"]
48
+ build-backend = "setuptools.build_meta"
49
+
50
+ [dependency-groups]
51
+ dev = [
52
+ "build>=1.2.2.post1",
53
+ "mypy>=1.15.0",
54
+ "pytest>=8.3.5",
55
+ "python-dotenv>=1.0.1",
56
+ "ruff>=0.11.0",
57
+ "twine>=6.1.0",
58
+ ]
59
+
60
+
61
+ [tool.ruff]
62
+ indent-width = 2
63
+ line-length = 120
64
+
65
+ exclude = [".venv"]
66
+
67
+ [tool.ruff.lint]
68
+ ignore = [
69
+ "F401", # Unused import
70
+ "E701", # Multiple statements on one line
71
+ "TD003", # Missing issue link
72
+ "ANN401", # Any type annotation
73
+ ]
74
+
75
+ select = [
76
+ "I", # isort
77
+ "E", "W", # pycodestyle
78
+ "F", # pyflakes
79
+ "B", # flakes8-bugbear
80
+ "TD", # flake8-todo
81
+ "DJ", # flake8-django
82
+ "DTZ", # flake8-datetimez
83
+ "T20", # flake8-print # En un futuro
84
+ "PYI", # flake8-pyi
85
+ "ANN", # flake8-annotations
86
+ ]
87
+
88
+ [tool.ruff.format]
89
+ quote-style = "single"
90
+ indent-style = "space"
91
+ docstring-code-format = true
92
+
93
+ [tool.mypy]
94
+ python_version = "3.10"
95
+ strict = true
96
+ ignore_missing_imports = true
97
+ check_untyped_defs = true
98
+ disallow_untyped_defs = true
99
+
100
+ exclude = [
101
+ ".*\\.venv",
102
+ ".*\\.ruff_cache",
103
+ ".*\\.mypy_cache",
104
+ ]
@@ -318,7 +318,7 @@ wheels = [
318
318
 
319
319
  [[package]]
320
320
  name = "layrz-sdk"
321
- version = "3.1.12"
321
+ version = "3.1.14"
322
322
  source = { editable = "." }
323
323
  dependencies = [
324
324
  { name = "pydantic" },
@@ -1,30 +0,0 @@
1
- # Contributing
2
-
3
- As an open source project, we welcomes contributions of many forms.
4
-
5
- ## To request a Merge Request
6
-
7
- Please follow the next structure of your request:
8
-
9
- ### Title
10
-
11
- A short description of your feature/fix
12
-
13
- Also, add this prefix in the title according to the scenario:
14
-
15
- | Prefix/Tag | Meaning |
16
- |-|-|
17
- | `feature/` | New feature, like new methods, classes, etc. |
18
- | `fix/` | Bug fix or documentation related fix |
19
- | `docs/` | Documentation related changes |
20
-
21
- ### Description
22
-
23
- Explain your feature/fix request and why we should be approve.
24
-
25
- Be explicit and precise with your submission, that helps us to review and approve your request.
26
-
27
- ## Code of Conduct
28
-
29
- As a contributor, you can help us keep the Layrz community open and inclusive.
30
- Please read and follow our code of conduct in `CODE_OF_CONDUCT.md`.
@@ -1,16 +0,0 @@
1
- from collections.abc import Callable
2
-
3
- from pydantic import BaseModel, Field
4
- from xlsxwriter.worksheet import Worksheet
5
-
6
-
7
- class CustomReportPage(BaseModel):
8
- """
9
- Custom report page
10
- Basically it's a wrapper of the `xlswriter` worksheet that uses a function to construct the page
11
- """
12
-
13
- name: str = Field(description='Name of the page. Length should be less than 60 characters')
14
- builder: Callable[[Worksheet], None] = Field(
15
- description='Function to build the page. The only argument is the worksheet object',
16
- )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes