pbesa 4.0.37__tar.gz → 4.0.38__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 (125) hide show
  1. {pbesa-4.0.37 → pbesa-4.0.38}/PKG-INFO +1 -1
  2. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/cognitive.py +53 -34
  3. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa.egg-info/PKG-INFO +1 -1
  4. {pbesa-4.0.37 → pbesa-4.0.38}/setup.py +1 -1
  5. {pbesa-4.0.37 → pbesa-4.0.38}/.gitignore +0 -0
  6. {pbesa-4.0.37 → pbesa-4.0.38}/LICENSE +0 -0
  7. {pbesa-4.0.37 → pbesa-4.0.38}/LICENSE.txt +0 -0
  8. {pbesa-4.0.37 → pbesa-4.0.38}/MANIFEST +0 -0
  9. {pbesa-4.0.37 → pbesa-4.0.38}/README.md +0 -0
  10. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/db.sqlite3 +0 -0
  11. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__init__.py +0 -0
  12. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/__init__.cpython-36.pyc +0 -0
  13. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/pbesa.cpython-36.pyc +0 -0
  14. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/settings.cpython-36.pyc +0 -0
  15. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/urls.cpython-36.pyc +0 -0
  16. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/wsgi.cpython-36.pyc +0 -0
  17. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/asgi.py +0 -0
  18. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/pbesa.py +0 -0
  19. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/settings.py +0 -0
  20. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/urls.py +0 -0
  21. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/helloworld/wsgi.py +0 -0
  22. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/manage.py +0 -0
  23. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/__init__.py +0 -0
  24. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/__init__.cpython-36.pyc +0 -0
  25. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/admin.cpython-36.pyc +0 -0
  26. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/apps.cpython-36.pyc +0 -0
  27. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/models.cpython-36.pyc +0 -0
  28. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/urls.cpython-36.pyc +0 -0
  29. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/views.cpython-36.pyc +0 -0
  30. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/admin.py +0 -0
  31. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/apps.py +0 -0
  32. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/__pycache__/translatecontroller.cpython-36.pyc +0 -0
  33. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/__pycache__/translatedelegate.cpython-36.pyc +0 -0
  34. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/__pycache__/translateresponse.cpython-36.pyc +0 -0
  35. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/translatecontroller.py +0 -0
  36. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/translatedelegate.py +0 -0
  37. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/translateresponse.py +0 -0
  38. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/worker/__pycache__/translatetask.cpython-36.pyc +0 -0
  39. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/worker/__pycache__/workeragent.cpython-36.pyc +0 -0
  40. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/worker/translatetask.py +0 -0
  41. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/worker/workeragent.py +0 -0
  42. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/migrations/__init__.py +0 -0
  43. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/migrations/__pycache__/__init__.cpython-36.pyc +0 -0
  44. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/models.py +0 -0
  45. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/tests.py +0 -0
  46. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/urls.py +0 -0
  47. {pbesa-4.0.37 → pbesa-4.0.38}/examples/django/helloworld/translate/views.py +0 -0
  48. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/countercontroller.cpython-36.pyc +0 -0
  49. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/counterdelegate.cpython-36.pyc +0 -0
  50. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/counterresponse.cpython-36.pyc +0 -0
  51. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/translatecontroller.cpython-36.pyc +0 -0
  52. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/translatedelegate.cpython-36.pyc +0 -0
  53. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/translateresponse.cpython-36.pyc +0 -0
  54. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/countercontroller.py +0 -0
  55. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/counterdelegate.py +0 -0
  56. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/controller/counterresponse.py +0 -0
  57. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/worker/__pycache__/counteragent.cpython-36.pyc +0 -0
  58. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/worker/__pycache__/countertask.cpython-36.pyc +0 -0
  59. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/worker/__pycache__/translatetask.cpython-36.pyc +0 -0
  60. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/worker/__pycache__/workeragent.cpython-36.pyc +0 -0
  61. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/worker/counteragent.py +0 -0
  62. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/mas/worker/countertask.py +0 -0
  63. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/remote_a.py +0 -0
  64. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/remote_b.py +0 -0
  65. {pbesa-4.0.37 → pbesa-4.0.38}/examples/remote/remote_c.py +0 -0
  66. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/__init__.py +0 -0
  67. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/__init__.py +0 -0
  68. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_casos.py +0 -0
  69. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_consultas.py +0 -0
  70. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_conversador.py +0 -0
  71. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_cuestionador.py +0 -0
  72. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_datos_identificables.py +0 -0
  73. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_evaluador.py +0 -0
  74. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_expertos.py +0 -0
  75. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_extraccion.py +0 -0
  76. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_generar_caso.py +0 -0
  77. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_generar_documento.py +0 -0
  78. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_instruccion.py +0 -0
  79. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_parafraseo.py +0 -0
  80. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_pertinencia.py +0 -0
  81. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_preguntas.py +0 -0
  82. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_respuesta.py +0 -0
  83. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/celula_saludos.py +0 -0
  84. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/data_extraction_cel.py +0 -0
  85. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/celulas/web.py +0 -0
  86. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/__init__.py +0 -0
  87. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/adapter.py +0 -0
  88. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/agent.py +0 -0
  89. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/io/__init__.py +0 -0
  90. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/io/system_file.py +0 -0
  91. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/io/tcp_server.py +0 -0
  92. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/res/__init__.py +0 -0
  93. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/res/__pycache__/__init__.cpython-36.pyc +0 -0
  94. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/res/__pycache__/__init__.cpython-37.pyc +0 -0
  95. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/res/__pycache__/__init__.cpython-38.pyc +0 -0
  96. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/res/__pycache__/__init__.cpython-39.pyc +0 -0
  97. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/res/conf.json +0 -0
  98. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/util.py +0 -0
  99. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/kernel/world.py +0 -0
  100. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/mas.py +0 -0
  101. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/models.py +0 -0
  102. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/remote/__init__.py +0 -0
  103. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/remote/adm_listener.py +0 -0
  104. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/remote/adm_listener_handler.py +0 -0
  105. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/remote/exceptions.py +0 -0
  106. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/remote/remote_adm.py +0 -0
  107. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/remote/remote_adm_handler.py +0 -0
  108. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/simulator/__init__.py +0 -0
  109. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/simulator/dialog_simulator.py +0 -0
  110. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/__init__.py +0 -0
  111. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/collaborative_team.py +0 -0
  112. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/delegator.py +0 -0
  113. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/delegator_team.py +0 -0
  114. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/dialog.py +0 -0
  115. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/dispatcher_team.py +0 -0
  116. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/prompts.py +0 -0
  117. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/sel_dispatcher_team.py +0 -0
  118. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/selected_dispatcher_team.py +0 -0
  119. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/templates.py +0 -0
  120. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa/social/worker.py +0 -0
  121. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa.egg-info/SOURCES.txt +0 -0
  122. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa.egg-info/dependency_links.txt +0 -0
  123. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa.egg-info/requires.txt +0 -0
  124. {pbesa-4.0.37 → pbesa-4.0.38}/pbesa.egg-info/top_level.txt +0 -0
  125. {pbesa-4.0.37 → pbesa-4.0.38}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pbesa
3
- Version: 4.0.37
3
+ Version: 4.0.38
4
4
  License-File: LICENSE
5
5
  License-File: LICENSE.txt
6
6
  Requires-Dist: pymongo>=4.6.3
@@ -834,23 +834,30 @@ class Dialog(ABC):
834
834
  def stage_one_classification(self, session_id, messages, attemps, query):
835
835
  """ Stage one classification """
836
836
  res = ""
837
- #evaluating = True
837
+
838
838
  dicriminador = None
839
839
  logging.info(f"------------Flujo de excepcion---------------")
840
840
  self.notify(session_id, "identificando intención...")
841
841
  logging.info(f"Intento: {attemps}")
842
-
843
842
 
844
843
  self.__analaizer_work_memory:list = [{"role": "system", "content": ANALIZER_PROMPT}]
845
844
 
846
- es_verificacion = False
847
- if len(messages) >= 3:
848
- last_message = messages[-2]['text']
849
- es_verificacion = '¿Desea que le ayude con una consulta o una demanda?' in last_message
845
+ #es_verificacion = False
846
+ #if len(messages) >= 3:
847
+ # last_message = messages[-2]['text']
848
+ # es_verificacion = '¿Desea que le ayude con una consulta o una demanda?' in last_message
850
849
 
851
- if attemps > 1 and not es_verificacion:
852
- saludo = "NO_SALUDO"
853
- elif attemps > 2 or es_verificacion:
850
+ #if attemps == 2:
851
+ # saludo = "NO_SALUDO"
852
+ # consulta = celula_consultas.derive(self.__ai_service, query, max_tkns=10)
853
+
854
+ if attemps >= 2:# or es_verificacion:
855
+ rectificacion_consulta = 0
856
+
857
+ consulta = celula_consultas.derive(self.__ai_service, query, max_tkns=10)
858
+ es_consulta = ("PREGUNTA_O_SOLICITUD" in consulta) and not ("NO_PREGUNTA" in consulta)
859
+ if es_consulta:
860
+ rectificacion_consulta += 1
854
861
 
855
862
  saludo = "NO_SALUDO"
856
863
  self.__sintetizer_work_memory:list = [{"role": "system", "content": SINTETIZER_PROMPT}]
@@ -875,20 +882,27 @@ class Dialog(ABC):
875
882
  self.__analaizer_work_memory.append({"role": "assistant", "content": message['text']})
876
883
  self.__sintetizer_work_memory.append({"role": "assistant", "content": message['text']})
877
884
 
878
- #self.__analaizer_work_memory.append({"role": "user", "content": query})
879
- #self.__sintetizer_work_memory.append({"role": "user", "content": query})
880
-
881
- # Desde la seegunda iteeraccion de la
882
- # conversacion, se utiliza el sintentizador
883
885
  logging.info("\n\n\n--------------SINTETIZER------------------")
884
886
  logging.info("\n%s", json.dumps(self.__sintetizer_work_memory, indent=4))
885
887
  logging.info("\n\n\n")
886
- query = self.__ai_service.generate(self.__sintetizer_work_memory, max_tokens=50)
887
- res = self.get_text(query)
888
- query = res
889
- logging.info(f"[Stage-1][Sintetizer][Thought]: {query}")
888
+ res = self.__ai_service.generate(self.__sintetizer_work_memory, max_tokens=50)
889
+ res = self.get_text(res)
890
+ logging.info(f"[Stage-1][Sintetizer][Thought]: {res}")
891
+
892
+ consulta = celula_consultas.derive(self.__ai_service, res, max_tkns=10)
893
+ es_consulta = ("PREGUNTA_O_SOLICITUD" in consulta) and not ("NO_PREGUNTA" in consulta)
894
+ if es_consulta:
895
+ rectificacion_consulta += 1
896
+
897
+ if not rectificacion_consulta == 2:
898
+ query = res
899
+ logging.info("[Stage-1][Sintetizer][Thought]: Se sustituye el query por el pensamiento.")
900
+ else:
901
+ logging.info("[Stage-1][Sintetizer][Thought]: Se mantiene la consulta inicial.")
902
+
890
903
  else:
891
904
  saludo = celula_saludos.derive(self.__ai_service, query, max_tkns=10)
905
+ consulta = celula_consultas.derive(self.__ai_service, res, max_tkns=10)
892
906
 
893
907
  user_prompt = f"""
894
908
  user: {query}Texto:
@@ -902,13 +916,9 @@ class Dialog(ABC):
902
916
  #----------------------------------
903
917
  # Verifica si es una consulta o un caso
904
918
  caso = celula_casos.derive(self.__ai_service, query, max_tkns=10)
905
- consulta = celula_consultas.derive(self.__ai_service, query, max_tkns=10)
906
- # Verifica si es un saludo, consulta o caso
907
-
908
- #es_saludo = ("SALUDO" in saludo) and ("NO_PREGUNTA" in consulta) and ("NO_QUEJA_DEMANDA" in caso) and not ("NO_SALUDO" in saludo)
909
- #es_consulta = ("PREGUNTA_O_SOLICITUD" in consulta) and ("NO_QUEJA_DEMANDA" in caso) and ("NO_SALUDO" in saludo) and not ("NO_PREGUNTA" in consulta)
910
- #es_caso = ("QUEJA_DEMANDA" in caso) and ("NO_PREGUNTA" in consulta) and ("NO_SALUDO" in saludo) and not ("NO_QUEJA_DEMANDA" in caso)
911
919
 
920
+
921
+ # Verifica si es un saludo, consulta o caso
912
922
  es_saludo = ("SALUDO" in saludo) and not ("NO_SALUDO" in saludo)
913
923
  es_consulta = ("PREGUNTA_O_SOLICITUD" in consulta) and not ("NO_PREGUNTA" in consulta)
914
924
  es_caso = ("QUEJA_DEMANDA" in caso) and not ("NO_QUEJA_DEMANDA" in caso)
@@ -988,18 +998,27 @@ class Dialog(ABC):
988
998
  res = msg
989
999
  ambiguedad = False
990
1000
 
991
- if ambiguedad:
1001
+ if ambiguedad:
992
1002
  logging.info("[Stage-1]: Respuesta con ambiguedad")
993
1003
  self.notify(session_id, "identificando ambiguedad...")
994
- logging.info("\n\n\n--------------ANALIZER------------------")
995
- logging.info("\n%s", json.dumps(self.__analaizer_work_memory, indent=4))
996
- logging.info("------------------------------------------\n\n\n")
997
- res = self.__ai_service.generate(self.__analaizer_work_memory, max_tokens=50)
998
- logging.info(f"[Stage-1][Thought]: {res}")
999
- self.__analaizer_work_memory.append({"role": "assistant", "content": res})
1000
- self.__sintetizer_work_memory.append({"role": "assistant", "content": res})
1001
- #----------------------------------
1002
-
1004
+
1005
+ aclaracion_fired = False
1006
+ for message in messages:
1007
+ if not message['user'] and '¿Desea que le ayude con una consulta o una demanda?' in message['text']:
1008
+ aclaracion_fired = True
1009
+ break
1010
+
1011
+ if aclaracion_fired:
1012
+ logging.info("\n\n\n--------------ANALIZER------------------")
1013
+ logging.info("\n%s", json.dumps(self.__analaizer_work_memory, indent=4))
1014
+ logging.info("------------------------------------------\n\n\n")
1015
+ res = self.__ai_service.generate(self.__analaizer_work_memory, max_tokens=50)
1016
+ logging.info(f"[Stage-1][Thought]: {res}")
1017
+ self.__analaizer_work_memory.append({"role": "assistant", "content": res})
1018
+ self.__sintetizer_work_memory.append({"role": "assistant", "content": res})
1019
+ else:
1020
+ res = "¿Desea que le ayude con una consulta o una demanda?"
1021
+
1003
1022
  return dicriminador, res
1004
1023
 
1005
1024
  def get_node(self, performative):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pbesa
3
- Version: 4.0.37
3
+ Version: 4.0.38
4
4
  License-File: LICENSE
5
5
  License-File: LICENSE.txt
6
6
  Requires-Dist: pymongo>=4.6.3
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
 
5
5
  setup(
6
6
  name='pbesa',
7
- version='4.0.37',
7
+ version='4.0.38',
8
8
  packages=find_packages(),
9
9
  install_requires=[
10
10
  'pymongo>=4.6.3',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes