langroid 0.1.158__tar.gz → 0.1.160__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 (109) hide show
  1. {langroid-0.1.158 → langroid-0.1.160}/PKG-INFO +2 -1
  2. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/openai_gpt.py +1 -1
  3. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/document_parser.py +33 -0
  4. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/parser.py +5 -3
  5. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/logging.py +2 -5
  6. {langroid-0.1.158 → langroid-0.1.160}/pyproject.toml +2 -1
  7. {langroid-0.1.158 → langroid-0.1.160}/LICENSE +0 -0
  8. {langroid-0.1.158 → langroid-0.1.160}/README.md +0 -0
  9. {langroid-0.1.158 → langroid-0.1.160}/langroid/__init__.py +0 -0
  10. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/__init__.py +0 -0
  11. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/base.py +0 -0
  12. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/batch.py +0 -0
  13. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/chat_agent.py +0 -0
  14. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/chat_document.py +0 -0
  15. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/helpers.py +0 -0
  16. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/junk +0 -0
  17. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/openai_assistant.py +0 -0
  18. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/__init__.py +0 -0
  19. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/doc_chat_agent.py +0 -0
  20. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/lance_doc_chat_agent.py +0 -0
  21. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/lance_rag/__init__.py +0 -0
  22. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/lance_rag/critic_agent.py +0 -0
  23. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/lance_rag/lance_rag_task.py +0 -0
  24. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/lance_rag/lance_tools.py +0 -0
  25. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/lance_rag/query_planner_agent.py +0 -0
  26. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/relevance_extractor_agent.py +0 -0
  27. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/retriever_agent.py +0 -0
  28. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/sql/__init__.py +0 -0
  29. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/sql/sql_chat_agent.py +0 -0
  30. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/sql/utils/__init__.py +0 -0
  31. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/sql/utils/description_extractors.py +0 -0
  32. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/sql/utils/populate_metadata.py +0 -0
  33. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/sql/utils/system_message.py +0 -0
  34. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/sql/utils/tools.py +0 -0
  35. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/special/table_chat_agent.py +0 -0
  36. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/task.py +0 -0
  37. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/tool_message.py +0 -0
  38. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/tools/__init__.py +0 -0
  39. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/tools/extract_tool.py +0 -0
  40. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/tools/generator_tool.py +0 -0
  41. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/tools/google_search_tool.py +0 -0
  42. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/tools/recipient_tool.py +0 -0
  43. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/tools/run_python_code.py +0 -0
  44. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent/tools/segment_extract_tool.py +0 -0
  45. {langroid-0.1.158 → langroid-0.1.160}/langroid/agent_config.py +0 -0
  46. {langroid-0.1.158 → langroid-0.1.160}/langroid/cachedb/__init__.py +0 -0
  47. {langroid-0.1.158 → langroid-0.1.160}/langroid/cachedb/base.py +0 -0
  48. {langroid-0.1.158 → langroid-0.1.160}/langroid/cachedb/momento_cachedb.py +0 -0
  49. {langroid-0.1.158 → langroid-0.1.160}/langroid/cachedb/redis_cachedb.py +0 -0
  50. {langroid-0.1.158 → langroid-0.1.160}/langroid/embedding_models/__init__.py +0 -0
  51. {langroid-0.1.158 → langroid-0.1.160}/langroid/embedding_models/base.py +0 -0
  52. {langroid-0.1.158 → langroid-0.1.160}/langroid/embedding_models/clustering.py +0 -0
  53. {langroid-0.1.158 → langroid-0.1.160}/langroid/embedding_models/models.py +0 -0
  54. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/__init__.py +0 -0
  55. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/azure_openai.py +0 -0
  56. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/base.py +0 -0
  57. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/config.py +0 -0
  58. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/openai_assistants.py +0 -0
  59. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/prompt_formatter/__init__.py +0 -0
  60. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/prompt_formatter/base.py +0 -0
  61. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/prompt_formatter/llama2_formatter.py +0 -0
  62. {langroid-0.1.158 → langroid-0.1.160}/langroid/language_models/utils.py +0 -0
  63. {langroid-0.1.158 → langroid-0.1.160}/langroid/mytypes.py +0 -0
  64. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/__init__.py +0 -0
  65. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/agent_chats.py +0 -0
  66. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/code-parsing.md +0 -0
  67. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/code_parser.py +0 -0
  68. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/config.py +0 -0
  69. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/json.py +0 -0
  70. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/para_sentence_split.py +0 -0
  71. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/repo_loader.py +0 -0
  72. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/search.py +0 -0
  73. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/spider.py +0 -0
  74. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/table_loader.py +0 -0
  75. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/url_loader.py +0 -0
  76. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/url_loader_cookies.py +0 -0
  77. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/urls.py +0 -0
  78. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/utils.py +0 -0
  79. {langroid-0.1.158 → langroid-0.1.160}/langroid/parsing/web_search.py +0 -0
  80. {langroid-0.1.158 → langroid-0.1.160}/langroid/prompts/__init__.py +0 -0
  81. {langroid-0.1.158 → langroid-0.1.160}/langroid/prompts/dialog.py +0 -0
  82. {langroid-0.1.158 → langroid-0.1.160}/langroid/prompts/prompts_config.py +0 -0
  83. {langroid-0.1.158 → langroid-0.1.160}/langroid/prompts/templates.py +0 -0
  84. {langroid-0.1.158 → langroid-0.1.160}/langroid/prompts/transforms.py +0 -0
  85. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/__init__.py +0 -0
  86. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/algorithms/__init__.py +0 -0
  87. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/algorithms/graph.py +0 -0
  88. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/configuration.py +0 -0
  89. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/constants.py +0 -0
  90. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/docker.py +0 -0
  91. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/globals.py +0 -0
  92. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/llms/__init__.py +0 -0
  93. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/llms/strings.py +0 -0
  94. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/output/__init__.py +0 -0
  95. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/output/printing.py +0 -0
  96. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/pandas_utils.py +0 -0
  97. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/pydantic_utils.py +0 -0
  98. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/system.py +0 -0
  99. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/web/__init__.py +0 -0
  100. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/web/login.py +0 -0
  101. {langroid-0.1.158 → langroid-0.1.160}/langroid/utils/web/selenium_login.py +0 -0
  102. {langroid-0.1.158 → langroid-0.1.160}/langroid/vector_store/__init__.py +0 -0
  103. {langroid-0.1.158 → langroid-0.1.160}/langroid/vector_store/base.py +0 -0
  104. {langroid-0.1.158 → langroid-0.1.160}/langroid/vector_store/chromadb.py +0 -0
  105. {langroid-0.1.158 → langroid-0.1.160}/langroid/vector_store/lancedb.py +0 -0
  106. {langroid-0.1.158 → langroid-0.1.160}/langroid/vector_store/meilisearch.py +0 -0
  107. {langroid-0.1.158 → langroid-0.1.160}/langroid/vector_store/momento.py +0 -0
  108. {langroid-0.1.158 → langroid-0.1.160}/langroid/vector_store/qdrant_cloud.py +0 -0
  109. {langroid-0.1.158 → langroid-0.1.160}/langroid/vector_store/qdrantdb.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langroid
3
- Version: 0.1.158
3
+ Version: 0.1.160
4
4
  Summary: Harness LLMs with Multi-Agent Programming
5
5
  License: MIT
6
6
  Author: Prasad Chalasani
@@ -64,6 +64,7 @@ Requires-Dist: pytest-asyncio (>=0.21.1,<0.22.0)
64
64
  Requires-Dist: pytest-mysql (>=2.4.2,<3.0.0) ; extra == "mysql"
65
65
  Requires-Dist: pytest-postgresql (>=5.0.0,<6.0.0) ; extra == "postgres"
66
66
  Requires-Dist: pytest-redis (>=3.0.2,<4.0.0)
67
+ Requires-Dist: python-docx (>=1.1.0,<2.0.0)
67
68
  Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
68
69
  Requires-Dist: qdrant-client (>=1.7.0,<2.0.0)
69
70
  Requires-Dist: rank-bm25 (>=0.2.2,<0.3.0)
@@ -169,7 +169,7 @@ class OpenAIGPTConfig(LLMConfig):
169
169
  local_model = "api_base" in kwargs and kwargs["api_base"] is not None
170
170
 
171
171
  chat_model = kwargs.get("chat_model", "")
172
- if chat_model.startswith("litellm") or chat_model.startswith("local"):
172
+ if chat_model.startswith("litellm/") or chat_model.startswith("local/"):
173
173
  local_model = True
174
174
 
175
175
  warn_gpt_3_5 = (
@@ -62,6 +62,8 @@ class DocumentParser(Parser):
62
62
  elif DocumentParser._document_type(source) == DocumentType.DOCX:
63
63
  if config.docx.library == "unstructured":
64
64
  return UnstructuredDocxParser(source, config)
65
+ elif config.docx.library == "python-docx":
66
+ return PythonDocxParser(source, config)
65
67
  else:
66
68
  raise ValueError(
67
69
  f"Unsupported DOCX library specified: {config.docx.library}"
@@ -436,3 +438,34 @@ class UnstructuredDocxParser(DocumentParser):
436
438
  """
437
439
  text = " ".join(el.text for el in page)
438
440
  return self.fix_text(text)
441
+
442
+
443
+ class PythonDocxParser(DocumentParser):
444
+ """
445
+ Parser for processing DOCX files using the `python-docx` library.
446
+ """
447
+
448
+ def iterate_pages(self) -> Generator[Tuple[int, Any], None, None]:
449
+ """
450
+ Simulate iterating through pages.
451
+ In a DOCX file, pages are not explicitly defined,
452
+ so we consider each paragraph as a separate 'page' for simplicity.
453
+ """
454
+ import docx
455
+
456
+ doc = docx.Document(self.doc_bytes)
457
+ for i, para in enumerate(doc.paragraphs, start=1):
458
+ yield i, [para]
459
+
460
+ def extract_text_from_page(self, page: Any) -> str:
461
+ """
462
+ Extract text from a given 'page', which in this case is a single paragraph.
463
+
464
+ Args:
465
+ page (list): A list containing a single Paragraph object.
466
+
467
+ Returns:
468
+ str: Extracted text from the paragraph.
469
+ """
470
+ paragraph = page[0]
471
+ return self.fix_text(paragraph.text)
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  from enum import Enum
3
- from typing import Dict, List
3
+ from typing import Dict, List, Literal
4
4
 
5
5
  import tiktoken
6
6
  from pydantic import BaseSettings
@@ -19,11 +19,13 @@ class Splitter(str, Enum):
19
19
 
20
20
 
21
21
  class PdfParsingConfig(BaseSettings):
22
- library: str = "pdfplumber"
22
+ library: Literal[
23
+ "fitz", "pdfplumber", "pypdf", "unstructured", "haystack"
24
+ ] = "pdfplumber"
23
25
 
24
26
 
25
27
  class DocxParsingConfig(BaseSettings):
26
- library: str = "unstructured"
28
+ library: Literal["python-docx", "unstructured"] = "unstructured"
27
29
 
28
30
 
29
31
  class ParsingConfig(BaseSettings):
@@ -72,12 +72,9 @@ def setup_file_logger(
72
72
  propagate: bool = False,
73
73
  ) -> logging.Logger:
74
74
  os.makedirs(os.path.dirname(filename), exist_ok=True)
75
- if not append:
76
- if os.path.exists(filename):
77
- os.remove(filename)
78
-
75
+ file_mode = "a" if append else "w"
79
76
  logger = setup_logger(name)
80
- handler = logging.FileHandler(filename)
77
+ handler = logging.FileHandler(filename, mode=file_mode)
81
78
  handler.setLevel(logging.INFO)
82
79
  if log_format:
83
80
  formatter = logging.Formatter(
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langroid"
3
- version = "0.1.158"
3
+ version = "0.1.160"
4
4
  description = "Harness LLMs with Multi-Agent Programming"
5
5
  authors = ["Prasad Chalasani <pchalasani@gmail.com>"]
6
6
  readme = "README.md"
@@ -81,6 +81,7 @@ scrapy = "^2.11.0"
81
81
  async-generator = "^1.10"
82
82
  lancedb = "^0.4.1"
83
83
  pytest-redis = "^3.0.2"
84
+ python-docx = "^1.1.0"
84
85
 
85
86
  [tool.poetry.extras]
86
87
  # install these using `poetry install -E [...]` where [...] is one of the extras below
File without changes
File without changes