webscout 2.2b0__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,127 +1,119 @@
1
- """Webscout.
2
-
3
- Search for anything using the 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).
4
- """
5
- # webscout/__init__.py
6
-
7
1
  from .webscout_search import WEBS
8
2
  from .webscout_search_async import AsyncWEBS
9
3
  from .version import __version__
10
4
  from .DWEBS import DeepWEBS
11
5
  from .transcriber import transcriber
12
- from .voice import play_audio, talk
6
+ from .voice import play_audio
13
7
  from .tempid import Client as TempMailClient, TemporaryPhoneNumber
14
- from .models import MapsResult
15
8
  from .LLM import LLM
16
9
  from .Local import *
17
10
  import g4f
18
11
  # Import provider classes for direct access
19
12
  from .Provider import (
20
- ThinkAnyAI,
21
- Xjai,
22
- LLAMA2,
23
- AsyncLLAMA2,
24
- Cohere,
25
- REKA,
26
- GROQ,
27
- AsyncGROQ,
28
- OPENAI,
29
- AsyncOPENAI,
30
- LEO,
31
- AsyncLEO,
32
- KOBOLDAI,
33
- AsyncKOBOLDAI,
34
- OPENGPT,
35
- AsyncOPENGPT,
36
- PERPLEXITY,
37
- BLACKBOXAI,
38
- AsyncBLACKBOXAI,
39
- PhindSearch,
40
- AsyncPhindSearch,
41
- YEPCHAT,
42
- AsyncYEPCHAT,
43
- YouChat,
44
- GEMINI,
45
- Berlin4h,
46
- 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,
47
40
  )
48
41
 
49
42
  __repo__ = "https://github.com/OE-LUCIFER/Webscout"
50
43
 
51
44
  webai = [
52
- "leo",
53
- "openai",
54
- "opengpt",
55
- "koboldai",
56
- "gemini",
57
- "phind",
58
- "blackboxai",
59
- "g4fauto",
60
- "perplexity",
61
- "groq",
62
- "reka",
63
- "cohere",
64
- "yepchat",
65
- "you",
66
- "xjai",
67
- "thinkany",
68
- "berlin4h",
69
- "chatgptuk",
70
- "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",
71
64
  ]
72
65
 
73
66
  gpt4free_providers = [
74
- provider.__name__ for provider in g4f.Provider.__providers__ # if provider.working
67
+ provider.__name__ for provider in g4f.Provider.__providers__ # if provider.working
75
68
  ]
76
69
 
77
70
  available_providers = webai + gpt4free_providers
78
71
 
79
- # 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__
80
73
  __all__ = [
81
- "WEBS",
82
- "AsyncWEBS",
83
- "__version__",
84
- "DeepWEBS",
85
- "transcriber",
86
- "play_audio",
87
- "talk",
88
- "TempMailClient",
89
- "TemporaryPhoneNumber",
90
- "MapsResult",
91
- "LLM",
92
- "Model",
93
- "Thread",
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",
94
87
 
95
- # AI Providers
96
- "ThinkAnyAI",
97
- "Xjai",
98
- "LLAMA2",
99
- "AsyncLLAMA2",
100
- "Cohere",
101
- "REKA",
102
- "GROQ",
103
- "AsyncGROQ",
104
- "OPENAI",
105
- "AsyncOPENAI",
106
- "LEO",
107
- "AsyncLEO",
108
- "KOBOLDAI",
109
- "AsyncKOBOLDAI",
110
- "OPENGPT",
111
- "AsyncOPENGPT",
112
- "PERPLEXITY",
113
- "BLACKBOXAI",
114
- "AsyncBLACKBOXAI",
115
- "PhindSearch",
116
- "AsyncPhindSearch",
117
- "YEPCHAT",
118
- "AsyncYEPCHAT",
119
- "YouChat",
120
- "GEMINI",
121
- "Berlin4h",
122
- "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",
123
116
  ]
124
117
 
125
- # Set up basic logger
126
118
  import logging
127
- logging.getLogger("webscout").addHandler(logging.NullHandler())
119
+ logging.getLogger("webscout").addHandler(logging.NullHandler())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: webscout
3
- Version: 2.2b0
3
+ Version: 2.3
4
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
@@ -15,7 +15,7 @@ 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=gcFnG-20bSubSpx42tgnDfhbGV2wFTe6yfz_bHqSJ8A,2595
18
+ webscout/__init__.py,sha256=4RmWkUjUyOCVvoymHpCqnKIs8hfmcNYhONQ8bhdiPf0,2206
19
19
  webscout/__main__.py,sha256=ZtTRgsRjUi2JOvYFLF1ZCh55Sdoz94I-BS-TlJC7WDU,126
20
20
  webscout/async_providers.py,sha256=holBv5SxanxVXc_92CBBaXHlB2IakB_fHnhyZaFjYF8,684
21
21
  webscout/cli.py,sha256=F888fdrFUQgczMBN4yMOSf6Nh-IbvkqpPhDsbnA2FtQ,17059
@@ -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.2b0.dist-info/LICENSE.md,sha256=mRVwJuT4SXC5O93BFdsfWBjlXjGn2Np90Zm5SocUzM0,3150
53
- webscout-2.2b0.dist-info/METADATA,sha256=aMKtdXZ_n5Nxyf9Bqj7nrS08QHAMbCAS3HE3k-To0AU,46613
54
- webscout-2.2b0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
55
- webscout-2.2b0.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
56
- webscout-2.2b0.dist-info/top_level.txt,sha256=OD5YKy6Y3hldL7SmuxsiEDxAG4LgdSSWwzYk22MF9fk,18
57
- webscout-2.2b0.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,,