zebra-day 0.0.37__py3-none-any.whl → 1.0.2__py3-none-any.whl

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 (181) hide show
  1. zebra_day/__init__.py +35 -0
  2. zebra_day/bin/__init__.py +0 -0
  3. zebra_day/bin/fetch_zebra_config.py +15 -0
  4. zebra_day/bin/generate_coord_grid_zpl.py +50 -0
  5. zebra_day/bin/print_zpl_from_file.py +21 -0
  6. zebra_day/bin/probe_new_label_dimensions.py +75 -0
  7. zebra_day/bin/scan_for_networed_zebra_printers_arp_scan.sh +1 -0
  8. zebra_day/bin/scan_for_networed_zebra_printers_curl.sh +30 -0
  9. zebra_day/bin/zserve.py +701 -259
  10. zebra_day/cli/__init__.py +240 -0
  11. zebra_day/cli/cognito.py +121 -0
  12. zebra_day/cli/gui.py +255 -0
  13. zebra_day/cli/printer.py +168 -0
  14. zebra_day/cli/template.py +176 -0
  15. zebra_day/cmd_mgr.py +35 -0
  16. zebra_day/etc/Monoid-Regular-HalfTight-Dollar-0-1-l.ttf +0 -0
  17. zebra_day/etc/label_styles/blank.zpl +0 -0
  18. zebra_day/etc/label_styles/cornersStripOf4Squares_1inX1in.zpl +55 -0
  19. zebra_day/etc/label_styles/corners_1inX2in.zpl +28 -0
  20. zebra_day/etc/label_styles/corners_20cmX30cm.zpl +6 -0
  21. zebra_day/etc/label_styles/corners_smallTube.zpl +7 -0
  22. zebra_day/etc/label_styles/corners_unspecifiedDimensions.zpl +15 -0
  23. zebra_day/etc/label_styles/generic_2inX1in.zpl +21 -0
  24. zebra_day/etc/label_styles/plate_1inX0.25in.zpl +9 -0
  25. zebra_day/etc/label_styles/plate_1inX0.25inHD.zpl +9 -0
  26. zebra_day/etc/label_styles/smallTubeWdotHD_prod.zpl +8 -0
  27. zebra_day/etc/label_styles/smallTubeWdot_corners.zpl +7 -0
  28. zebra_day/etc/label_styles/smallTubeWdot_prod.zpl +8 -0
  29. zebra_day/etc/label_styles/smallTubeWdot_prodAlt1.zpl +6 -0
  30. zebra_day/etc/label_styles/smallTubeWdot_prodAlt1b.zpl +3 -0
  31. zebra_day/etc/label_styles/smallTubeWdot_prodV2.zpl +8 -0
  32. zebra_day/etc/label_styles/smallTubeWdot_reagent.zpl +29 -0
  33. zebra_day/etc/label_styles/stripOf4Squares_1inX1in.zpl +32 -0
  34. zebra_day/etc/label_styles/test_800dX800dCoordinateArray.zpl +1 -0
  35. zebra_day/etc/label_styles/tmps/.hold +0 -0
  36. zebra_day/etc/label_styles/tmps/tmp_zpl_templates.here +0 -0
  37. zebra_day/etc/label_styles/tube_20mmX30mmA.zpl +7 -0
  38. zebra_day/etc/label_styles/tube_2inX0.3in.zpl +15 -0
  39. zebra_day/etc/label_styles/tube_2inX0.5in.zpl +15 -0
  40. zebra_day/etc/label_styles/tube_2inX0.5inHD.zpl +15 -0
  41. zebra_day/etc/label_styles/tube_2inX1in.zpl +25 -0
  42. zebra_day/etc/label_styles/tube_2inX1inHD.zpl +22 -0
  43. zebra_day/etc/label_styles/tube_2inX1inHDv3.zpl +21 -0
  44. zebra_day/etc/old_printer_config/.hold +0 -0
  45. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.022846_printer_config.json +1 -0
  46. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.033657_printer_config.json +1 -0
  47. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.039597_printer_config.json +3 -0
  48. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.047295_printer_config.json +1 -0
  49. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.055804_printer_config.json +1 -0
  50. zebra_day/etc/old_printer_config/2026-02-01_01:50:25.061337_printer_config.json +3 -0
  51. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.073326_printer_config.json +1 -0
  52. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.081950_printer_config.json +1 -0
  53. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.088251_printer_config.json +3 -0
  54. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.096501_printer_config.json +1 -0
  55. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.104767_printer_config.json +1 -0
  56. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.110364_printer_config.json +3 -0
  57. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.118239_printer_config.json +1 -0
  58. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.125950_printer_config.json +1 -0
  59. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.349866_printer_config.json +1 -0
  60. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.361085_printer_config.json +3 -0
  61. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.558323_printer_config.json +1 -0
  62. zebra_day/etc/old_printer_config/2026-02-01_01:51:24.565756_printer_config.json +3 -0
  63. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.739070_printer_config.json +16 -0
  64. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.753796_printer_config.json +1 -0
  65. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.760201_printer_config.json +3 -0
  66. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.768747_printer_config.json +1 -0
  67. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.775312_printer_config.json +3 -0
  68. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.782533_printer_config.json +1 -0
  69. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.789287_printer_config.json +1 -0
  70. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.794230_printer_config.json +3 -0
  71. zebra_day/etc/old_printer_config/2026-02-01_01:51:29.800021_printer_config.json +5 -0
  72. zebra_day/etc/printer_config.json +16 -0
  73. zebra_day/etc/printer_config.template.json +16 -0
  74. zebra_day/etc/tmp_printers0.json +5 -0
  75. zebra_day/etc/tmp_printers374.json +5 -0
  76. zebra_day/etc/tmp_printers383.json +5 -0
  77. zebra_day/etc/tmp_printers450.json +5 -0
  78. zebra_day/etc/tmp_printers504.json +5 -0
  79. zebra_day/etc/tmp_printers608.json +5 -0
  80. zebra_day/etc/tmp_printers657.json +5 -0
  81. zebra_day/etc/tmp_printers838.json +5 -0
  82. zebra_day/etc/tmp_printers839.json +5 -0
  83. zebra_day/etc/tmp_printers933.json +5 -0
  84. zebra_day/etc/tmp_printers957.json +5 -0
  85. zebra_day/exceptions.py +88 -0
  86. zebra_day/files/.hold +0 -0
  87. zebra_day/files/hold +0 -0
  88. zebra_day/files/test_png_17696.png +0 -0
  89. zebra_day/files/test_png_23477.png +0 -0
  90. zebra_day/files/test_png_28157.png +0 -0
  91. zebra_day/files/test_png_35832.png +0 -0
  92. zebra_day/files/test_png_36400.png +0 -0
  93. zebra_day/files/test_png_40816.png +0 -0
  94. zebra_day/files/test_png_49564.png +0 -0
  95. zebra_day/files/test_png_53848.png +0 -0
  96. zebra_day/files/test_png_62542.png +0 -0
  97. zebra_day/files/test_png_91597.png +0 -0
  98. zebra_day/files/test_png_93633.png +0 -0
  99. zebra_day/files/tmpbjo3k7q1.png +0 -0
  100. zebra_day/files/tmpigtr4pwy.png +0 -0
  101. zebra_day/files/zpl_label_tube_2inX1in_2026-02-01_01:51:24.370964.png +0 -0
  102. zebra_day/logging_config.py +74 -0
  103. zebra_day/logs/.hold +0 -0
  104. zebra_day/logs/print_requests.log +2 -0
  105. zebra_day/paths.py +143 -0
  106. zebra_day/print_mgr.py +487 -103
  107. zebra_day/static/datschund.css +140 -0
  108. zebra_day/static/datschund.png +0 -0
  109. zebra_day/static/daylily.png +0 -0
  110. zebra_day/static/favicon.svg +20 -0
  111. zebra_day/static/general.css +99 -0
  112. zebra_day/static/js/zebra_modern.js +172 -0
  113. zebra_day/static/lsmc.css +354 -0
  114. zebra_day/static/moon.jpeg +0 -0
  115. zebra_day/static/oakland.css +197 -0
  116. zebra_day/static/petrichor.css +150 -0
  117. zebra_day/static/popday_daylily.css +140 -0
  118. zebra_day/static/style.css +183 -0
  119. zebra_day/static/triangles.css +122 -0
  120. zebra_day/static/tron.css +277 -0
  121. zebra_day/static/zebra_modern.css +771 -0
  122. zebra_day/static/zebras.css +176 -0
  123. zebra_day/templates/base.html +36 -0
  124. zebra_day/templates/bpr.html +72 -0
  125. zebra_day/templates/build_new_config.html +36 -0
  126. zebra_day/templates/build_print_request.html +32 -0
  127. zebra_day/templates/chg_ui_style.html +19 -0
  128. zebra_day/templates/edit_template.html +128 -0
  129. zebra_day/templates/edit_zpl.html +37 -0
  130. zebra_day/templates/index.html +82 -0
  131. zebra_day/templates/legacy/base.html +37 -0
  132. zebra_day/templates/legacy/bpr.html +72 -0
  133. zebra_day/templates/legacy/build_new_config.html +36 -0
  134. zebra_day/templates/legacy/build_print_request.html +32 -0
  135. zebra_day/templates/legacy/chg_ui_style.html +19 -0
  136. zebra_day/templates/legacy/edit_template.html +128 -0
  137. zebra_day/templates/legacy/edit_zpl.html +37 -0
  138. zebra_day/templates/legacy/index.html +82 -0
  139. zebra_day/templates/legacy/list_prior_configs.html +24 -0
  140. zebra_day/templates/legacy/print_result.html +30 -0
  141. zebra_day/templates/legacy/printer_details.html +25 -0
  142. zebra_day/templates/legacy/printer_status.html +70 -0
  143. zebra_day/templates/legacy/save_result.html +17 -0
  144. zebra_day/templates/legacy/send_print_request.html +34 -0
  145. zebra_day/templates/legacy/simple_print.html +94 -0
  146. zebra_day/templates/legacy/view_pstation_json.html +29 -0
  147. zebra_day/templates/list_prior_configs.html +24 -0
  148. zebra_day/templates/modern/base.html +98 -0
  149. zebra_day/templates/modern/config.html +141 -0
  150. zebra_day/templates/modern/dashboard.html +160 -0
  151. zebra_day/templates/modern/print_request.html +141 -0
  152. zebra_day/templates/modern/print_result.html +88 -0
  153. zebra_day/templates/modern/printer_detail.html +117 -0
  154. zebra_day/templates/modern/printers.html +133 -0
  155. zebra_day/templates/modern/save_result.html +46 -0
  156. zebra_day/templates/modern/template_editor.html +172 -0
  157. zebra_day/templates/modern/templates.html +122 -0
  158. zebra_day/templates/print_result.html +30 -0
  159. zebra_day/templates/printer_details.html +25 -0
  160. zebra_day/templates/printer_status.html +70 -0
  161. zebra_day/templates/save_result.html +17 -0
  162. zebra_day/templates/send_print_request.html +34 -0
  163. zebra_day/templates/simple_print.html +94 -0
  164. zebra_day/templates/view_pstation_json.html +29 -0
  165. zebra_day/web/__init__.py +9 -0
  166. zebra_day/web/app.py +171 -0
  167. zebra_day/web/auth.py +172 -0
  168. zebra_day/web/middleware.py +159 -0
  169. zebra_day/web/routers/__init__.py +2 -0
  170. zebra_day/web/routers/api.py +163 -0
  171. zebra_day/web/routers/ui.py +1051 -0
  172. zebra_day/zpl_renderer.py +273 -0
  173. zebra_day-1.0.2.dist-info/METADATA +786 -0
  174. zebra_day-1.0.2.dist-info/RECORD +179 -0
  175. {zebra_day-0.0.37.dist-info → zebra_day-1.0.2.dist-info}/WHEEL +1 -1
  176. zebra_day-1.0.2.dist-info/entry_points.txt +4 -0
  177. zebra_day/bin/te.py +0 -905
  178. zebra_day-0.0.37.dist-info/METADATA +0 -1177
  179. zebra_day-0.0.37.dist-info/RECORD +0 -10
  180. {zebra_day-0.0.37.dist-info → zebra_day-1.0.2.dist-info/licenses}/LICENSE +0 -0
  181. {zebra_day-0.0.37.dist-info → zebra_day-1.0.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1 @@
1
+ ^XA^FO0,0^A0N,18,18^FD0^FS^FO0,20^A0N,18,18^FD0^FS^FO0,50^A0N,18,18^FD0^FS^FO0,70^A0N,18,18^FD50^FS^FO0,100^A0N,18,18^FD0^FS^FO0,120^A0N,18,18^FD100^FS^FO0,150^A0N,18,18^FD0^FS^FO0,170^A0N,18,18^FD150^FS^FO0,200^A0N,18,18^FD0^FS^FO0,220^A0N,18,18^FD200^FS^FO0,250^A0N,18,18^FD0^FS^FO0,270^A0N,18,18^FD250^FS^FO0,300^A0N,18,18^FD0^FS^FO0,320^A0N,18,18^FD300^FS^FO0,350^A0N,18,18^FD0^FS^FO0,370^A0N,18,18^FD350^FS^FO0,400^A0N,18,18^FD0^FS^FO0,420^A0N,18,18^FD400^FS^FO0,450^A0N,18,18^FD0^FS^FO0,470^A0N,18,18^FD450^FS^FO0,500^A0N,18,18^FD0^FS^FO0,520^A0N,18,18^FD500^FS^FO0,550^A0N,18,18^FD0^FS^FO0,570^A0N,18,18^FD550^FS^FO0,600^A0N,18,18^FD0^FS^FO0,620^A0N,18,18^FD600^FS^FO0,650^A0N,18,18^FD0^FS^FO0,670^A0N,18,18^FD650^FS^FO0,700^A0N,18,18^FD0^FS^FO0,720^A0N,18,18^FD700^FS^FO0,750^A0N,18,18^FD0^FS^FO0,770^A0N,18,18^FD750^FS^FO50,0^A0N,18,18^FD50^FS^FO50,20^A0N,18,18^FD0^FS^FO50,50^A0N,18,18^FD50^FS^FO50,70^A0N,18,18^FD50^FS^FO50,100^A0N,18,18^FD50^FS^FO50,120^A0N,18,18^FD100^FS^FO50,150^A0N,18,18^FD50^FS^FO50,170^A0N,18,18^FD150^FS^FO50,200^A0N,18,18^FD50^FS^FO50,220^A0N,18,18^FD200^FS^FO50,250^A0N,18,18^FD50^FS^FO50,270^A0N,18,18^FD250^FS^FO50,300^A0N,18,18^FD50^FS^FO50,320^A0N,18,18^FD300^FS^FO50,350^A0N,18,18^FD50^FS^FO50,370^A0N,18,18^FD350^FS^FO50,400^A0N,18,18^FD50^FS^FO50,420^A0N,18,18^FD400^FS^FO50,450^A0N,18,18^FD50^FS^FO50,470^A0N,18,18^FD450^FS^FO50,500^A0N,18,18^FD50^FS^FO50,520^A0N,18,18^FD500^FS^FO50,550^A0N,18,18^FD50^FS^FO50,570^A0N,18,18^FD550^FS^FO50,600^A0N,18,18^FD50^FS^FO50,620^A0N,18,18^FD600^FS^FO50,650^A0N,18,18^FD50^FS^FO50,670^A0N,18,18^FD650^FS^FO50,700^A0N,18,18^FD50^FS^FO50,720^A0N,18,18^FD700^FS^FO50,750^A0N,18,18^FD50^FS^FO50,770^A0N,18,18^FD750^FS^FO100,0^A0N,18,18^FD100^FS^FO100,20^A0N,18,18^FD0^FS^FO100,50^A0N,18,18^FD100^FS^FO100,70^A0N,18,18^FD50^FS^FO100,100^A0N,18,18^FD100^FS^FO100,120^A0N,18,18^FD100^FS^FO100,150^A0N,18,18^FD100^FS^FO100,170^A0N,18,18^FD150^FS^FO100,200^A0N,18,18^FD100^FS^FO100,220^A0N,18,18^FD200^FS^FO100,250^A0N,18,18^FD100^FS^FO100,270^A0N,18,18^FD250^FS^FO100,300^A0N,18,18^FD100^FS^FO100,320^A0N,18,18^FD300^FS^FO100,350^A0N,18,18^FD100^FS^FO100,370^A0N,18,18^FD350^FS^FO100,400^A0N,18,18^FD100^FS^FO100,420^A0N,18,18^FD400^FS^FO100,450^A0N,18,18^FD100^FS^FO100,470^A0N,18,18^FD450^FS^FO100,500^A0N,18,18^FD100^FS^FO100,520^A0N,18,18^FD500^FS^FO100,550^A0N,18,18^FD100^FS^FO100,570^A0N,18,18^FD550^FS^FO100,600^A0N,18,18^FD100^FS^FO100,620^A0N,18,18^FD600^FS^FO100,650^A0N,18,18^FD100^FS^FO100,670^A0N,18,18^FD650^FS^FO100,700^A0N,18,18^FD100^FS^FO100,720^A0N,18,18^FD700^FS^FO100,750^A0N,18,18^FD100^FS^FO100,770^A0N,18,18^FD750^FS^FO150,0^A0N,18,18^FD150^FS^FO150,20^A0N,18,18^FD0^FS^FO150,50^A0N,18,18^FD150^FS^FO150,70^A0N,18,18^FD50^FS^FO150,100^A0N,18,18^FD150^FS^FO150,120^A0N,18,18^FD100^FS^FO150,150^A0N,18,18^FD150^FS^FO150,170^A0N,18,18^FD150^FS^FO150,200^A0N,18,18^FD150^FS^FO150,220^A0N,18,18^FD200^FS^FO150,250^A0N,18,18^FD150^FS^FO150,270^A0N,18,18^FD250^FS^FO150,300^A0N,18,18^FD150^FS^FO150,320^A0N,18,18^FD300^FS^FO150,350^A0N,18,18^FD150^FS^FO150,370^A0N,18,18^FD350^FS^FO150,400^A0N,18,18^FD150^FS^FO150,420^A0N,18,18^FD400^FS^FO150,450^A0N,18,18^FD150^FS^FO150,470^A0N,18,18^FD450^FS^FO150,500^A0N,18,18^FD150^FS^FO150,520^A0N,18,18^FD500^FS^FO150,550^A0N,18,18^FD150^FS^FO150,570^A0N,18,18^FD550^FS^FO150,600^A0N,18,18^FD150^FS^FO150,620^A0N,18,18^FD600^FS^FO150,650^A0N,18,18^FD150^FS^FO150,670^A0N,18,18^FD650^FS^FO150,700^A0N,18,18^FD150^FS^FO150,720^A0N,18,18^FD700^FS^FO150,750^A0N,18,18^FD150^FS^FO150,770^A0N,18,18^FD750^FS^FO200,0^A0N,18,18^FD200^FS^FO200,20^A0N,18,18^FD0^FS^FO200,50^A0N,18,18^FD200^FS^FO200,70^A0N,18,18^FD50^FS^FO200,100^A0N,18,18^FD200^FS^FO200,120^A0N,18,18^FD100^FS^FO200,150^A0N,18,18^FD200^FS^FO200,170^A0N,18,18^FD150^FS^FO200,200^A0N,18,18^FD200^FS^FO200,220^A0N,18,18^FD200^FS^FO200,250^A0N,18,18^FD200^FS^FO200,270^A0N,18,18^FD250^FS^FO200,300^A0N,18,18^FD200^FS^FO200,320^A0N,18,18^FD300^FS^FO200,350^A0N,18,18^FD200^FS^FO200,370^A0N,18,18^FD350^FS^FO200,400^A0N,18,18^FD200^FS^FO200,420^A0N,18,18^FD400^FS^FO200,450^A0N,18,18^FD200^FS^FO200,470^A0N,18,18^FD450^FS^FO200,500^A0N,18,18^FD200^FS^FO200,520^A0N,18,18^FD500^FS^FO200,550^A0N,18,18^FD200^FS^FO200,570^A0N,18,18^FD550^FS^FO200,600^A0N,18,18^FD200^FS^FO200,620^A0N,18,18^FD600^FS^FO200,650^A0N,18,18^FD200^FS^FO200,670^A0N,18,18^FD650^FS^FO200,700^A0N,18,18^FD200^FS^FO200,720^A0N,18,18^FD700^FS^FO200,750^A0N,18,18^FD200^FS^FO200,770^A0N,18,18^FD750^FS^FO250,0^A0N,18,18^FD250^FS^FO250,20^A0N,18,18^FD0^FS^FO250,50^A0N,18,18^FD250^FS^FO250,70^A0N,18,18^FD50^FS^FO250,100^A0N,18,18^FD250^FS^FO250,120^A0N,18,18^FD100^FS^FO250,150^A0N,18,18^FD250^FS^FO250,170^A0N,18,18^FD150^FS^FO250,200^A0N,18,18^FD250^FS^FO250,220^A0N,18,18^FD200^FS^FO250,250^A0N,18,18^FD250^FS^FO250,270^A0N,18,18^FD250^FS^FO250,300^A0N,18,18^FD250^FS^FO250,320^A0N,18,18^FD300^FS^FO250,350^A0N,18,18^FD250^FS^FO250,370^A0N,18,18^FD350^FS^FO250,400^A0N,18,18^FD250^FS^FO250,420^A0N,18,18^FD400^FS^FO250,450^A0N,18,18^FD250^FS^FO250,470^A0N,18,18^FD450^FS^FO250,500^A0N,18,18^FD250^FS^FO250,520^A0N,18,18^FD500^FS^FO250,550^A0N,18,18^FD250^FS^FO250,570^A0N,18,18^FD550^FS^FO250,600^A0N,18,18^FD250^FS^FO250,620^A0N,18,18^FD600^FS^FO250,650^A0N,18,18^FD250^FS^FO250,670^A0N,18,18^FD650^FS^FO250,700^A0N,18,18^FD250^FS^FO250,720^A0N,18,18^FD700^FS^FO250,750^A0N,18,18^FD250^FS^FO250,770^A0N,18,18^FD750^FS^FO300,0^A0N,18,18^FD300^FS^FO300,20^A0N,18,18^FD0^FS^FO300,50^A0N,18,18^FD300^FS^FO300,70^A0N,18,18^FD50^FS^FO300,100^A0N,18,18^FD300^FS^FO300,120^A0N,18,18^FD100^FS^FO300,150^A0N,18,18^FD300^FS^FO300,170^A0N,18,18^FD150^FS^FO300,200^A0N,18,18^FD300^FS^FO300,220^A0N,18,18^FD200^FS^FO300,250^A0N,18,18^FD300^FS^FO300,270^A0N,18,18^FD250^FS^FO300,300^A0N,18,18^FD300^FS^FO300,320^A0N,18,18^FD300^FS^FO300,350^A0N,18,18^FD300^FS^FO300,370^A0N,18,18^FD350^FS^FO300,400^A0N,18,18^FD300^FS^FO300,420^A0N,18,18^FD400^FS^FO300,450^A0N,18,18^FD300^FS^FO300,470^A0N,18,18^FD450^FS^FO300,500^A0N,18,18^FD300^FS^FO300,520^A0N,18,18^FD500^FS^FO300,550^A0N,18,18^FD300^FS^FO300,570^A0N,18,18^FD550^FS^FO300,600^A0N,18,18^FD300^FS^FO300,620^A0N,18,18^FD600^FS^FO300,650^A0N,18,18^FD300^FS^FO300,670^A0N,18,18^FD650^FS^FO300,700^A0N,18,18^FD300^FS^FO300,720^A0N,18,18^FD700^FS^FO300,750^A0N,18,18^FD300^FS^FO300,770^A0N,18,18^FD750^FS^FO350,0^A0N,18,18^FD350^FS^FO350,20^A0N,18,18^FD0^FS^FO350,50^A0N,18,18^FD350^FS^FO350,70^A0N,18,18^FD50^FS^FO350,100^A0N,18,18^FD350^FS^FO350,120^A0N,18,18^FD100^FS^FO350,150^A0N,18,18^FD350^FS^FO350,170^A0N,18,18^FD150^FS^FO350,200^A0N,18,18^FD350^FS^FO350,220^A0N,18,18^FD200^FS^FO350,250^A0N,18,18^FD350^FS^FO350,270^A0N,18,18^FD250^FS^FO350,300^A0N,18,18^FD350^FS^FO350,320^A0N,18,18^FD300^FS^FO350,350^A0N,18,18^FD350^FS^FO350,370^A0N,18,18^FD350^FS^FO350,400^A0N,18,18^FD350^FS^FO350,420^A0N,18,18^FD400^FS^FO350,450^A0N,18,18^FD350^FS^FO350,470^A0N,18,18^FD450^FS^FO350,500^A0N,18,18^FD350^FS^FO350,520^A0N,18,18^FD500^FS^FO350,550^A0N,18,18^FD350^FS^FO350,570^A0N,18,18^FD550^FS^FO350,600^A0N,18,18^FD350^FS^FO350,620^A0N,18,18^FD600^FS^FO350,650^A0N,18,18^FD350^FS^FO350,670^A0N,18,18^FD650^FS^FO350,700^A0N,18,18^FD350^FS^FO350,720^A0N,18,18^FD700^FS^FO350,750^A0N,18,18^FD350^FS^FO350,770^A0N,18,18^FD750^FS^FO400,0^A0N,18,18^FD400^FS^FO400,20^A0N,18,18^FD0^FS^FO400,50^A0N,18,18^FD400^FS^FO400,70^A0N,18,18^FD50^FS^FO400,100^A0N,18,18^FD400^FS^FO400,120^A0N,18,18^FD100^FS^FO400,150^A0N,18,18^FD400^FS^FO400,170^A0N,18,18^FD150^FS^FO400,200^A0N,18,18^FD400^FS^FO400,220^A0N,18,18^FD200^FS^FO400,250^A0N,18,18^FD400^FS^FO400,270^A0N,18,18^FD250^FS^FO400,300^A0N,18,18^FD400^FS^FO400,320^A0N,18,18^FD300^FS^FO400,350^A0N,18,18^FD400^FS^FO400,370^A0N,18,18^FD350^FS^FO400,400^A0N,18,18^FD400^FS^FO400,420^A0N,18,18^FD400^FS^FO400,450^A0N,18,18^FD400^FS^FO400,470^A0N,18,18^FD450^FS^FO400,500^A0N,18,18^FD400^FS^FO400,520^A0N,18,18^FD500^FS^FO400,550^A0N,18,18^FD400^FS^FO400,570^A0N,18,18^FD550^FS^FO400,600^A0N,18,18^FD400^FS^FO400,620^A0N,18,18^FD600^FS^FO400,650^A0N,18,18^FD400^FS^FO400,670^A0N,18,18^FD650^FS^FO400,700^A0N,18,18^FD400^FS^FO400,720^A0N,18,18^FD700^FS^FO400,750^A0N,18,18^FD400^FS^FO400,770^A0N,18,18^FD750^FS^FO450,0^A0N,18,18^FD450^FS^FO450,20^A0N,18,18^FD0^FS^FO450,50^A0N,18,18^FD450^FS^FO450,70^A0N,18,18^FD50^FS^FO450,100^A0N,18,18^FD450^FS^FO450,120^A0N,18,18^FD100^FS^FO450,150^A0N,18,18^FD450^FS^FO450,170^A0N,18,18^FD150^FS^FO450,200^A0N,18,18^FD450^FS^FO450,220^A0N,18,18^FD200^FS^FO450,250^A0N,18,18^FD450^FS^FO450,270^A0N,18,18^FD250^FS^FO450,300^A0N,18,18^FD450^FS^FO450,320^A0N,18,18^FD300^FS^FO450,350^A0N,18,18^FD450^FS^FO450,370^A0N,18,18^FD350^FS^FO450,400^A0N,18,18^FD450^FS^FO450,420^A0N,18,18^FD400^FS^FO450,450^A0N,18,18^FD450^FS^FO450,470^A0N,18,18^FD450^FS^FO450,500^A0N,18,18^FD450^FS^FO450,520^A0N,18,18^FD500^FS^FO450,550^A0N,18,18^FD450^FS^FO450,570^A0N,18,18^FD550^FS^FO450,600^A0N,18,18^FD450^FS^FO450,620^A0N,18,18^FD600^FS^FO450,650^A0N,18,18^FD450^FS^FO450,670^A0N,18,18^FD650^FS^FO450,700^A0N,18,18^FD450^FS^FO450,720^A0N,18,18^FD700^FS^FO450,750^A0N,18,18^FD450^FS^FO450,770^A0N,18,18^FD750^FS^FO500,0^A0N,18,18^FD500^FS^FO500,20^A0N,18,18^FD0^FS^FO500,50^A0N,18,18^FD500^FS^FO500,70^A0N,18,18^FD50^FS^FO500,100^A0N,18,18^FD500^FS^FO500,120^A0N,18,18^FD100^FS^FO500,150^A0N,18,18^FD500^FS^FO500,170^A0N,18,18^FD150^FS^FO500,200^A0N,18,18^FD500^FS^FO500,220^A0N,18,18^FD200^FS^FO500,250^A0N,18,18^FD500^FS^FO500,270^A0N,18,18^FD250^FS^FO500,300^A0N,18,18^FD500^FS^FO500,320^A0N,18,18^FD300^FS^FO500,350^A0N,18,18^FD500^FS^FO500,370^A0N,18,18^FD350^FS^FO500,400^A0N,18,18^FD500^FS^FO500,420^A0N,18,18^FD400^FS^FO500,450^A0N,18,18^FD500^FS^FO500,470^A0N,18,18^FD450^FS^FO500,500^A0N,18,18^FD500^FS^FO500,520^A0N,18,18^FD500^FS^FO500,550^A0N,18,18^FD500^FS^FO500,570^A0N,18,18^FD550^FS^FO500,600^A0N,18,18^FD500^FS^FO500,620^A0N,18,18^FD600^FS^FO500,650^A0N,18,18^FD500^FS^FO500,670^A0N,18,18^FD650^FS^FO500,700^A0N,18,18^FD500^FS^FO500,720^A0N,18,18^FD700^FS^FO500,750^A0N,18,18^FD500^FS^FO500,770^A0N,18,18^FD750^FS^FO550,0^A0N,18,18^FD550^FS^FO550,20^A0N,18,18^FD0^FS^FO550,50^A0N,18,18^FD550^FS^FO550,70^A0N,18,18^FD50^FS^FO550,100^A0N,18,18^FD550^FS^FO550,120^A0N,18,18^FD100^FS^FO550,150^A0N,18,18^FD550^FS^FO550,170^A0N,18,18^FD150^FS^FO550,200^A0N,18,18^FD550^FS^FO550,220^A0N,18,18^FD200^FS^FO550,250^A0N,18,18^FD550^FS^FO550,270^A0N,18,18^FD250^FS^FO550,300^A0N,18,18^FD550^FS^FO550,320^A0N,18,18^FD300^FS^FO550,350^A0N,18,18^FD550^FS^FO550,370^A0N,18,18^FD350^FS^FO550,400^A0N,18,18^FD550^FS^FO550,420^A0N,18,18^FD400^FS^FO550,450^A0N,18,18^FD550^FS^FO550,470^A0N,18,18^FD450^FS^FO550,500^A0N,18,18^FD550^FS^FO550,520^A0N,18,18^FD500^FS^FO550,550^A0N,18,18^FD550^FS^FO550,570^A0N,18,18^FD550^FS^FO550,600^A0N,18,18^FD550^FS^FO550,620^A0N,18,18^FD600^FS^FO550,650^A0N,18,18^FD550^FS^FO550,670^A0N,18,18^FD650^FS^FO550,700^A0N,18,18^FD550^FS^FO550,720^A0N,18,18^FD700^FS^FO550,750^A0N,18,18^FD550^FS^FO550,770^A0N,18,18^FD750^FS^FO600,0^A0N,18,18^FD600^FS^FO600,20^A0N,18,18^FD0^FS^FO600,50^A0N,18,18^FD600^FS^FO600,70^A0N,18,18^FD50^FS^FO600,100^A0N,18,18^FD600^FS^FO600,120^A0N,18,18^FD100^FS^FO600,150^A0N,18,18^FD600^FS^FO600,170^A0N,18,18^FD150^FS^FO600,200^A0N,18,18^FD600^FS^FO600,220^A0N,18,18^FD200^FS^FO600,250^A0N,18,18^FD600^FS^FO600,270^A0N,18,18^FD250^FS^FO600,300^A0N,18,18^FD600^FS^FO600,320^A0N,18,18^FD300^FS^FO600,350^A0N,18,18^FD600^FS^FO600,370^A0N,18,18^FD350^FS^FO600,400^A0N,18,18^FD600^FS^FO600,420^A0N,18,18^FD400^FS^FO600,450^A0N,18,18^FD600^FS^FO600,470^A0N,18,18^FD450^FS^FO600,500^A0N,18,18^FD600^FS^FO600,520^A0N,18,18^FD500^FS^FO600,550^A0N,18,18^FD600^FS^FO600,570^A0N,18,18^FD550^FS^FO600,600^A0N,18,18^FD600^FS^FO600,620^A0N,18,18^FD600^FS^FO600,650^A0N,18,18^FD600^FS^FO600,670^A0N,18,18^FD650^FS^FO600,700^A0N,18,18^FD600^FS^FO600,720^A0N,18,18^FD700^FS^FO600,750^A0N,18,18^FD600^FS^FO600,770^A0N,18,18^FD750^FS^FO650,0^A0N,18,18^FD650^FS^FO650,20^A0N,18,18^FD0^FS^FO650,50^A0N,18,18^FD650^FS^FO650,70^A0N,18,18^FD50^FS^FO650,100^A0N,18,18^FD650^FS^FO650,120^A0N,18,18^FD100^FS^FO650,150^A0N,18,18^FD650^FS^FO650,170^A0N,18,18^FD150^FS^FO650,200^A0N,18,18^FD650^FS^FO650,220^A0N,18,18^FD200^FS^FO650,250^A0N,18,18^FD650^FS^FO650,270^A0N,18,18^FD250^FS^FO650,300^A0N,18,18^FD650^FS^FO650,320^A0N,18,18^FD300^FS^FO650,350^A0N,18,18^FD650^FS^FO650,370^A0N,18,18^FD350^FS^FO650,400^A0N,18,18^FD650^FS^FO650,420^A0N,18,18^FD400^FS^FO650,450^A0N,18,18^FD650^FS^FO650,470^A0N,18,18^FD450^FS^FO650,500^A0N,18,18^FD650^FS^FO650,520^A0N,18,18^FD500^FS^FO650,550^A0N,18,18^FD650^FS^FO650,570^A0N,18,18^FD550^FS^FO650,600^A0N,18,18^FD650^FS^FO650,620^A0N,18,18^FD600^FS^FO650,650^A0N,18,18^FD650^FS^FO650,670^A0N,18,18^FD650^FS^FO650,700^A0N,18,18^FD650^FS^FO650,720^A0N,18,18^FD700^FS^FO650,750^A0N,18,18^FD650^FS^FO650,770^A0N,18,18^FD750^FS^FO700,0^A0N,18,18^FD700^FS^FO700,20^A0N,18,18^FD0^FS^FO700,50^A0N,18,18^FD700^FS^FO700,70^A0N,18,18^FD50^FS^FO700,100^A0N,18,18^FD700^FS^FO700,120^A0N,18,18^FD100^FS^FO700,150^A0N,18,18^FD700^FS^FO700,170^A0N,18,18^FD150^FS^FO700,200^A0N,18,18^FD700^FS^FO700,220^A0N,18,18^FD200^FS^FO700,250^A0N,18,18^FD700^FS^FO700,270^A0N,18,18^FD250^FS^FO700,300^A0N,18,18^FD700^FS^FO700,320^A0N,18,18^FD300^FS^FO700,350^A0N,18,18^FD700^FS^FO700,370^A0N,18,18^FD350^FS^FO700,400^A0N,18,18^FD700^FS^FO700,420^A0N,18,18^FD400^FS^FO700,450^A0N,18,18^FD700^FS^FO700,470^A0N,18,18^FD450^FS^FO700,500^A0N,18,18^FD700^FS^FO700,520^A0N,18,18^FD500^FS^FO700,550^A0N,18,18^FD700^FS^FO700,570^A0N,18,18^FD550^FS^FO700,600^A0N,18,18^FD700^FS^FO700,620^A0N,18,18^FD600^FS^FO700,650^A0N,18,18^FD700^FS^FO700,670^A0N,18,18^FD650^FS^FO700,700^A0N,18,18^FD700^FS^FO700,720^A0N,18,18^FD700^FS^FO700,750^A0N,18,18^FD700^FS^FO700,770^A0N,18,18^FD750^FS^FO750,0^A0N,18,18^FD750^FS^FO750,20^A0N,18,18^FD0^FS^FO750,50^A0N,18,18^FD750^FS^FO750,70^A0N,18,18^FD50^FS^FO750,100^A0N,18,18^FD750^FS^FO750,120^A0N,18,18^FD100^FS^FO750,150^A0N,18,18^FD750^FS^FO750,170^A0N,18,18^FD150^FS^FO750,200^A0N,18,18^FD750^FS^FO750,220^A0N,18,18^FD200^FS^FO750,250^A0N,18,18^FD750^FS^FO750,270^A0N,18,18^FD250^FS^FO750,300^A0N,18,18^FD750^FS^FO750,320^A0N,18,18^FD300^FS^FO750,350^A0N,18,18^FD750^FS^FO750,370^A0N,18,18^FD350^FS^FO750,400^A0N,18,18^FD750^FS^FO750,420^A0N,18,18^FD400^FS^FO750,450^A0N,18,18^FD750^FS^FO750,470^A0N,18,18^FD450^FS^FO750,500^A0N,18,18^FD750^FS^FO750,520^A0N,18,18^FD500^FS^FO750,550^A0N,18,18^FD750^FS^FO750,570^A0N,18,18^FD550^FS^FO750,600^A0N,18,18^FD750^FS^FO750,620^A0N,18,18^FD600^FS^FO750,650^A0N,18,18^FD750^FS^FO750,670^A0N,18,18^FD650^FS^FO750,700^A0N,18,18^FD750^FS^FO750,720^A0N,18,18^FD700^FS^FO750,750^A0N,18,18^FD750^FS^FO750,770^A0N,18,18^FD750^FS^XZ
File without changes
File without changes
@@ -0,0 +1,7 @@
1
+ ^XA
2
+ ^FO20,20^BY2^BCN,100,Y,N,N^FDNAVA12345678^FS // 1D Barcode (Code 128)
3
+ ^FO150,140^A0N,60,60^FDNAVA12345678^FS // Human-Readable NAVA
4
+ ^FO150,200^A0N,60,60^FDMA^FS // Human-Readable MA
5
+ ^FO150,260^A0N,40,40^FD2023-10-19^FS // Date
6
+ ^FO150,300^A0N,40,40^FDcommercial^FS // String
7
+ ^XZ
@@ -0,0 +1,15 @@
1
+ ^XA
2
+ ^FO200,20
3
+ ^BY1
4
+ ^B3N,N,40,N,N
5
+ ^FD{uid_barcode}^FS
6
+ ^FO200,70
7
+ ^ADN,30,20
8
+ ^FD{uid_barcode}^FS
9
+ ^FO460,18
10
+ ^ADN,24,14
11
+ ^FD{alt_a}^FS
12
+ ^FO515,62
13
+ ^ADN,40,26
14
+ ^FD{alt_b}^FS
15
+ ^XZ
@@ -0,0 +1,15 @@
1
+ ^XA
2
+ ^FO235,10
3
+ ^BY2
4
+ ^B3N,N,28,N,N
5
+ ^FD{uid_barcode}^FS
6
+ ^FO235,42
7
+ ^ADN,30,20
8
+ ^FD{uid_barcode}^FS
9
+ ^FO235,75
10
+ ^ADN,24,14
11
+ ^FD{alt_a}^FS
12
+ ^FO455,76
13
+ ^ADN,24,14
14
+ ^FD{alt_b}^FS
15
+ ^XZ
@@ -0,0 +1,15 @@
1
+ ^XA
2
+ ^FO305,25
3
+ ^BY2
4
+ ^B3N,N,45,N,N
5
+ ^FD{uid_barcode}^FS
6
+ ^FO300,80
7
+ ^ADN,30,20
8
+ ^FD{uid_barcode}^FS
9
+ ^FO300,130
10
+ ^ADN,24,14
11
+ ^FD{alt_a}^FS
12
+ ^FO515,123
13
+ ^ADN,30,20
14
+ ^FD{alt_b}^FS
15
+ ^XZ
@@ -0,0 +1,25 @@
1
+ ^XA
2
+ ^FO235,20
3
+ ^BY1
4
+ ^B3N,N,40,N,N
5
+ ^FD{uid_barcode}^FS
6
+ ^FO235,70
7
+ ^ADN,30,20
8
+ ^FD{uid_barcode}^FS
9
+ ^FO235,115
10
+ ^ADN,25,12
11
+ ^FD{alt_a}^FS
12
+ ^FO235,145
13
+ ^ADN,25,12
14
+ ^FD{alt_b}^FS
15
+ ^FO70,180
16
+ ^FO235,170
17
+ ^ADN,30,20
18
+ ^FD{alt_c}^FS
19
+ ^FO300,180
20
+ ^ADN,25,12
21
+ ^FD{alt_d}^FS
22
+ ^FO490,180
23
+ ^ADN,25,12
24
+ ^FD{alt_e}^FS
25
+ ^XZ
@@ -0,0 +1,22 @@
1
+ ^XA
2
+ ^FO235,20
3
+ ^BY2
4
+ ^B3N,N,60,N,N
5
+ ^FD{uid_barcode}^FS
6
+ ^FO235,100
7
+ ^ADN,50,30
8
+ ^FD{uid_barcode}^FS
9
+ ^FO235,170
10
+ ^ADN,30,20
11
+ ^FD{alt_a}^FS
12
+ ^FO470,170
13
+ ^ADN,30,20
14
+ ^FD{alt_b}^FS
15
+ ^FO70,210
16
+ ^FO235,220
17
+ ^ADN,50,30
18
+ ^FD{alt_c}^FS
19
+ ^FO550,235
20
+ ^ADN,30,20
21
+ ^FD{alt_d}^FS
22
+ ^XZ
@@ -0,0 +1,21 @@
1
+ ^XA
2
+ ^FO235,20
3
+ ^BY2
4
+ ^B3N,N,60,N,N
5
+ ^FD{uid_barcode}^FS
6
+ ^FO235,100
7
+ ^ADN,50,30
8
+ ^FD{uid_barcode}^FS
9
+ ^FO235,160
10
+ ^ADN,30,20
11
+ ^FD{alt_a}^FS
12
+ ^FO235,200
13
+ ^ADN,30,20
14
+ ^FD{alt_b}^FS
15
+ ^FO235,240
16
+ ^ADN,50,30
17
+ ^FD{alt_c}^FS
18
+ ^FO550,240
19
+ ^ADN,30,20
20
+ ^FD{alt_d}^FS
21
+ ^XZ
File without changes
@@ -0,0 +1,16 @@
1
+ {
2
+ "labs": {
3
+ "scan-results": {
4
+ "Download-Label-png": {
5
+ "ip_address": "dl_png",
6
+ "label_zpl_styles": [
7
+ "tube_2inX1in"
8
+ ],
9
+ "print_method": "generate png",
10
+ "model": "na",
11
+ "serial": "na",
12
+ "arp_data": "na"
13
+ }
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "labs": {
3
+ "scan-results": {
4
+ "Download-Label-png": {
5
+ "ip_address": "dl_png",
6
+ "label_zpl_styles": [
7
+ "tube_2inX1in"
8
+ ],
9
+ "print_method": "generate png",
10
+ "model": "na",
11
+ "serial": "na",
12
+ "arp_data": "na"
13
+ }
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "labs": {
3
+ "scan-results": {
4
+ "Download-Label-png": {
5
+ "ip_address": "dl_png",
6
+ "label_zpl_styles": [
7
+ "tube_2inX1in"
8
+ ],
9
+ "print_method": "generate png",
10
+ "model": "na",
11
+ "serial": "na",
12
+ "arp_data": "na"
13
+ }
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "labs": {
3
+ "test": {}
4
+ }
5
+ }
@@ -0,0 +1,88 @@
1
+ """
2
+ Custom exceptions for zebra_day.
3
+
4
+ Provides specific exception types for different error conditions.
5
+ """
6
+ from __future__ import annotations
7
+
8
+
9
+ class ZebraDayError(Exception):
10
+ """Base exception for all zebra_day errors."""
11
+
12
+ pass
13
+
14
+
15
+ class PrinterConnectionError(ZebraDayError):
16
+ """Raised when unable to connect to a printer."""
17
+
18
+ def __init__(self, printer_ip: str, message: str = ""):
19
+ self.printer_ip = printer_ip
20
+ super().__init__(f"Failed to connect to printer at {printer_ip}: {message}")
21
+
22
+
23
+ class PrinterNotFoundError(ZebraDayError):
24
+ """Raised when a printer is not found in the configuration."""
25
+
26
+ def __init__(self, printer_name: str, lab: str = ""):
27
+ self.printer_name = printer_name
28
+ self.lab = lab
29
+ msg = f"Printer '{printer_name}' not found"
30
+ if lab:
31
+ msg += f" in lab '{lab}'"
32
+ super().__init__(msg)
33
+
34
+
35
+ class ConfigError(ZebraDayError):
36
+ """Raised when there's an issue with configuration."""
37
+
38
+ def __init__(self, message: str, config_path: str = ""):
39
+ self.config_path = config_path
40
+ super().__init__(message)
41
+
42
+
43
+ class ConfigFileNotFoundError(ConfigError):
44
+ """Raised when a configuration file is not found."""
45
+
46
+ def __init__(self, path: str):
47
+ super().__init__(f"Configuration file not found: {path}", config_path=path)
48
+
49
+
50
+ class ConfigParseError(ConfigError):
51
+ """Raised when a configuration file cannot be parsed."""
52
+
53
+ def __init__(self, path: str, details: str = ""):
54
+ msg = f"Failed to parse configuration file: {path}"
55
+ if details:
56
+ msg += f" ({details})"
57
+ super().__init__(msg, config_path=path)
58
+
59
+
60
+ class LabelTemplateError(ZebraDayError):
61
+ """Raised when there's an issue with a label template."""
62
+
63
+ def __init__(self, template_name: str, message: str = ""):
64
+ self.template_name = template_name
65
+ super().__init__(f"Label template error '{template_name}': {message}")
66
+
67
+
68
+ class LabelTemplateNotFoundError(LabelTemplateError):
69
+ """Raised when a label template file is not found."""
70
+
71
+ def __init__(self, template_name: str):
72
+ super().__init__(template_name, "template not found")
73
+
74
+
75
+ class ZPLRenderError(ZebraDayError):
76
+ """Raised when ZPL rendering fails."""
77
+
78
+ def __init__(self, message: str):
79
+ super().__init__(f"ZPL render error: {message}")
80
+
81
+
82
+ class NetworkScanError(ZebraDayError):
83
+ """Raised when network scanning for printers fails."""
84
+
85
+ def __init__(self, ip_stub: str, message: str = ""):
86
+ self.ip_stub = ip_stub
87
+ super().__init__(f"Network scan failed for {ip_stub}.*: {message}")
88
+
zebra_day/files/.hold ADDED
File without changes
zebra_day/files/hold ADDED
File without changes
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,74 @@
1
+ """
2
+ Logging configuration for zebra_day.
3
+
4
+ Provides structured logging with configurable levels and formats.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import logging
9
+ import sys
10
+ from pathlib import Path
11
+ from typing import Optional
12
+
13
+
14
+ def get_logger(name: str) -> logging.Logger:
15
+ """Get a logger with the zebra_day namespace.
16
+
17
+ Args:
18
+ name: Module name (typically __name__)
19
+
20
+ Returns:
21
+ Configured logger instance
22
+ """
23
+ if name.startswith("zebra_day"):
24
+ return logging.getLogger(name)
25
+ return logging.getLogger(f"zebra_day.{name}")
26
+
27
+
28
+ def configure_logging(
29
+ level: int = logging.INFO,
30
+ log_file: Optional[Path] = None,
31
+ format_string: Optional[str] = None,
32
+ ) -> None:
33
+ """Configure zebra_day logging.
34
+
35
+ Args:
36
+ level: Logging level (default: INFO)
37
+ log_file: Optional path to log file
38
+ format_string: Optional custom format string
39
+ """
40
+ if format_string is None:
41
+ format_string = (
42
+ "\033[1m%(asctime)s\033[0m "
43
+ "[%(levelname)s] "
44
+ "%(name)s: %(message)s"
45
+ )
46
+
47
+ formatter = logging.Formatter(format_string, datefmt="%Y-%m-%d %H:%M:%S")
48
+
49
+ # Root zebra_day logger
50
+ logger = logging.getLogger("zebra_day")
51
+ logger.setLevel(level)
52
+
53
+ # Clear existing handlers to avoid duplicates
54
+ logger.handlers.clear()
55
+
56
+ # Console handler (stderr)
57
+ console_handler = logging.StreamHandler(sys.stderr)
58
+ console_handler.setLevel(level)
59
+ console_handler.setFormatter(formatter)
60
+ logger.addHandler(console_handler)
61
+
62
+ # File handler if specified
63
+ if log_file is not None:
64
+ log_file.parent.mkdir(parents=True, exist_ok=True)
65
+ file_handler = logging.FileHandler(log_file)
66
+ file_handler.setLevel(level)
67
+ file_handler.setFormatter(
68
+ logging.Formatter(
69
+ "%(asctime)s [%(levelname)s] %(name)s: %(message)s",
70
+ datefmt="%Y-%m-%d %H:%M:%S",
71
+ )
72
+ )
73
+ logger.addHandler(file_handler)
74
+
zebra_day/logs/.hold ADDED
File without changes
@@ -0,0 +1,2 @@
1
+ scan-results Download-Label-png TESTBC tube_2inX1in dl_png 1 pkg None
2
+