JobSelect 0.11.1__tar.gz → 0.11.2__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.
- {jobselect-0.11.1 → jobselect-0.11.2}/JobSelect.egg-info/PKG-INFO +1 -1
- {jobselect-0.11.1 → jobselect-0.11.2}/JobSelect.egg-info/SOURCES.txt +0 -2
- {jobselect-0.11.1 → jobselect-0.11.2}/PKG-INFO +1 -1
- {jobselect-0.11.1 → jobselect-0.11.2}/cli/api_val.py +2 -10
- {jobselect-0.11.1 → jobselect-0.11.2}/cli/jobselect.py +1 -1
- {jobselect-0.11.1 → jobselect-0.11.2}/cli/model_select.py +3 -5
- {jobselect-0.11.1 → jobselect-0.11.2}/cli/test_cli.py +1 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/pyproject.toml +1 -1
- jobselect-0.11.1/cli/api_logic.py +0 -7
- {jobselect-0.11.1 → jobselect-0.11.2}/JobSelect.egg-info/dependency_links.txt +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/JobSelect.egg-info/entry_points.txt +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/JobSelect.egg-info/requires.txt +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/JobSelect.egg-info/top_level.txt +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/LICENSE +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/README.md +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/cli/utils.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/Model.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/__init__.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/eval.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/pred.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/prep/__init__.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/prep/data_prep.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/prep/label_vocab.json +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/prep/prepared_data.npz +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/prep/sym_map.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/prep/test.py +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model/prep/vectorizer.pkl +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model_out/skill_classifier.pt +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/model_out/training_history.json +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/setup.cfg +0 -0
- {jobselect-0.11.1 → jobselect-0.11.2}/test/test_model.py +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
LICENSE
|
|
2
2
|
README.md
|
|
3
3
|
pyproject.toml
|
|
4
|
-
./cli/api_logic.py
|
|
5
4
|
./cli/api_val.py
|
|
6
5
|
./cli/jobselect.py
|
|
7
6
|
./cli/model_select.py
|
|
@@ -26,7 +25,6 @@ JobSelect.egg-info/dependency_links.txt
|
|
|
26
25
|
JobSelect.egg-info/entry_points.txt
|
|
27
26
|
JobSelect.egg-info/requires.txt
|
|
28
27
|
JobSelect.egg-info/top_level.txt
|
|
29
|
-
cli/api_logic.py
|
|
30
28
|
cli/api_val.py
|
|
31
29
|
cli/jobselect.py
|
|
32
30
|
cli/model_select.py
|
|
@@ -6,19 +6,15 @@ Handles the API key prompt. Stores the user-entered key in module-level
|
|
|
6
6
|
|
|
7
7
|
No imports from model_select or api_logic — circular import is gone.
|
|
8
8
|
"""
|
|
9
|
+
|
|
9
10
|
from .utils import clear_console, API_title, query
|
|
10
11
|
import os
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
|
|
13
14
|
key: str = ""
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
def val_api() -> str:
|
|
17
|
-
"""
|
|
18
|
-
Show the API key prompt and store the result in `key`.
|
|
19
|
-
Returns the entered key (empty string = run locally).
|
|
20
|
-
Called exactly ONCE by the CLI entry point before predict().
|
|
21
|
-
"""
|
|
22
18
|
clear_console()
|
|
23
19
|
API_title()
|
|
24
20
|
query("Enter API Key (Press Enter to run locally)")
|
|
@@ -29,10 +25,6 @@ def val_api() -> str:
|
|
|
29
25
|
|
|
30
26
|
|
|
31
27
|
def infer_mode() -> str:
|
|
32
|
-
"""
|
|
33
|
-
Return 'API' or 'LOCAL' based on key entered or .env fallback.
|
|
34
|
-
Call this AFTER val_api() has run.
|
|
35
|
-
"""
|
|
36
28
|
if key:
|
|
37
29
|
return "API"
|
|
38
30
|
env_key = os.getenv("JOBSELECT_API_KEY", "").strip()
|
|
@@ -3,6 +3,7 @@ jobselect.py — CLI entry point.
|
|
|
3
3
|
Uses relative imports so it works both as an installed pip package
|
|
4
4
|
(jobselect command) and during local development (python -m cli.jobselect).
|
|
5
5
|
"""
|
|
6
|
+
|
|
6
7
|
from .api_val import val_api, infer_mode
|
|
7
8
|
from .utils import clear_console, title, query
|
|
8
9
|
from .model_select import predict
|
|
@@ -56,5 +57,4 @@ def cli() -> None:
|
|
|
56
57
|
|
|
57
58
|
|
|
58
59
|
if __name__ == "__main__":
|
|
59
|
-
# Allows: python -m cli.jobselect
|
|
60
60
|
cli()
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
model_select.py — inference routing (API first, local fallback).
|
|
3
3
|
Never prompts the user. Key is resolved lazily at predict() call time.
|
|
4
4
|
"""
|
|
5
|
+
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from dotenv import load_dotenv
|
|
7
8
|
import os
|
|
@@ -17,7 +18,7 @@ if not _env_path.exists():
|
|
|
17
18
|
_env_path = PROJECT_ROOT / ".env"
|
|
18
19
|
load_dotenv(dotenv_path=_env_path)
|
|
19
20
|
|
|
20
|
-
API_URL =
|
|
21
|
+
API_URL = 'https://job-description-analysis.onrender.com'
|
|
21
22
|
_ENV_KEY = os.getenv("JOBSELECT_API_KEY", "").strip()
|
|
22
23
|
|
|
23
24
|
|
|
@@ -27,14 +28,12 @@ def _resolve_key() -> str:
|
|
|
27
28
|
Priority: user-typed key (from api_val) > .env key.
|
|
28
29
|
"""
|
|
29
30
|
try:
|
|
30
|
-
# relative import — works both locally and as installed package
|
|
31
31
|
from . import api_val
|
|
32
32
|
if api_val.key:
|
|
33
33
|
return api_val.key
|
|
34
34
|
except ImportError:
|
|
35
|
-
# fallback for edge cases (e.g. running file directly during dev)
|
|
36
35
|
try:
|
|
37
|
-
import api_val
|
|
36
|
+
import api_val
|
|
38
37
|
if api_val.key:
|
|
39
38
|
return api_val.key
|
|
40
39
|
except ImportError:
|
|
@@ -43,7 +42,6 @@ def _resolve_key() -> str:
|
|
|
43
42
|
|
|
44
43
|
|
|
45
44
|
def _local_predict(jd: str, role: str, job_type: str):
|
|
46
|
-
# Lazy import keeps heavy ML deps out of the startup critical path
|
|
47
45
|
from model.pred import JobAnalyze_6k as _job_analyze
|
|
48
46
|
return _job_analyze(jd, role=role, job_type=job_type)
|
|
49
47
|
|
|
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
|