papyru 2.11.0.dev102__tar.gz → 2.11.1.dev114__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 (49) hide show
  1. {papyru-2.11.0.dev102/papyru.egg-info → papyru-2.11.1.dev114}/PKG-INFO +1 -1
  2. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/component.py +10 -6
  3. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/constants.py +13 -1
  4. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/edit_template/ean.py +11 -5
  5. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/edit_template/manufacturer_address.py +4 -2
  6. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/edit_template/render_text.py +3 -1
  7. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/edit_template/title.py +17 -7
  8. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/resi.py +4 -2
  9. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/utils.py +0 -17
  10. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114/papyru.egg-info}/PKG-INFO +1 -1
  11. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/setup.py +1 -1
  12. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/LICENSE.txt +0 -0
  13. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/README.md +0 -0
  14. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/bin/generate_jsonschema.py +0 -0
  15. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/__init__.py +0 -0
  16. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/auth.py +0 -0
  17. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/context.py +0 -0
  18. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/__init__.py +0 -0
  19. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/edit_template/__init__.py +0 -0
  20. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/edit_template/motive.py +0 -0
  21. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/create_variant/edit_template/xml.py +0 -0
  22. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/logger.py +0 -0
  23. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/logger_stdout.py +0 -0
  24. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/logger_types.py +0 -0
  25. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/middleware.py +0 -0
  26. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/problem.py +0 -0
  27. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/profiler.py +0 -0
  28. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/resource.py +0 -0
  29. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/serializer.py +0 -0
  30. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/stack_context.py +0 -0
  31. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/static/__init__.py +0 -0
  32. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/static/apps.py +0 -0
  33. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/static/urls.py +0 -0
  34. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/static/views.py +0 -0
  35. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/validation.py +0 -0
  36. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/varspool/__init__.py +0 -0
  37. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/varspool/assets/Job.json +0 -0
  38. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/varspool/assets/JobStatusHistory.json +0 -0
  39. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/varspool/command/__init__.py +0 -0
  40. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/varspool/command/config.py +0 -0
  41. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/varspool/command/types.py +0 -0
  42. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/varspool/serializers.py +0 -0
  43. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/varspool/types.py +0 -0
  44. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru/xml_helper.py +0 -0
  45. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru.egg-info/SOURCES.txt +0 -0
  46. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru.egg-info/dependency_links.txt +0 -0
  47. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru.egg-info/requires.txt +0 -0
  48. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/papyru.egg-info/top_level.txt +0 -0
  49. {papyru-2.11.0.dev102 → papyru-2.11.1.dev114}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: papyru
3
- Version: 2.11.0.dev102
3
+ Version: 2.11.1.dev114
4
4
  Summary: minimal REST library with OpenAPI-based validation for django
5
5
  Home-page: http://www.puzzleyou.net/
6
6
  Author: puzzleYOU GmbH
@@ -1,3 +1,7 @@
1
+ from typing import Optional
2
+
3
+ import resi
4
+
1
5
  from papyru import XMLHelper
2
6
 
3
7
  from .edit_template.ean import insert_ean
@@ -10,15 +14,15 @@ from .resi import import_into_resi
10
14
 
11
15
  def create_component(template: str,
12
16
  motive_image_info: ImageInfo,
13
- resi_instance: object,
17
+ resi_instance: resi.Instance,
14
18
  resi_url: str,
15
19
  disposition_component: str,
16
20
  disposition_manufacturer_address: str,
17
- disposition_title=None,
18
- motive_title=None,
19
- disposition_ean=None,
20
- ean=None,
21
- properties=None,
21
+ disposition_title: Optional[str] = None,
22
+ motive_title: Optional[str] = None,
23
+ disposition_ean: Optional[str] = None,
24
+ ean: Optional[str] = None,
25
+ properties: Optional[resi.VersionProperties] = None,
22
26
  ) -> str:
23
27
 
24
28
  doc = XMLHelper(template)
@@ -1,7 +1,19 @@
1
+ """
2
+ Constants for specific templates
3
+
4
+ These constants are used in specific templates to ensure that SVG
5
+ components are generated correctly, e.g.:
6
+
7
+ - https://masa.productdesignerd.puzzleandplay.de/
8
+ templates/single-image-4-3-landscape/structure/original
9
+ - https://masa.productdesignerd.puzzleandplay.de/
10
+ templates/box_small_500_landscape_grey/structure/original
11
+ """
12
+
1
13
  from .edit_template.render_text import (Alignment, HorizontalAlignment,
2
14
  RGBAColor, VerticalAlignment)
3
15
 
4
- # Preview types can be overwritten by ShopAttributes.
16
+ # Preview types can be overwritten by ShopAttributes in Masa.
5
17
  PREVIEW_TYPE_BOX = 'box'
6
18
  PREVIEW_TYPE_PARTS = 'pieces'
7
19
 
@@ -1,5 +1,8 @@
1
1
  from os import getpid
2
2
  from subprocess import PIPE, Popen
3
+ from typing import Optional
4
+
5
+ import resi
3
6
 
4
7
  from papyru import XMLHelper
5
8
  from papyru.create_variant.constants import EAN_PLACEHOLDER_ID
@@ -9,11 +12,14 @@ from .xml import ImageInfo, find_placeholder, fit_image
9
12
 
10
13
 
11
14
  def insert_ean(doc: XMLHelper,
12
- ean: str,
13
- disposition: str,
14
- resi_instance: object,
15
- resi_url: str,
15
+ ean: Optional[str] = None,
16
+ disposition: Optional[str] = None,
17
+ resi_instance: Optional[resi.Instance] = None,
18
+ resi_url: Optional[str] = None,
16
19
  ) -> XMLHelper:
20
+ if ean is None:
21
+ return doc
22
+
17
23
  ph = find_placeholder(doc, 'image', EAN_PLACEHOLDER_ID)
18
24
 
19
25
  if ph is None:
@@ -36,7 +42,7 @@ def _create_ean(ean: str,
36
42
  width: int,
37
43
  height: int,
38
44
  disposition: str,
39
- resi_instance: any,
45
+ resi_instance: resi.Instance,
40
46
  resi_url: str) -> str:
41
47
  _, ean_bytes = resi_instance.provide_version_bytes(
42
48
  generate_barcode_svg(ean).encode(),
@@ -1,5 +1,7 @@
1
1
  from logging import getLogger
2
2
 
3
+ import resi
4
+
3
5
  from papyru import XMLHelper
4
6
  from papyru.create_variant.constants import (
5
7
  MANUFACTURER_ADDRESS_ALIGNMENT, MANUFACTURER_ADDRESS_COLOR_BACKGROUND,
@@ -16,7 +18,7 @@ log = getLogger(__name__)
16
18
 
17
19
  def insert_manufacturer_address(doc: XMLHelper,
18
20
  disposition: str,
19
- resi_instance: object,
21
+ resi_instance: resi.Instance,
20
22
  resi_url: str,
21
23
  ) -> XMLHelper:
22
24
  ph = find_placeholder(doc, 'text', MANUFACTURER_ADDRESS_PLACEHOLDER_ID)
@@ -46,7 +48,7 @@ def _create_text_manufacturer_address(address: str,
46
48
  width: int,
47
49
  height: int,
48
50
  disposition: str,
49
- resi_instance: any,
51
+ resi_instance: resi.Instance,
50
52
  resi_url: str) -> str:
51
53
  text_bytes = render_text(
52
54
  TextConfig(
@@ -5,6 +5,8 @@ from subprocess import run
5
5
  from tempfile import TemporaryDirectory
6
6
  from uuid import uuid4
7
7
 
8
+ import resi
9
+
8
10
 
9
11
  @dataclass(frozen=True)
10
12
  class RGBAColor:
@@ -43,7 +45,7 @@ class TextConfig:
43
45
  height: int
44
46
 
45
47
 
46
- def render_text(config: TextConfig, resi_instance: object) -> bytes:
48
+ def render_text(config: TextConfig, resi_instance: resi.Instance) -> bytes:
47
49
  # see `convert -list gravity`
48
50
  def _get_gravity(alignment: Alignment) -> str:
49
51
  h = ''
@@ -1,3 +1,7 @@
1
+ from typing import Optional
2
+
3
+ import resi
4
+
1
5
  from papyru import XMLHelper
2
6
  from papyru.create_variant.constants import (TITLE_ALIGNMENT,
3
7
  TITLE_COLOR_BACKGROUND,
@@ -11,19 +15,25 @@ from .xml import (ImageInfo, find_placeholder, fit_image,
11
15
 
12
16
 
13
17
  def insert_title(doc: XMLHelper,
14
- title: str,
15
- disposition: str,
16
- resi_instance: object,
17
- resi_url: any
18
+ title: Optional[str] = None,
19
+ disposition: Optional[str] = None,
20
+ resi_instance: Optional[resi.Instance] = None,
21
+ resi_url: Optional[str] = None
18
22
  ) -> XMLHelper:
19
- if title is None:
20
- return doc
21
23
 
22
24
  ph = find_placeholder(doc, 'text', TITLE_PLACEHOLDER_ID)
23
25
 
24
26
  if ph is None:
25
27
  return doc
26
28
 
29
+ if title is None:
30
+ for tspan in ph.placeholder.findall('./{%s}%s'
31
+ % (doc.default_namespace,
32
+ 'tspan')):
33
+ tspan.text = ''
34
+
35
+ return doc
36
+
27
37
  width = float(doc.get_attribute(ph.wrapper, 'width'))
28
38
  height = float(doc.get_attribute(ph.wrapper, 'height'))
29
39
 
@@ -42,7 +52,7 @@ def _create_title_image(title: str,
42
52
  width: int,
43
53
  height: int,
44
54
  disposition: str,
45
- resi_instance: any,
55
+ resi_instance: resi.Instance,
46
56
  resi_url: str
47
57
  ) -> str:
48
58
  text_bytes = render_text(
@@ -1,11 +1,13 @@
1
1
  from os import getpid
2
2
  from typing import Optional
3
3
 
4
+ import resi
5
+
4
6
 
5
7
  def import_into_resi(data: bytes,
6
- resi_instance: object,
8
+ resi_instance: resi.Instance,
7
9
  resi_url: str,
8
- properties: Optional[any] = None,
10
+ properties: Optional[resi.VersionProperties] = None,
9
11
  disposition: Optional[str] = None
10
12
  ) -> str:
11
13
 
@@ -233,23 +233,6 @@ def delete_in_chunks(query: QuerySet,
233
233
  return delete_in_chunks(query, chunk_size, chunks_to_delete)
234
234
 
235
235
 
236
- def update_in_chunks(query: QuerySet,
237
- chunk_size: int = 1024,
238
- chunks_to_update: int = 512,
239
- **update_kw_args):
240
- chunks_to_update -= 1
241
- rows_matched = (
242
- query.model
243
- .objects
244
- .filter(pk__in=list(
245
- query.only('pk').values_list('pk', flat=True)[:chunk_size]))
246
- .update(**update_kw_args))
247
-
248
- if rows_matched > 0 and chunks_to_update > 0:
249
- return update_in_chunks(
250
- query, chunk_size, chunks_to_update, **update_kw_args)
251
-
252
-
253
236
  def cursor_to_dict(cursor) -> List[Dict[str, Union[str, int]]]:
254
237
  columns = [col[0] for col in cursor.description]
255
238
  return [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: papyru
3
- Version: 2.11.0.dev102
3
+ Version: 2.11.1.dev114
4
4
  Summary: minimal REST library with OpenAPI-based validation for django
5
5
  Home-page: http://www.puzzleyou.net/
6
6
  Author: puzzleYOU GmbH
@@ -2,7 +2,7 @@ from setuptools import setup
2
2
 
3
3
  setup(
4
4
  name='papyru',
5
- version='2.11.0.dev102',
5
+ version='2.11.1.dev114',
6
6
  description=(
7
7
  'minimal REST library with OpenAPI-based validation for django'),
8
8
  author='puzzleYOU GmbH',
File without changes
File without changes