webscout 2.2__py3-none-any.whl → 2.3__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.

Potentially problematic release.


This version of webscout might be problematic. Click here for more details.

@@ -0,0 +1,171 @@
1
+ from ._version import __version__, __llama_cpp_version__
2
+
3
+ import sys
4
+ import numpy as np
5
+
6
+ from typing import Any, Iterable, TextIO
7
+ from time import strftime
8
+ from enum import IntEnum
9
+ from struct import unpack
10
+ from colorama import Fore
11
+
12
+
13
+ # color codes used in Thread.interact()
14
+ RESET_ALL = Fore.RESET
15
+ USER_STYLE = RESET_ALL + Fore.GREEN
16
+ BOT_STYLE = RESET_ALL + Fore.CYAN
17
+ DIM_STYLE = RESET_ALL + Fore.LIGHTBLACK_EX
18
+ SPECIAL_STYLE = RESET_ALL + Fore.YELLOW
19
+
20
+ # for typing of softmax parameter `z`
21
+ class _ArrayLike(Iterable):
22
+ pass
23
+
24
+ # for typing of Model.stream_print() parameter `file`
25
+ class _SupportsWriteAndFlush(TextIO):
26
+ pass
27
+
28
+ class GGUFReader:
29
+ """
30
+ Peek at file header for GGUF metadata
31
+
32
+ Raise ValueError if file is not GGUF or is outdated
33
+
34
+ Credit to oobabooga for the parts of the code in this class
35
+
36
+ Format spec: https://github.com/philpax/ggml/blob/gguf-spec/docs/gguf.md
37
+ """
38
+
39
+ class GGUFValueType(IntEnum):
40
+ UINT8 = 0
41
+ INT8 = 1
42
+ UINT16 = 2
43
+ INT16 = 3
44
+ UINT32 = 4
45
+ INT32 = 5
46
+ FLOAT32 = 6
47
+ BOOL = 7
48
+ STRING = 8
49
+ ARRAY = 9
50
+ UINT64 = 10
51
+ INT64 = 11
52
+ FLOAT64 = 12
53
+
54
+ _simple_value_packing = {
55
+ GGUFValueType.UINT8: "<B",
56
+ GGUFValueType.INT8: "<b",
57
+ GGUFValueType.UINT16: "<H",
58
+ GGUFValueType.INT16: "<h",
59
+ GGUFValueType.UINT32: "<I",
60
+ GGUFValueType.INT32: "<i",
61
+ GGUFValueType.FLOAT32: "<f",
62
+ GGUFValueType.UINT64: "<Q",
63
+ GGUFValueType.INT64: "<q",
64
+ GGUFValueType.FLOAT64: "<d",
65
+ GGUFValueType.BOOL: "?",
66
+ }
67
+
68
+ value_type_info = {
69
+ GGUFValueType.UINT8: 1,
70
+ GGUFValueType.INT8: 1,
71
+ GGUFValueType.UINT16: 2,
72
+ GGUFValueType.INT16: 2,
73
+ GGUFValueType.UINT32: 4,
74
+ GGUFValueType.INT32: 4,
75
+ GGUFValueType.FLOAT32: 4,
76
+ GGUFValueType.UINT64: 8,
77
+ GGUFValueType.INT64: 8,
78
+ GGUFValueType.FLOAT64: 8,
79
+ GGUFValueType.BOOL: 1,
80
+ }
81
+
82
+ def get_single(self, value_type, file) -> Any:
83
+ if value_type == GGUFReader.GGUFValueType.STRING:
84
+ value_length = unpack("<Q", file.read(8))[0]
85
+ value = file.read(value_length)
86
+ value = value.decode("utf-8")
87
+ else:
88
+ type_str = GGUFReader._simple_value_packing.get(value_type)
89
+ bytes_length = GGUFReader.value_type_info.get(value_type)
90
+ value = unpack(type_str, file.read(bytes_length))[0]
91
+
92
+ return value
93
+
94
+ def load_metadata(self, fname) -> dict:
95
+ metadata = {}
96
+ with open(fname, "rb") as file:
97
+ GGUF_MAGIC = file.read(4)
98
+
99
+ if GGUF_MAGIC != b"GGUF":
100
+ raise ValueError(
101
+ "your model file is not a valid GGUF file "
102
+ f"(magic number mismatch, got {GGUF_MAGIC}, "
103
+ "expected b'GGUF')"
104
+ )
105
+
106
+ GGUF_VERSION = unpack("<I", file.read(4))[0]
107
+
108
+ if GGUF_VERSION == 1:
109
+ raise ValueError(
110
+ "your model file reports GGUF version 1, "
111
+ "but only versions 2 and above are supported. "
112
+ "re-convert your model or download a newer version"
113
+ )
114
+
115
+ # ti_data_count = struct.unpack("<Q", file.read(8))[0]
116
+ file.read(8)
117
+ kv_data_count = unpack("<Q", file.read(8))[0]
118
+
119
+ for _ in range(kv_data_count):
120
+ key_length = unpack("<Q", file.read(8))[0]
121
+ key = file.read(key_length)
122
+
123
+ value_type = GGUFReader.GGUFValueType(
124
+ unpack("<I", file.read(4))[0]
125
+ )
126
+ if value_type == GGUFReader.GGUFValueType.ARRAY:
127
+ ltype = GGUFReader.GGUFValueType(
128
+ unpack("<I", file.read(4))[0]
129
+ )
130
+ length = unpack("<Q", file.read(8))[0]
131
+ arr = [
132
+ GGUFReader.get_single(
133
+ self,
134
+ ltype,
135
+ file
136
+ ) for _ in range(length)
137
+ ]
138
+ metadata[key.decode()] = arr
139
+ else:
140
+ value = GGUFReader.get_single(self, value_type, file)
141
+ metadata[key.decode()] = value
142
+
143
+ return metadata
144
+
145
+ def softmax(z: _ArrayLike) -> np.ndarray:
146
+ """
147
+ Compute softmax over values in z, where z is array-like
148
+ """
149
+ e_z = np.exp(z - np.max(z))
150
+ return e_z / e_z.sum()
151
+
152
+ def cls() -> None:
153
+ """Clear the terminal"""
154
+ print("\033c\033[3J", end='', flush=True)
155
+
156
+ # no longer used in this module, but left for others to use
157
+ def get_timestamp_prefix_str() -> str:
158
+ # helpful: https://strftime.net
159
+ return strftime("[%Y, %b %e, %a %l:%M %p] ")
160
+
161
+ def truncate(text: str) -> str:
162
+ return text if len(text) < 63 else f"{text[:60]}..."
163
+
164
+ def print_verbose(text: str) -> None:
165
+ print("webscout.Local: verbose:", text, file=sys.stderr, flush=True)
166
+
167
+ def print_info(text: str) -> None:
168
+ print("webscout.Local: info:", text, file=sys.stderr, flush=True)
169
+
170
+ def print_warning(text: str) -> None:
171
+ print("webscout.Local: warning:", text, file=sys.stderr, flush=True)
webscout/__init__.py CHANGED
@@ -1,117 +1,119 @@
1
- """Webscout.
2
-
3
- Search for anything using the Google, DuckDuckGo, phind.com. Also containes AI models, can transcribe yt videos, temporary email and phone number generation, have TTS support and webai(terminal gpt and open interpeter)
4
- """
5
- # webscout/__init__.py
6
-
7
- from .webscout_search import WEBS
8
- from .webscout_search_async import AsyncWEBS
1
+ from .webscout_search import WEBS
2
+ from .webscout_search_async import AsyncWEBS
9
3
  from .version import __version__
10
- from .DWEBS import DeepWEBS
4
+ from .DWEBS import DeepWEBS
11
5
  from .transcriber import transcriber
12
6
  from .voice import play_audio
7
+ from .tempid import Client as TempMailClient, TemporaryPhoneNumber
8
+ from .LLM import LLM
9
+ from .Local import *
13
10
  import g4f
14
11
  # Import provider classes for direct access
15
12
  from .Provider import (
16
- ThinkAnyAI,
17
- Xjai,
18
- LLAMA2,
19
- AsyncLLAMA2,
20
- Cohere,
21
- REKA,
22
- GROQ,
23
- AsyncGROQ,
24
- OPENAI,
25
- AsyncOPENAI,
26
- LEO,
27
- AsyncLEO,
28
- KOBOLDAI,
29
- AsyncKOBOLDAI,
30
- OPENGPT,
31
- AsyncOPENGPT,
32
- PERPLEXITY,
33
- BLACKBOXAI,
34
- AsyncBLACKBOXAI,
35
- PhindSearch,
36
- AsyncPhindSearch,
37
- YEPCHAT,
38
- AsyncYEPCHAT,
39
- YouChat,
40
- GEMINI,
41
- Berlin4h,
42
- ChatGPTUK,
13
+ ThinkAnyAI,
14
+ Xjai,
15
+ LLAMA2,
16
+ AsyncLLAMA2,
17
+ Cohere,
18
+ REKA,
19
+ GROQ,
20
+ AsyncGROQ,
21
+ OPENAI,
22
+ AsyncOPENAI,
23
+ LEO,
24
+ AsyncLEO,
25
+ KOBOLDAI,
26
+ AsyncKOBOLDAI,
27
+ OPENGPT,
28
+ AsyncOPENGPT,
29
+ PERPLEXITY,
30
+ BLACKBOXAI,
31
+ AsyncBLACKBOXAI,
32
+ PhindSearch,
33
+ AsyncPhindSearch,
34
+ YEPCHAT,
35
+ AsyncYEPCHAT,
36
+ YouChat,
37
+ GEMINI,
38
+ Berlin4h,
39
+ ChatGPTUK,
43
40
  )
44
41
 
45
42
  __repo__ = "https://github.com/OE-LUCIFER/Webscout"
46
43
 
47
44
  webai = [
48
- "leo",
49
- "openai",
50
- "opengpt",
51
- "koboldai",
52
- "gemini",
53
- "phind",
54
- "blackboxai",
55
- "g4fauto",
56
- "perplexity",
57
- "groq",
58
- "reka",
59
- "cohere",
60
- "yepchat",
61
- "you",
62
- "xjai",
63
- "thinkany",
64
- "berlin4h",
65
- "chatgptuk",
66
- "auto",
45
+ "leo",
46
+ "openai",
47
+ "opengpt",
48
+ "koboldai",
49
+ "gemini",
50
+ "phind",
51
+ "blackboxai",
52
+ "g4fauto",
53
+ "perplexity",
54
+ "groq",
55
+ "reka",
56
+ "cohere",
57
+ "yepchat",
58
+ "you",
59
+ "xjai",
60
+ "thinkany",
61
+ "berlin4h",
62
+ "chatgptuk",
63
+ "auto",
67
64
  ]
68
65
 
69
66
  gpt4free_providers = [
70
- provider.__name__ for provider in g4f.Provider.__providers__ # if provider.working
67
+ provider.__name__ for provider in g4f.Provider.__providers__ # if provider.working
71
68
  ]
72
69
 
73
70
  available_providers = webai + gpt4free_providers
74
71
 
75
- # Add all the provider classes you want to directly import to __all__
72
+ # Add all the provider classes, Localai models, Thread, and Model to __all__
76
73
  __all__ = [
77
- "WEBS",
78
- "AsyncWEBS",
79
- "__version__",
80
- "cli",
81
- "DeepWEBS",
82
- "transcriber",
83
- "play_audio",
74
+ "WEBS",
75
+ "AsyncWEBS",
76
+ "__version__",
77
+ "DeepWEBS",
78
+ "transcriber",
79
+ "play_audio",
80
+ "TempMailClient",
81
+ "TemporaryPhoneNumber",
82
+ "LLM",
83
+ # Localai models and utilities
84
+ "Model",
85
+ "Thread",
86
+ "formats",
84
87
 
85
- # AI Providers
86
- "ThinkAnyAI",
87
- "Xjai",
88
- "LLAMA2",
89
- "AsyncLLAMA2",
90
- "Cohere",
91
- "REKA",
92
- "GROQ",
93
- "AsyncGROQ",
94
- "OPENAI",
95
- "AsyncOPENAI",
96
- "LEO",
97
- "AsyncLEO",
98
- "KOBOLDAI",
99
- "AsyncKOBOLDAI",
100
- "OPENGPT",
101
- "AsyncOPENGPT",
102
- "PERPLEXITY",
103
- "BLACKBOXAI",
104
- "AsyncBLACKBOXAI",
105
- "PhindSearch",
106
- "AsyncPhindSearch",
107
- "YEPCHAT",
108
- "AsyncYEPCHAT",
109
- "YouChat",
110
- "GEMINI",
111
- "Berlin4h",
112
- "ChatGPTUK",
88
+ # AI Providers
89
+ "ThinkAnyAI",
90
+ "Xjai",
91
+ "LLAMA2",
92
+ "AsyncLLAMA2",
93
+ "Cohere",
94
+ "REKA",
95
+ "GROQ",
96
+ "AsyncGROQ",
97
+ "OPENAI",
98
+ "AsyncOPENAI",
99
+ "LEO",
100
+ "AsyncLEO",
101
+ "KOBOLDAI",
102
+ "AsyncKOBOLDAI",
103
+ "OPENGPT",
104
+ "AsyncOPENGPT",
105
+ "PERPLEXITY",
106
+ "BLACKBOXAI",
107
+ "AsyncBLACKBOXAI",
108
+ "PhindSearch",
109
+ "AsyncPhindSearch",
110
+ "YEPCHAT",
111
+ "AsyncYEPCHAT",
112
+ "YouChat",
113
+ "GEMINI",
114
+ "Berlin4h",
115
+ "ChatGPTUK",
113
116
  ]
114
117
 
115
- # Set up basic logger
116
118
  import logging
117
- logging.getLogger("webscout").addHandler(logging.NullHandler())
119
+ logging.getLogger("webscout").addHandler(logging.NullHandler())
@@ -1,12 +1,12 @@
1
- from webscout.AI import AsyncPhindSearch
2
- from webscout.AI import AsyncYEPCHAT
3
- from webscout.AI import AsyncOPENGPT
4
- from webscout.AI import AsyncOPENAI
5
- from webscout.AI import AsyncLLAMA2
6
- from webscout.AI import AsyncLEO
7
- from webscout.AI import AsyncKOBOLDAI
8
- from webscout.AI import AsyncGROQ
9
- from webscout.AI import AsyncBLACKBOXAI
1
+ from webscout import AsyncPhindSearch
2
+ from webscout import AsyncYEPCHAT
3
+ from webscout import AsyncOPENGPT
4
+ from webscout import AsyncOPENAI
5
+ from webscout import AsyncLLAMA2
6
+ from webscout import AsyncLEO
7
+ from webscout import AsyncKOBOLDAI
8
+ from webscout import AsyncGROQ
9
+ from webscout import AsyncBLACKBOXAI
10
10
  from webscout.g4f import AsyncGPT4FREE
11
11
 
12
12
  mapper: dict[str, object] = {
webscout/g4f.py CHANGED
@@ -227,8 +227,8 @@ class GPT4FREE(Provider):
227
227
  auth: str = None,
228
228
  max_tokens: int = 600,
229
229
  model: str = None,
230
- chat_completion: bool = False,
231
- ignore_working: bool = False,
230
+ chat_completion: bool = True,
231
+ ignore_working: bool = True,
232
232
  timeout: int = 30,
233
233
  intro: str = None,
234
234
  filepath: str = None,
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: webscout
3
- Version: 2.2
4
- Summary: Search for anything using the Google, DuckDuckGo, phind.com. Also containes AI models, can transcribe yt videos, temporary email and phone number generation, have TTS support and webai(terminal gpt and open interpeter)
3
+ Version: 2.3
4
+ Summary: Search for anything using Google, DuckDuckGo, phind.com. Also contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, and webai (terminal gpt and open interpreter).
5
5
  Author: OEvortex
6
6
  Author-email: helpingai5@gmail.com
7
7
  License: HelpingAI Simplified Universal License
@@ -36,7 +36,6 @@ Requires-Dist: halo >=0.0.31
36
36
  Requires-Dist: g4f >=0.2.2.3
37
37
  Requires-Dist: rich
38
38
  Requires-Dist: python-dotenv
39
- Requires-Dist: Helpingai-T2
40
39
  Requires-Dist: beautifulsoup4
41
40
  Requires-Dist: markdownify
42
41
  Requires-Dist: pydantic
@@ -55,6 +54,10 @@ Requires-Dist: playsound
55
54
  Provides-Extra: dev
56
55
  Requires-Dist: ruff >=0.1.6 ; extra == 'dev'
57
56
  Requires-Dist: pytest >=7.4.2 ; extra == 'dev'
57
+ Provides-Extra: local
58
+ Requires-Dist: llama-cpp-python ; extra == 'local'
59
+ Requires-Dist: colorama ; extra == 'local'
60
+ Requires-Dist: numpy ; extra == 'local'
58
61
 
59
62
  <div align="center">
60
63
  <!-- Replace `#` with your actual links -->
@@ -10,17 +10,17 @@ DeepWEBS/networks/webpage_fetcher.py,sha256=vRB9T3o-nMgrMkG2NPHTDctNeXaPSKCmBXqu
10
10
  DeepWEBS/utilsdw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  DeepWEBS/utilsdw/enver.py,sha256=vpI7s4_o_VL9govSryOv-z1zYK3pTEW3-H9QNN8JYtc,2472
12
12
  DeepWEBS/utilsdw/logger.py,sha256=Z0nFUcEGyU8r28yKiIyvEtO26xxpmJgbvNToTfwZecc,8174
13
- webscout/AIauto.py,sha256=NlIx-Nfuq-xJ3uZUOUJUXtZ2tzwcbx1ViIlnVK2aCrw,17297
13
+ webscout/AIauto.py,sha256=xPGr_Z0h27XXNh4Wiufjn9TksDOqxqlaGcLUYKNP55w,18246
14
14
  webscout/AIbase.py,sha256=GoHbN8r0gq2saYRZv6LA-Fr9Jlcjv80STKFXUq2ZeGU,4710
15
15
  webscout/AIutel.py,sha256=LXYgQOEk21c7MpNJlSl2RbLvR8HDJhTSwJiVVgqf0Iw,33266
16
16
  webscout/DWEBS.py,sha256=QT-7-dUgWhQ_H7EVZD53AVyXxyskoPMKCkFIpzkN56Q,7332
17
17
  webscout/LLM.py,sha256=CiDz0okZNEoXuxMwadZnwRGSLpqk2zg0vzvXSxQZjcE,1910
18
- webscout/__init__.py,sha256=jJ6690a2XMglvK9LeGpiWJEGZuhWivUx3wHAQ0ov9dA,2338
18
+ webscout/__init__.py,sha256=4RmWkUjUyOCVvoymHpCqnKIs8hfmcNYhONQ8bhdiPf0,2206
19
19
  webscout/__main__.py,sha256=ZtTRgsRjUi2JOvYFLF1ZCh55Sdoz94I-BS-TlJC7WDU,126
20
- webscout/async_providers.py,sha256=KGWKAhdEh4nMntLtyCaO0p827Tcg__gBLT_MLRO4l5o,711
20
+ webscout/async_providers.py,sha256=holBv5SxanxVXc_92CBBaXHlB2IakB_fHnhyZaFjYF8,684
21
21
  webscout/cli.py,sha256=F888fdrFUQgczMBN4yMOSf6Nh-IbvkqpPhDsbnA2FtQ,17059
22
22
  webscout/exceptions.py,sha256=Wx8bEN3bz1nNZ9PAZHX8jwvFPddF9Y2pHAEwCMu_VJc,498
23
- webscout/g4f.py,sha256=F7POjR03ek7eZvcTX-p7gMe1b0nLNoIqF-L_vZwos0c,24489
23
+ webscout/g4f.py,sha256=NNcnlOtIWV9R93UsBN4jBGBEJ9sJ-Np1WbgjkGVDcYc,24487
24
24
  webscout/models.py,sha256=5iQIdtedT18YuTZ3npoG7kLMwcrKwhQ7928dl_7qZW0,692
25
25
  webscout/tempid.py,sha256=5oc3UbXhPGKxrMRTfRABT-V-dNzH_hOKWtLYM6iCWd4,5896
26
26
  webscout/transcriber.py,sha256=EddvTSq7dPJ42V3pQVnGuEiYQ7WjJ9uyeR9kMSxN7uY,20622
@@ -30,6 +30,13 @@ webscout/voice.py,sha256=0QjXTHAQmCK07IDZXRc7JXem47cnPJH7u3X0sVP1-UQ,967
30
30
  webscout/webai.py,sha256=cRzJNVljryCxV4kEtmii0_CEBxSs71Ft3sdPdcqGmBg,84668
31
31
  webscout/webscout_search.py,sha256=TvbrRYVMXbFGgEh0CoFHNYVY3iQ8SmejxEmv8Csu4IA,3159
32
32
  webscout/webscout_search_async.py,sha256=4_L_t_I9WlvpPEI3FI0K3v6Aayr0pNvD3chYOp7JR8o,42902
33
+ webscout/Local/__init__.py,sha256=HxyOwxCdOpzHx4lE6UUMK1S10oBW9WYE5JQaBbFHOh8,220
34
+ webscout/Local/_version.py,sha256=sc9JboCC9IEKihG_oql9GqyPt0rTPN2OXbpyzRDoCQ4,83
35
+ webscout/Local/formats.py,sha256=tttN2Cqq39YZgypjyu1_ZbfDTj8cdiFndiW-MUFR4qQ,17153
36
+ webscout/Local/model.py,sha256=Hf_xybJm1PZBBIIy5j0p3Z3CnWezymNfxr8zQeFHJqY,27611
37
+ webscout/Local/samplers.py,sha256=qXwU4eLXER-2aCYzcJcTgA6BeFmi5GMpTDUX1C9pTN4,4372
38
+ webscout/Local/thread.py,sha256=xxQIzk--xEohz04I_0Rnta43bS2jMDbsvW9_e6IbSTk,24868
39
+ webscout/Local/utils.py,sha256=v9DLA9veFd_d4GhWPy3qRqSivPTSmSNmj5NN5Z2AMcQ,5454
33
40
  webscout/Provider/Berlin4h.py,sha256=-O6BRkLusUEdYXcyQ09iY86dFl9WoiA4mlmZ_DLZbos,8342
34
41
  webscout/Provider/Blackboxai.py,sha256=8B5wT_eb86RVZ5uOqwvgVC5QATl0uEMCli0n4SDwt1M,16743
35
42
  webscout/Provider/ChatGPTUK.py,sha256=ozpWnuOlC_7jeDcTuUukFPcPkIksx-Bgq_6Rrf0Bwak,8357
@@ -49,9 +56,9 @@ webscout/Provider/Xjai.py,sha256=gI9FqEodS-jHfFM_CsDPmTb_wL5NU2q__2fg9hqVoEc,880
49
56
  webscout/Provider/Yepchat.py,sha256=E0tv3Zfoqs1Sw8Pe-6_5d--_1LESm8mjw536DWclJk8,19398
50
57
  webscout/Provider/Youchat.py,sha256=JAZYwcj0Kl1UUgqN0rD3TKaReA1G-cmIlW_4mog1j_c,7756
51
58
  webscout/Provider/__init__.py,sha256=BPYm-ZOkZOXXn3bx_2UHIV6aZS47d9Y01JDq-EiPXhQ,1318
52
- webscout-2.2.dist-info/LICENSE.md,sha256=mRVwJuT4SXC5O93BFdsfWBjlXjGn2Np90Zm5SocUzM0,3150
53
- webscout-2.2.dist-info/METADATA,sha256=hZMwgDbYv2rbOEB3JTAAH7TOpVWou5e9-zsWxEnflS4,46482
54
- webscout-2.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
55
- webscout-2.2.dist-info/entry_points.txt,sha256=8-93eRslYrzTHs5E-6yFRJrve00C9q-SkXJD113jzRY,197
56
- webscout-2.2.dist-info/top_level.txt,sha256=OD5YKy6Y3hldL7SmuxsiEDxAG4LgdSSWwzYk22MF9fk,18
57
- webscout-2.2.dist-info/RECORD,,
59
+ webscout-2.3.dist-info/LICENSE.md,sha256=mRVwJuT4SXC5O93BFdsfWBjlXjGn2Np90Zm5SocUzM0,3150
60
+ webscout-2.3.dist-info/METADATA,sha256=ntfYcc-wFWtZtnbI-rFMR7yhph29tvJl2Ynje2Vadjo,46611
61
+ webscout-2.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
62
+ webscout-2.3.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
63
+ webscout-2.3.dist-info/top_level.txt,sha256=OD5YKy6Y3hldL7SmuxsiEDxAG4LgdSSWwzYk22MF9fk,18
64
+ webscout-2.3.dist-info/RECORD,,
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ WEBS = webscout.cli:cli
3
+ webscout = webscout.webai:main
@@ -1,6 +0,0 @@
1
- [console_scripts]
2
- WEBS = webscout.cli:cli
3
- webscout-ai = webscout.AI:cli
4
- webscout-ai-phindsearch = webscout.AI:phindsearch
5
- webscout-ai-yepchat = webscout.AI:yepchat
6
- webscout-llm = webscout.LLM:chat
File without changes