beanhub-cli 1.1.0__tar.gz → 1.1.2__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 (203) hide show
  1. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/PKG-INFO +15 -2
  2. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/README.md +11 -0
  3. beanhub_cli-1.1.2/beanhub_cli/import_cli.py +200 -0
  4. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/pyproject.toml +4 -2
  5. beanhub_cli-1.1.0/beanhub_cli/import_cli.py +0 -103
  6. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/LICENSE +0 -0
  7. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/__init__.py +0 -0
  8. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/aliase.py +0 -0
  9. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/cli.py +1 -1
  10. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/environment.py +0 -0
  11. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/format.py +0 -0
  12. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/__init__.py +0 -0
  13. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/__init__.py +0 -0
  14. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/constants.py +0 -0
  15. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/data/sample_forms_doc.yaml +0 -0
  16. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/deps.py +0 -0
  17. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/helpers.py +0 -0
  18. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/main.py +0 -0
  19. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/routes.py +0 -0
  20. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/settings.py +0 -0
  21. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/js/beanhub-web-react-0.1.6.js +0 -0
  22. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/js/beanhub-web-react-0.1.6.js.map +0 -0
  23. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/LICENSE +0 -0
  24. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/css/bootstrap-datepicker.css +0 -0
  25. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/css/bootstrap-datepicker.css.map +0 -0
  26. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/css/bootstrap-datepicker.min.css +0 -0
  27. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/js/bootstrap-datepicker.js +0 -0
  28. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/js/bootstrap-datepicker.min.js +0 -0
  29. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker-en-CA.min.js +0 -0
  30. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ar-DZ.min.js +0 -0
  31. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ar-tn.min.js +0 -0
  32. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js +0 -0
  33. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js +0 -0
  34. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js +0 -0
  35. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.bm.min.js +0 -0
  36. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.bn.min.js +0 -0
  37. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.br.min.js +0 -0
  38. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js +0 -0
  39. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js +0 -0
  40. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js +0 -0
  41. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js +0 -0
  42. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js +0 -0
  43. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js +0 -0
  44. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js +0 -0
  45. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.en-AU.min.js +0 -0
  46. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.en-CA.min.js +0 -0
  47. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js +0 -0
  48. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.en-IE.min.js +0 -0
  49. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.en-NZ.min.js +0 -0
  50. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.en-US.min.js +0 -0
  51. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.en-ZA.min.js +0 -0
  52. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js +0 -0
  53. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js +0 -0
  54. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js +0 -0
  55. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js +0 -0
  56. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js +0 -0
  57. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js +0 -0
  58. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js +0 -0
  59. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js +0 -0
  60. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js +0 -0
  61. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js +0 -0
  62. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js +0 -0
  63. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js +0 -0
  64. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js +0 -0
  65. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js +0 -0
  66. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js +0 -0
  67. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js +0 -0
  68. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js +0 -0
  69. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js +0 -0
  70. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js +0 -0
  71. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js +0 -0
  72. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js +0 -0
  73. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js +0 -0
  74. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js +0 -0
  75. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js +0 -0
  76. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js +0 -0
  77. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js +0 -0
  78. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js +0 -0
  79. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js +0 -0
  80. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js +0 -0
  81. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js +0 -0
  82. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js +0 -0
  83. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js +0 -0
  84. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js +0 -0
  85. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js +0 -0
  86. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js +0 -0
  87. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js +0 -0
  88. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js +0 -0
  89. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js +0 -0
  90. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js +0 -0
  91. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js +0 -0
  92. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js +0 -0
  93. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js +0 -0
  94. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js +0 -0
  95. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js +0 -0
  96. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js +0 -0
  97. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js +0 -0
  98. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js +0 -0
  99. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js +0 -0
  100. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js +0 -0
  101. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js +0 -0
  102. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js +0 -0
  103. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js +0 -0
  104. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js +0 -0
  105. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js +0 -0
  106. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js +0 -0
  107. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js +0 -0
  108. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js +0 -0
  109. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js +0 -0
  110. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js +0 -0
  111. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js +0 -0
  112. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js +0 -0
  113. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js +0 -0
  114. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js +0 -0
  115. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/LICENSE.txt +0 -0
  116. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/css/all.min.css +0 -0
  117. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/webfonts/fa-brands-400.ttf +0 -0
  118. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/webfonts/fa-brands-400.woff2 +0 -0
  119. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/webfonts/fa-regular-400.ttf +0 -0
  120. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/webfonts/fa-regular-400.woff2 +0 -0
  121. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/webfonts/fa-solid-900.ttf +0 -0
  122. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/webfonts/fa-solid-900.woff2 +0 -0
  123. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/webfonts/fa-v4compatibility.ttf +0 -0
  124. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/fontawesome6/webfonts/fa-v4compatibility.woff2 +0 -0
  125. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/LICENSE.md +0 -0
  126. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/css/select2.css +0 -0
  127. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/css/select2.min.css +0 -0
  128. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/af.js +0 -0
  129. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ar.js +0 -0
  130. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/az.js +0 -0
  131. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/bg.js +0 -0
  132. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/bn.js +0 -0
  133. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/bs.js +0 -0
  134. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ca.js +0 -0
  135. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/cs.js +0 -0
  136. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/da.js +0 -0
  137. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/de.js +0 -0
  138. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/dsb.js +0 -0
  139. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/el.js +0 -0
  140. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/en.js +0 -0
  141. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/eo.js +0 -0
  142. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/es.js +0 -0
  143. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/et.js +0 -0
  144. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/eu.js +0 -0
  145. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/fa.js +0 -0
  146. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/fi.js +0 -0
  147. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/fr.js +0 -0
  148. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/gl.js +0 -0
  149. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/he.js +0 -0
  150. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/hi.js +0 -0
  151. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/hr.js +0 -0
  152. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/hsb.js +0 -0
  153. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/hu.js +0 -0
  154. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/hy.js +0 -0
  155. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/id.js +0 -0
  156. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/is.js +0 -0
  157. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/it.js +0 -0
  158. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ja.js +0 -0
  159. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ka.js +0 -0
  160. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/km.js +0 -0
  161. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ko.js +0 -0
  162. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/lt.js +0 -0
  163. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/lv.js +0 -0
  164. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/mk.js +0 -0
  165. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ms.js +0 -0
  166. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/nb.js +0 -0
  167. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ne.js +0 -0
  168. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/nl.js +0 -0
  169. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/pa.js +0 -0
  170. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/pl.js +0 -0
  171. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ps.js +0 -0
  172. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/pt-BR.js +0 -0
  173. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/pt.js +0 -0
  174. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ro.js +0 -0
  175. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/ru.js +0 -0
  176. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/sk.js +0 -0
  177. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/sl.js +0 -0
  178. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/sq.js +0 -0
  179. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/sr-Cyrl.js +0 -0
  180. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/sr.js +0 -0
  181. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/sv.js +0 -0
  182. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/te.js +0 -0
  183. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/th.js +0 -0
  184. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/tk.js +0 -0
  185. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/tr.js +0 -0
  186. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/uk.js +0 -0
  187. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/vi.js +0 -0
  188. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/zh-CN.js +0 -0
  189. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/i18n/zh-TW.js +0 -0
  190. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/select2.full.js +0 -0
  191. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/select2.full.min.js +0 -0
  192. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/select2.js +0 -0
  193. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/static/vendor/select2/js/select2.min.js +0 -0
  194. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/templates/errors.html +0 -0
  195. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/templates/flash_messages.html +0 -0
  196. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/templates/footer.html +0 -0
  197. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/templates/form.html +0 -0
  198. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/templates/home.html +0 -0
  199. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/app/templates/layout.html +0 -0
  200. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/cli.py +0 -0
  201. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/main.py +0 -0
  202. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/forms/validator.py +0 -0
  203. {beanhub_cli-1.1.0 → beanhub_cli-1.1.2}/beanhub_cli/main.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: beanhub-cli
3
- Version: 1.1.0
3
+ Version: 1.1.2
4
4
  Summary: Command line tools for BeanHub
5
5
  License: MIT
6
6
  Author: Fang-Pen Lin
@@ -12,8 +12,10 @@ Classifier: Programming Language :: Python :: 3.10
12
12
  Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Requires-Dist: beancount-black (>=1.0.1,<2.0.0)
15
+ Requires-Dist: beancount-parser (>=1.2.3,<1.3.0)
16
+ Requires-Dist: beanhub-extract (>=0.0.7,<0.1.0)
15
17
  Requires-Dist: beanhub-forms (>=0.1.3,<0.2.0)
16
- Requires-Dist: beanhub-import (>=0.0.4,<0.0.5)
18
+ Requires-Dist: beanhub-import (>=0.1.3,<0.2.0)
17
19
  Requires-Dist: click (>=8.1.7,<9.0.0)
18
20
  Requires-Dist: fastapi (>=0.98.0,<1.0.0)
19
21
  Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
@@ -31,6 +33,7 @@ Command line tools for BeanHub or Beancount users.
31
33
  ## Features
32
34
 
33
35
  - **Local BeanHub Form web app** - You can run a [BeanHub Form](https://beanhub.io/blog/2023/07/31/automating-beancount-data-input-with-beanhub-custom-forms/) web app locally to try out your forms
36
+ - **Import** - Simple yet powerful [beanhub-import](https://github.com/LaunchPlatform/beanhub-import) allows you to define importing rules in YAML to extract transactions from CSV files and generate Beancount transactions automatically
34
37
  - **Formatter** - Advanced Beancount file formatter based on top of [beancount-black](https://github.com/LaunchPlatform/beancount-black)
35
38
  - **Basic Beancount file manipulations** - Effortless Beancount account name renaming and other basic manipulations (coming soon)
36
39
  - **Doesn't require a BeanHub account** - While some features in the future will require a BeanHub repository to operate, but we make most of them usable even without a BeanHub account
@@ -56,6 +59,16 @@ pip install beanhub-cli
56
59
  ```
57
60
  ## Usage
58
61
 
62
+ ## BeanHub Import
63
+
64
+ To run BeanHub's import feature locally, you can define your import rules at `.beanhub/imports.yaml` and then run the following command in your Beancount folder:
65
+
66
+ ```bash
67
+ bh import
68
+ ```
69
+
70
+ To learn more about the import document and how the BeanHub import feature works, you can read the README of [beanhub-import](https://github.com/LaunchPlatform/beanhub-import).
71
+
59
72
  ### BeanHub Forms web app
60
73
 
61
74
  To make it much easier for BeanHub users to test their BeanHub Forms locally, we added a simple local web app for that in beanhub-cli.
@@ -4,6 +4,7 @@ Command line tools for BeanHub or Beancount users.
4
4
  ## Features
5
5
 
6
6
  - **Local BeanHub Form web app** - You can run a [BeanHub Form](https://beanhub.io/blog/2023/07/31/automating-beancount-data-input-with-beanhub-custom-forms/) web app locally to try out your forms
7
+ - **Import** - Simple yet powerful [beanhub-import](https://github.com/LaunchPlatform/beanhub-import) allows you to define importing rules in YAML to extract transactions from CSV files and generate Beancount transactions automatically
7
8
  - **Formatter** - Advanced Beancount file formatter based on top of [beancount-black](https://github.com/LaunchPlatform/beancount-black)
8
9
  - **Basic Beancount file manipulations** - Effortless Beancount account name renaming and other basic manipulations (coming soon)
9
10
  - **Doesn't require a BeanHub account** - While some features in the future will require a BeanHub repository to operate, but we make most of them usable even without a BeanHub account
@@ -29,6 +30,16 @@ pip install beanhub-cli
29
30
  ```
30
31
  ## Usage
31
32
 
33
+ ## BeanHub Import
34
+
35
+ To run BeanHub's import feature locally, you can define your import rules at `.beanhub/imports.yaml` and then run the following command in your Beancount folder:
36
+
37
+ ```bash
38
+ bh import
39
+ ```
40
+
41
+ To learn more about the import document and how the BeanHub import feature works, you can read the README of [beanhub-import](https://github.com/LaunchPlatform/beanhub-import).
42
+
32
43
  ### BeanHub Forms web app
33
44
 
34
45
  To make it much easier for BeanHub users to test their BeanHub Forms locally, we added a simple local web app for that in beanhub-cli.
@@ -0,0 +1,200 @@
1
+ import pathlib
2
+ import sys
3
+
4
+ import click
5
+ import rich
6
+ import yaml
7
+ from beancount_black.formatter import Formatter
8
+ from beancount_parser.parser import make_parser
9
+ from beanhub_extract.data_types import Transaction
10
+ from beanhub_extract.utils import strip_base_path
11
+ from beanhub_import.data_types import GeneratedTransaction
12
+ from beanhub_import.data_types import ImportDoc
13
+ from beanhub_import.post_processor import apply_change_set
14
+ from beanhub_import.post_processor import compute_changes
15
+ from beanhub_import.post_processor import extract_existing_transactions
16
+ from beanhub_import.post_processor import txn_to_text
17
+ from beanhub_import.processor import process_imports
18
+ from rich import box
19
+ from rich.markup import escape
20
+ from rich.padding import Padding
21
+ from rich.table import Table
22
+
23
+ from .cli import cli
24
+ from .environment import Environment
25
+ from .environment import pass_env
26
+
27
+ IMPORT_DOC_FILE = pathlib.Path(".beanhub") / "imports.yaml"
28
+ TABLE_HEADER_STYLE = "yellow"
29
+ TABLE_COLUMN_STYLE = "cyan"
30
+
31
+
32
+ @cli.command(
33
+ name="import",
34
+ help="Import data into Beancount files based on the beanhub-import config file",
35
+ )
36
+ @click.option(
37
+ "-c",
38
+ "--config",
39
+ type=click.Path(exists=True, dir_okay=False),
40
+ default=".beanhub/imports.yaml",
41
+ help="The path to import config file",
42
+ )
43
+ @click.option(
44
+ "-w",
45
+ "--workdir",
46
+ type=click.Path(exists=True, dir_okay=True, file_okay=False),
47
+ default=str(pathlib.Path.cwd()),
48
+ help="The beanhub project path to work on",
49
+ )
50
+ @click.option(
51
+ "-b",
52
+ "--beanfile",
53
+ type=click.Path(exists=True, dir_okay=False, file_okay=True),
54
+ default="main.bean",
55
+ help="The path to main entry beancount file",
56
+ )
57
+ @pass_env
58
+ def main(env: Environment, config: str, workdir: str, beanfile: str):
59
+ config_path = pathlib.Path(config)
60
+ with config_path.open("rt") as fo:
61
+ doc_payload = yaml.safe_load(fo)
62
+ import_doc = ImportDoc.model_validate(doc_payload)
63
+ workdir_path = pathlib.Path(workdir)
64
+ env.logger.info(
65
+ "Loaded import doc from [green]%s[/]",
66
+ config,
67
+ extra={"markup": True, "highlighter": None},
68
+ )
69
+
70
+ generated_txns: list[GeneratedTransaction] = []
71
+ unprocessed_txns: list[Transaction] = []
72
+ for txn in process_imports(import_doc=import_doc, input_dir=workdir_path):
73
+ if isinstance(txn, GeneratedTransaction):
74
+ generated_file_path = (workdir_path / txn.file).resolve()
75
+ env.logger.info(
76
+ "Generated transaction [green]%s[/] to file [green]%s[/]",
77
+ txn.id,
78
+ strip_base_path(workdir_path.resolve(), generated_file_path),
79
+ extra={"markup": True, "highlighter": None},
80
+ )
81
+ generated_txns.append(txn)
82
+ elif isinstance(txn, Transaction):
83
+ env.logger.info(
84
+ "Skipped input transaction at [green]%s[/]:[blue]%s[/]",
85
+ txn.file,
86
+ txn.lineno,
87
+ extra={"markup": True, "highlighter": None},
88
+ )
89
+ unprocessed_txns.append(txn)
90
+ else:
91
+ raise ValueError(f"Unexpected type {type(txn)}")
92
+ env.logger.info("Generated %s transactions", len(generated_txns))
93
+ env.logger.info("Skipped %s transactions", len(unprocessed_txns))
94
+
95
+ beanfile_path = (workdir_path / pathlib.Path(beanfile)).resolve()
96
+ if workdir_path.resolve().absolute() not in beanfile_path.absolute().parents:
97
+ env.logger.error(
98
+ "The provided beanfile path %s is not a sub-path of workdir %s",
99
+ beanfile_path,
100
+ workdir_path,
101
+ )
102
+ sys.exit(-1)
103
+
104
+ env.logger.info(
105
+ "Collecting existing imported transactions from Beancount books ..."
106
+ )
107
+ parser = make_parser()
108
+ existing_txns = list(
109
+ extract_existing_transactions(
110
+ parser=parser,
111
+ bean_file=beanfile_path,
112
+ root_dir=workdir_path,
113
+ )
114
+ )
115
+ env.logger.info(
116
+ "Found %s existing imported transactions in Beancount books", len(existing_txns)
117
+ )
118
+
119
+ formatter = Formatter()
120
+ change_sets = compute_changes(
121
+ generated_txns=generated_txns,
122
+ imported_txns=existing_txns,
123
+ work_dir=workdir_path,
124
+ )
125
+ for target_file, change_set in change_sets.items():
126
+ if not target_file.exists():
127
+ if change_set.remove or change_set.update:
128
+ raise ValueError("Expect new transactions to add only")
129
+ env.logger.info(
130
+ "Create new bean file %s with %s transactions",
131
+ target_file,
132
+ len(change_set.add),
133
+ )
134
+
135
+ bean_content = "\n\n".join(map(txn_to_text, change_set.add))
136
+ new_tree = parser.parse(bean_content)
137
+ else:
138
+ env.logger.info(
139
+ "Applying change sets (add=%s, update=%s, remove=%s) to %s",
140
+ len(change_set.add),
141
+ len(change_set.update),
142
+ len(change_set.remove),
143
+ target_file,
144
+ )
145
+ tree = parser.parse(target_file.read_text())
146
+ new_tree = apply_change_set(tree=tree, change_set=change_set)
147
+
148
+ with target_file.open("wt") as fo:
149
+ formatter.format(new_tree, fo)
150
+
151
+ table = Table(
152
+ title="Generated transactions",
153
+ box=box.SIMPLE,
154
+ header_style=TABLE_HEADER_STYLE,
155
+ expand=True,
156
+ )
157
+ # TODO: add src info
158
+ table.add_column("File", style=TABLE_COLUMN_STYLE)
159
+ table.add_column("Id", style=TABLE_COLUMN_STYLE)
160
+ table.add_column("Source", style=TABLE_COLUMN_STYLE)
161
+ table.add_column("Date", style=TABLE_COLUMN_STYLE)
162
+ table.add_column("Narration", style=TABLE_COLUMN_STYLE)
163
+ for txn in generated_txns:
164
+ table.add_row(
165
+ escape(str(txn.file)),
166
+ str(txn.id),
167
+ escape(str(":".join(txn.sources))),
168
+ escape(str(txn.date)),
169
+ escape(txn.narration),
170
+ )
171
+ rich.print(Padding(table, (1, 0, 0, 4)))
172
+
173
+ table = Table(
174
+ title="Unprocessed transactions",
175
+ box=box.SIMPLE,
176
+ header_style=TABLE_HEADER_STYLE,
177
+ expand=True,
178
+ )
179
+ table.add_column("File", style=TABLE_COLUMN_STYLE)
180
+ table.add_column("Line", style=TABLE_COLUMN_STYLE)
181
+ table.add_column("Extractor", style=TABLE_COLUMN_STYLE)
182
+ table.add_column("Date", style=TABLE_COLUMN_STYLE)
183
+ table.add_column("Desc", style=TABLE_COLUMN_STYLE)
184
+ table.add_column("Bank Desc", style=TABLE_COLUMN_STYLE)
185
+ table.add_column("Amount", style=TABLE_COLUMN_STYLE, justify="right")
186
+ table.add_column("Currency", style=TABLE_COLUMN_STYLE)
187
+ for txn in unprocessed_txns:
188
+ table.add_row(
189
+ escape(txn.file),
190
+ str(txn.lineno),
191
+ escape(str(txn.extractor)),
192
+ escape(str(txn.date)),
193
+ escape(txn.desc),
194
+ escape(txn.bank_desc),
195
+ escape(str(txn.amount)),
196
+ escape(txn.currency),
197
+ )
198
+ rich.print(Padding(table, (1, 0, 0, 4)))
199
+
200
+ env.logger.info("done")
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "beanhub-cli"
3
- version = "1.1.0"
3
+ version = "1.1.2"
4
4
  description = "Command line tools for BeanHub"
5
5
  authors = ["Fang-Pen Lin <fangpen@launchplatform.com>"]
6
6
  license = "MIT"
@@ -22,7 +22,9 @@ uvicorn = "^0.23.2"
22
22
  beanhub-forms = "^0.1.3"
23
23
  pydantic-settings = "^2.0.3"
24
24
  rich = "^13.6.0"
25
- beanhub-import = "^0.0.4"
25
+ beanhub-import = ">= 0.1.3, <0.2.0"
26
+ beanhub-extract = ">= 0.0.7, <0.1.0"
27
+ beancount-parser = ">= 1.2.3, <1.3.0"
26
28
 
27
29
  [tool.poetry.dev-dependencies]
28
30
 
@@ -1,103 +0,0 @@
1
- import pathlib
2
-
3
- import click
4
- import yaml
5
- from beancount_black.formatter import Formatter
6
- from beancount_parser.parser import make_parser
7
- from beanhub_import.data_types import ImportDoc
8
- from beanhub_import.post_processor import apply_change_set
9
- from beanhub_import.post_processor import compute_changes
10
- from beanhub_import.post_processor import extract_imported_transactions
11
- from beanhub_import.post_processor import txn_to_text
12
- from beanhub_import.processor import process_imports
13
-
14
- from .cli import cli
15
- from .environment import Environment
16
- from .environment import pass_env
17
-
18
- IMPORT_DOC_FILE = pathlib.Path(".beanhub") / "imports.yaml"
19
-
20
-
21
- @cli.command(
22
- name="import",
23
- help="Import data into Beancount files based on the beanhub-import config file",
24
- )
25
- @click.option(
26
- "-c",
27
- "--config",
28
- type=click.Path(exists=True, dir_okay=False),
29
- default=".beanhub/imports.yaml",
30
- help="The path to import config file",
31
- )
32
- @click.option(
33
- "-w",
34
- "--workdir",
35
- type=click.Path(exists=True, dir_okay=True, file_okay=False),
36
- default=str(pathlib.Path.cwd()),
37
- help="The beanhub project path to work on",
38
- )
39
- @click.option(
40
- "-b",
41
- "--beanfile",
42
- type=click.Path(exists=True, dir_okay=False, file_okay=True),
43
- default="main.bean",
44
- help="The path to main entry beancount file",
45
- )
46
- @pass_env
47
- def main(env: Environment, config: str, workdir: str, beanfile: str):
48
- config_path = pathlib.Path(config)
49
- with config_path.open("rt") as fo:
50
- doc_payload = yaml.safe_load(fo)
51
- import_doc = ImportDoc.model_validate(doc_payload)
52
- workdir_path = pathlib.Path(workdir)
53
- env.logger.info("Loaded import doc from %s", config)
54
-
55
- generated_txns = []
56
- for generated_txn in process_imports(import_doc=import_doc, input_dir=workdir_path):
57
- env.logger.debug("Generated transaction %s", generated_txn)
58
- generated_txns.append(generated_txn)
59
- env.logger.info("Generated %s transactions", len(generated_txns))
60
-
61
- beanfile_path = pathlib.Path(beanfile)
62
-
63
- parser = make_parser()
64
- imported_txns = list(
65
- extract_imported_transactions(
66
- parser=parser,
67
- bean_file=beanfile_path,
68
- )
69
- )
70
- env.logger.info("Found %s existing imported transactions", len(imported_txns))
71
-
72
- formatter = Formatter()
73
- change_sets = compute_changes(
74
- generated_txns=generated_txns,
75
- imported_txns=imported_txns,
76
- work_dir=workdir_path,
77
- )
78
- for target_file, change_set in change_sets.items():
79
- if not target_file.exists():
80
- if change_set.remove or change_set.update:
81
- raise ValueError("Expect new transactions to add only")
82
- env.logger.info(
83
- "Create new bean file %s with %s transactions",
84
- target_file,
85
- len(change_set.add),
86
- )
87
-
88
- bean_content = "\n\n".join(map(txn_to_text, change_set.add))
89
- new_tree = parser.parse(bean_content)
90
- else:
91
- env.logger.info(
92
- "Applying change sets (add=%s, update=%s, remove=%s) to %s",
93
- len(change_set.add),
94
- len(change_set.update),
95
- len(change_set.remove),
96
- target_file,
97
- )
98
- tree = parser.parse(target_file.read_text())
99
- new_tree = apply_change_set(tree=tree, change_set=change_set)
100
-
101
- with target_file.open("wt") as fo:
102
- formatter.format(new_tree, fo)
103
- env.logger.info("done")
File without changes
@@ -23,6 +23,7 @@ from .environment import pass_env
23
23
  @click.version_option(prog_name="beanhub-cli", package_name="beanhub-cli")
24
24
  @pass_env
25
25
  def cli(env: Environment, log_level: str):
26
+ env.log_level = LogLevel(log_level)
26
27
  FORMAT = "%(message)s"
27
28
  logging.basicConfig(
28
29
  level=LOG_LEVEL_MAP[env.log_level],
@@ -31,4 +32,3 @@ def cli(env: Environment, log_level: str):
31
32
  handlers=[RichHandler()],
32
33
  force=True,
33
34
  )
34
- env.log_level = LogLevel(log_level)