1
- # Force lite installation if environment variable is set
2
- import os
3
-
4
- import sys
5
-
6
- if os .environ .get ("NPCSH_LITE_INSTALL" , "" ).lower () == "true" :
7
-
8
- sys .argv .append ("--config-settings" )
9
- sys .argv .append ("install.lite=true" )
10
-
11
1
from setuptools import setup , find_packages
12
2
import site
13
3
import platform
14
4
from pathlib import Path
5
+ import os
15
6
16
7
17
8
def package_files (directory ):
@@ -58,47 +49,35 @@ def get_setup_message():
58
49
To configure your API keys and preferences.
59
50
==============================================
60
51
"""
61
- return "" # Return empty string for non-Windows platforms
52
+ return ""
62
53
63
54
64
- # Define core (lite) requirements
65
- core_requirements = [
66
- "redis" ,
67
- "flask_sse" ,
68
- "anthropic" ,
69
- "beautifulsoup4" ,
70
- "google-generativeai" ,
71
- "google-genai" ,
72
- "duckduckgo-search" ,
73
- "openai" ,
55
+ # Base requirements (no LLM packages)
56
+ base_requirements = [
74
57
"jinja2" ,
58
+ "scipy" ,
59
+ "numpy" ,
75
60
"requests" ,
76
61
"markdown" ,
77
62
"PyYAML" ,
78
- "langchain" ,
79
- "langchain_community" ,
80
63
"pygments" ,
81
64
"termcolor" ,
82
65
"colorama" ,
83
66
"python-dotenv" ,
84
- "pytest" ,
85
- "googlesearch-python" ,
67
+ "pandas" ,
68
+ "beautifulsoup4" ,
69
+ "duckduckgo-search" ,
86
70
"flask" ,
87
71
"flask_cors" ,
88
- "librosa" ,
89
- "pandas" ,
90
- "matplotlib" ,
91
- "IPython" ,
92
- "pyautogui" ,
93
- "nltk" ,
94
- "thefuzz" ,
95
- "pypdf" ,
96
- "PyMuPDF" ,
97
- "screeninfo" ,
72
+ "redis" ,
73
+ "flask_sse" ,
98
74
]
99
75
100
- # Define additional requirements for full installation
101
- extra_requirements = [
76
+ # API integration requirements
77
+ api_requirements = ["anthropic" , "openai" , "google-generativeai" , "google-genai" ]
78
+
79
+ # Local ML/AI requirements
80
+ local_requirements = [
102
81
"sentence_transformers" ,
103
82
"opencv-python" ,
104
83
"ollama" ,
@@ -107,8 +86,8 @@ def get_setup_message():
107
86
"diffusers" ,
108
87
]
109
88
110
- # Define audio requirements
111
- audio_requirements = [
89
+ # Voice/Audio requirements
90
+ voice_requirements = [
112
91
"openai-whisper" ,
113
92
"pyaudio" ,
114
93
"gtts" ,
@@ -118,21 +97,17 @@ def get_setup_message():
118
97
119
98
extra_files = package_files ("npcsh/npc_team/" )
120
99
121
-
122
- def get_requirements ():
123
- # Check if lite installation was requested via sys.argv
124
- if any ("install.lite=true" in arg for arg in sys .argv ):
125
- return core_requirements
126
- elif os .environ .get ("NPCSH_AUDIO_INSTALL" , "" ).lower () == "true" :
127
- return core_requirements + extra_requirements + audio_requirements
128
- return core_requirements + extra_requirements
129
-
130
-
131
100
setup (
132
101
name = "npcsh" ,
133
102
version = "0.3.27.1" ,
134
103
packages = find_packages (exclude = ["tests*" ]),
135
- install_requires = get_requirements (),
104
+ install_requires = base_requirements , # Only install base requirements by default
105
+ extras_require = {
106
+ "lite" : api_requirements , # Just API integrations
107
+ "local" : local_requirements , # Local AI/ML features
108
+ "whisper" : voice_requirements , # Voice/Audio features
109
+ "all" : api_requirements + local_requirements + voice_requirements , # Everything
110
+ },
136
111
entry_points = {
137
112
"console_scripts" : [
138
113
"npcsh=npcsh.shell:main" ,
@@ -154,6 +129,5 @@ def get_requirements():
154
129
python_requires = ">=3.10" ,
155
130
)
156
131
157
- # Print setup message only on Windows
158
132
if platform .system () == "Windows" :
159
133
print (get_setup_message ())
0 commit comments