aiondtech 2.1.0__tar.gz → 2.2.0__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.
- {aiondtech-2.1.0 → aiondtech-2.2.0}/PKG-INFO +34 -15
- {aiondtech-2.1.0 → aiondtech-2.2.0}/README.md +34 -15
- {aiondtech-2.1.0 → aiondtech-2.2.0}/aiondtech/__init__.py +1 -1
- aiondtech-2.2.0/aiondtech/client.py +594 -0
- aiondtech-2.2.0/aiondtech/models.py +426 -0
- {aiondtech-2.1.0 → aiondtech-2.2.0}/aiondtech.egg-info/PKG-INFO +34 -15
- {aiondtech-2.1.0 → aiondtech-2.2.0}/pyproject.toml +1 -1
- aiondtech-2.1.0/aiondtech/client.py +0 -1200
- aiondtech-2.1.0/aiondtech/models.py +0 -853
- {aiondtech-2.1.0 → aiondtech-2.2.0}/LICENSE +0 -0
- {aiondtech-2.1.0 → aiondtech-2.2.0}/aiondtech/py.typed +0 -0
- {aiondtech-2.1.0 → aiondtech-2.2.0}/aiondtech.egg-info/SOURCES.txt +0 -0
- {aiondtech-2.1.0 → aiondtech-2.2.0}/aiondtech.egg-info/dependency_links.txt +0 -0
- {aiondtech-2.1.0 → aiondtech-2.2.0}/aiondtech.egg-info/requires.txt +0 -0
- {aiondtech-2.1.0 → aiondtech-2.2.0}/aiondtech.egg-info/top_level.txt +0 -0
- {aiondtech-2.1.0 → aiondtech-2.2.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aiondtech
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Official Python SDK for AiondTech Resume Analyser API
|
|
5
5
|
Author-email: AiondTech <support@aiondtech.com>
|
|
6
6
|
Maintainer-email: AiondTech <support@aiondtech.com>
|
|
@@ -77,19 +77,31 @@ client = ResumeAnalyser(api_key="your-api-key", production=True)
|
|
|
77
77
|
|
|
78
78
|
## API Endpoints
|
|
79
79
|
|
|
80
|
+
Credit usage varies depending on resume size and complexity. Every response includes the actual `credits_used` — always check it for accurate tracking.
|
|
81
|
+
|
|
80
82
|
| Method | Credits | Description |
|
|
81
83
|
|--------|---------|-------------|
|
|
82
|
-
| `resumes.upload()` |
|
|
83
|
-
| `resumes.upload_and_analyze()` |
|
|
84
|
-
| `resumes.upload_analyze_compare()` |
|
|
85
|
-
| `resumes.analyze()` |
|
|
86
|
-
| `resumes.compare_resumes()` |
|
|
84
|
+
| `resumes.upload()` | Varies | Upload PDF resume |
|
|
85
|
+
| `resumes.upload_and_analyze()` | Varies | Upload + AI parsing |
|
|
86
|
+
| `resumes.upload_analyze_compare()` | Varies | Upload + parse + compare to job |
|
|
87
|
+
| `resumes.analyze()` | Varies | Parse existing resume by ID |
|
|
88
|
+
| `resumes.compare_resumes()` | Varies | Compare resume to job |
|
|
87
89
|
| `resumes.list()` | 0 | List all resumes |
|
|
88
|
-
| `jobs.create()` |
|
|
90
|
+
| `jobs.create()` | Varies | Create job posting |
|
|
89
91
|
| `jobs.list()` | 0 | List all jobs |
|
|
90
92
|
| `credits.balance()` | 0 | Check credit balance |
|
|
91
93
|
| `credits.usage()` | 0 | View usage history |
|
|
92
94
|
|
|
95
|
+
**Tracking credits:**
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
result = client.resumes.upload_and_analyze("resume.pdf")
|
|
99
|
+
print(f"This call used {result.credits_used} credits")
|
|
100
|
+
|
|
101
|
+
balance = client.credits.balance()
|
|
102
|
+
print(f"Remaining: {balance['remaining']}")
|
|
103
|
+
```
|
|
104
|
+
|
|
93
105
|
---
|
|
94
106
|
|
|
95
107
|
## Detailed Usage
|
|
@@ -107,7 +119,7 @@ result = client.resumes.upload("path/to/resume.pdf")
|
|
|
107
119
|
```python
|
|
108
120
|
result.resume_id # int — Unique resume ID
|
|
109
121
|
result.message # str — "Resume uploaded successfully"
|
|
110
|
-
result.credits_used # int —
|
|
122
|
+
result.credits_used # int — Credits consumed by this call
|
|
111
123
|
result._raw # dict — Full raw API response
|
|
112
124
|
```
|
|
113
125
|
|
|
@@ -126,7 +138,7 @@ result = client.resumes.upload_and_analyze("path/to/resume.pdf")
|
|
|
126
138
|
```python
|
|
127
139
|
result.resume_id # int — Unique resume ID
|
|
128
140
|
result.parsed_data # dict — Full parsed data (see structure below)
|
|
129
|
-
result.credits_used # int —
|
|
141
|
+
result.credits_used # int — Credits consumed by this call
|
|
130
142
|
result._raw # dict — Full raw API response
|
|
131
143
|
|
|
132
144
|
# Convenience properties
|
|
@@ -175,7 +187,7 @@ result.comparison_score # float — Match score (0-100)
|
|
|
175
187
|
result.comparison_reason # str — Detailed reasoning
|
|
176
188
|
result.language # str | None — Detected language (e.g. "en", "ar")
|
|
177
189
|
result.parsed_data # dict | None — Parsed resume data
|
|
178
|
-
result.credits_used # int —
|
|
190
|
+
result.credits_used # int — Credits consumed by this call
|
|
179
191
|
result._raw # dict — Full raw API response
|
|
180
192
|
```
|
|
181
193
|
|
|
@@ -195,7 +207,7 @@ result = client.resumes.analyze(resume_id=123)
|
|
|
195
207
|
result.resume_id # int — Resume ID
|
|
196
208
|
result.partner # str — Partner identifier
|
|
197
209
|
result.parsed_data # dict — Full parsed data
|
|
198
|
-
result.credits_used # int —
|
|
210
|
+
result.credits_used # int — Credits consumed by this call
|
|
199
211
|
result._raw # dict — Full raw API response
|
|
200
212
|
|
|
201
213
|
# Convenience properties
|
|
@@ -233,7 +245,7 @@ job.title # str — Job title
|
|
|
233
245
|
job.description # str — Job description
|
|
234
246
|
job.created_by # str — Creator identifier
|
|
235
247
|
job.created_at # str | None — Creation timestamp
|
|
236
|
-
job.credits_used # int —
|
|
248
|
+
job.credits_used # int — Credits consumed by this call
|
|
237
249
|
job._raw # dict — Full raw API response
|
|
238
250
|
```
|
|
239
251
|
|
|
@@ -254,8 +266,7 @@ result.resume_id # int — Resume ID
|
|
|
254
266
|
result.job_id # int — Job ID
|
|
255
267
|
result.comparison_score # float — Match score (0-100)
|
|
256
268
|
result.comparison_reason # str — Detailed reasoning
|
|
257
|
-
result.
|
|
258
|
-
result.credits_used # int — 3
|
|
269
|
+
result.credits_used # int — Credits consumed by this call
|
|
259
270
|
result._raw # dict — Full raw API response
|
|
260
271
|
```
|
|
261
272
|
|
|
@@ -391,12 +402,14 @@ job = client.jobs.create(
|
|
|
391
402
|
description="5+ years Python, Django, AWS, PostgreSQL required..."
|
|
392
403
|
)
|
|
393
404
|
print(f"Created job #{job.job_id}: {job.title}")
|
|
405
|
+
print(f"Credits used: {job.credits_used}")
|
|
394
406
|
|
|
395
407
|
# Step 2: Upload and analyze a resume
|
|
396
408
|
analysis = client.resumes.upload_and_analyze("candidate_resume.pdf")
|
|
397
409
|
print(f"Candidate: {analysis.full_name}")
|
|
398
410
|
print(f"Skills: {', '.join(analysis.skills)}")
|
|
399
411
|
print(f"Experience: {analysis.total_experience}")
|
|
412
|
+
print(f"Credits used: {analysis.credits_used}")
|
|
400
413
|
|
|
401
414
|
# Step 3: Compare resume to job
|
|
402
415
|
comparison = client.resumes.compare_resumes(
|
|
@@ -406,6 +419,7 @@ comparison = client.resumes.compare_resumes(
|
|
|
406
419
|
print(f"Score: {comparison.comparison_score}%")
|
|
407
420
|
print(f"Language: {comparison.language}")
|
|
408
421
|
print(f"Reasoning: {comparison.comparison_reason}")
|
|
422
|
+
print(f"Credits used: {comparison.credits_used}")
|
|
409
423
|
|
|
410
424
|
# Step 4: Check remaining credits
|
|
411
425
|
balance = client.credits.balance()
|
|
@@ -417,6 +431,7 @@ print(f"Credits remaining: {balance['remaining']}")
|
|
|
417
431
|
```python
|
|
418
432
|
result = client.resumes.upload_analyze_compare("resume.pdf", job_id=job.job_id)
|
|
419
433
|
print(f"Score: {result.comparison_score}% — {result.comparison_reason}")
|
|
434
|
+
print(f"Credits used: {result.credits_used}")
|
|
420
435
|
```
|
|
421
436
|
|
|
422
437
|
### Batch Processing
|
|
@@ -426,18 +441,22 @@ import os
|
|
|
426
441
|
|
|
427
442
|
job = client.jobs.create("Data Scientist", "ML, Python, statistics...")
|
|
428
443
|
|
|
444
|
+
total_credits = job.credits_used
|
|
429
445
|
results = []
|
|
446
|
+
|
|
430
447
|
for pdf in os.listdir("resumes/"):
|
|
431
448
|
if pdf.endswith(".pdf"):
|
|
432
449
|
r = client.resumes.upload_analyze_compare(
|
|
433
450
|
f"resumes/{pdf}", job_id=job.job_id
|
|
434
451
|
)
|
|
435
452
|
results.append(r)
|
|
436
|
-
|
|
453
|
+
total_credits += r.credits_used
|
|
454
|
+
print(f"{r.comparison_score:5.1f}% — {pdf} ({r.credits_used} credits)")
|
|
437
455
|
|
|
438
456
|
# Sort by score
|
|
439
457
|
results.sort(key=lambda x: x.comparison_score, reverse=True)
|
|
440
458
|
print(f"\nTop candidate: resume_id={results[0].resume_id} ({results[0].comparison_score}%)")
|
|
459
|
+
print(f"Total credits used: {total_credits}")
|
|
441
460
|
```
|
|
442
461
|
|
|
443
462
|
---
|
|
@@ -41,19 +41,31 @@ client = ResumeAnalyser(api_key="your-api-key", production=True)
|
|
|
41
41
|
|
|
42
42
|
## API Endpoints
|
|
43
43
|
|
|
44
|
+
Credit usage varies depending on resume size and complexity. Every response includes the actual `credits_used` — always check it for accurate tracking.
|
|
45
|
+
|
|
44
46
|
| Method | Credits | Description |
|
|
45
47
|
|--------|---------|-------------|
|
|
46
|
-
| `resumes.upload()` |
|
|
47
|
-
| `resumes.upload_and_analyze()` |
|
|
48
|
-
| `resumes.upload_analyze_compare()` |
|
|
49
|
-
| `resumes.analyze()` |
|
|
50
|
-
| `resumes.compare_resumes()` |
|
|
48
|
+
| `resumes.upload()` | Varies | Upload PDF resume |
|
|
49
|
+
| `resumes.upload_and_analyze()` | Varies | Upload + AI parsing |
|
|
50
|
+
| `resumes.upload_analyze_compare()` | Varies | Upload + parse + compare to job |
|
|
51
|
+
| `resumes.analyze()` | Varies | Parse existing resume by ID |
|
|
52
|
+
| `resumes.compare_resumes()` | Varies | Compare resume to job |
|
|
51
53
|
| `resumes.list()` | 0 | List all resumes |
|
|
52
|
-
| `jobs.create()` |
|
|
54
|
+
| `jobs.create()` | Varies | Create job posting |
|
|
53
55
|
| `jobs.list()` | 0 | List all jobs |
|
|
54
56
|
| `credits.balance()` | 0 | Check credit balance |
|
|
55
57
|
| `credits.usage()` | 0 | View usage history |
|
|
56
58
|
|
|
59
|
+
**Tracking credits:**
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
result = client.resumes.upload_and_analyze("resume.pdf")
|
|
63
|
+
print(f"This call used {result.credits_used} credits")
|
|
64
|
+
|
|
65
|
+
balance = client.credits.balance()
|
|
66
|
+
print(f"Remaining: {balance['remaining']}")
|
|
67
|
+
```
|
|
68
|
+
|
|
57
69
|
---
|
|
58
70
|
|
|
59
71
|
## Detailed Usage
|
|
@@ -71,7 +83,7 @@ result = client.resumes.upload("path/to/resume.pdf")
|
|
|
71
83
|
```python
|
|
72
84
|
result.resume_id # int — Unique resume ID
|
|
73
85
|
result.message # str — "Resume uploaded successfully"
|
|
74
|
-
result.credits_used # int —
|
|
86
|
+
result.credits_used # int — Credits consumed by this call
|
|
75
87
|
result._raw # dict — Full raw API response
|
|
76
88
|
```
|
|
77
89
|
|
|
@@ -90,7 +102,7 @@ result = client.resumes.upload_and_analyze("path/to/resume.pdf")
|
|
|
90
102
|
```python
|
|
91
103
|
result.resume_id # int — Unique resume ID
|
|
92
104
|
result.parsed_data # dict — Full parsed data (see structure below)
|
|
93
|
-
result.credits_used # int —
|
|
105
|
+
result.credits_used # int — Credits consumed by this call
|
|
94
106
|
result._raw # dict — Full raw API response
|
|
95
107
|
|
|
96
108
|
# Convenience properties
|
|
@@ -139,7 +151,7 @@ result.comparison_score # float — Match score (0-100)
|
|
|
139
151
|
result.comparison_reason # str — Detailed reasoning
|
|
140
152
|
result.language # str | None — Detected language (e.g. "en", "ar")
|
|
141
153
|
result.parsed_data # dict | None — Parsed resume data
|
|
142
|
-
result.credits_used # int —
|
|
154
|
+
result.credits_used # int — Credits consumed by this call
|
|
143
155
|
result._raw # dict — Full raw API response
|
|
144
156
|
```
|
|
145
157
|
|
|
@@ -159,7 +171,7 @@ result = client.resumes.analyze(resume_id=123)
|
|
|
159
171
|
result.resume_id # int — Resume ID
|
|
160
172
|
result.partner # str — Partner identifier
|
|
161
173
|
result.parsed_data # dict — Full parsed data
|
|
162
|
-
result.credits_used # int —
|
|
174
|
+
result.credits_used # int — Credits consumed by this call
|
|
163
175
|
result._raw # dict — Full raw API response
|
|
164
176
|
|
|
165
177
|
# Convenience properties
|
|
@@ -197,7 +209,7 @@ job.title # str — Job title
|
|
|
197
209
|
job.description # str — Job description
|
|
198
210
|
job.created_by # str — Creator identifier
|
|
199
211
|
job.created_at # str | None — Creation timestamp
|
|
200
|
-
job.credits_used # int —
|
|
212
|
+
job.credits_used # int — Credits consumed by this call
|
|
201
213
|
job._raw # dict — Full raw API response
|
|
202
214
|
```
|
|
203
215
|
|
|
@@ -218,8 +230,7 @@ result.resume_id # int — Resume ID
|
|
|
218
230
|
result.job_id # int — Job ID
|
|
219
231
|
result.comparison_score # float — Match score (0-100)
|
|
220
232
|
result.comparison_reason # str — Detailed reasoning
|
|
221
|
-
result.
|
|
222
|
-
result.credits_used # int — 3
|
|
233
|
+
result.credits_used # int — Credits consumed by this call
|
|
223
234
|
result._raw # dict — Full raw API response
|
|
224
235
|
```
|
|
225
236
|
|
|
@@ -355,12 +366,14 @@ job = client.jobs.create(
|
|
|
355
366
|
description="5+ years Python, Django, AWS, PostgreSQL required..."
|
|
356
367
|
)
|
|
357
368
|
print(f"Created job #{job.job_id}: {job.title}")
|
|
369
|
+
print(f"Credits used: {job.credits_used}")
|
|
358
370
|
|
|
359
371
|
# Step 2: Upload and analyze a resume
|
|
360
372
|
analysis = client.resumes.upload_and_analyze("candidate_resume.pdf")
|
|
361
373
|
print(f"Candidate: {analysis.full_name}")
|
|
362
374
|
print(f"Skills: {', '.join(analysis.skills)}")
|
|
363
375
|
print(f"Experience: {analysis.total_experience}")
|
|
376
|
+
print(f"Credits used: {analysis.credits_used}")
|
|
364
377
|
|
|
365
378
|
# Step 3: Compare resume to job
|
|
366
379
|
comparison = client.resumes.compare_resumes(
|
|
@@ -370,6 +383,7 @@ comparison = client.resumes.compare_resumes(
|
|
|
370
383
|
print(f"Score: {comparison.comparison_score}%")
|
|
371
384
|
print(f"Language: {comparison.language}")
|
|
372
385
|
print(f"Reasoning: {comparison.comparison_reason}")
|
|
386
|
+
print(f"Credits used: {comparison.credits_used}")
|
|
373
387
|
|
|
374
388
|
# Step 4: Check remaining credits
|
|
375
389
|
balance = client.credits.balance()
|
|
@@ -381,6 +395,7 @@ print(f"Credits remaining: {balance['remaining']}")
|
|
|
381
395
|
```python
|
|
382
396
|
result = client.resumes.upload_analyze_compare("resume.pdf", job_id=job.job_id)
|
|
383
397
|
print(f"Score: {result.comparison_score}% — {result.comparison_reason}")
|
|
398
|
+
print(f"Credits used: {result.credits_used}")
|
|
384
399
|
```
|
|
385
400
|
|
|
386
401
|
### Batch Processing
|
|
@@ -390,18 +405,22 @@ import os
|
|
|
390
405
|
|
|
391
406
|
job = client.jobs.create("Data Scientist", "ML, Python, statistics...")
|
|
392
407
|
|
|
408
|
+
total_credits = job.credits_used
|
|
393
409
|
results = []
|
|
410
|
+
|
|
394
411
|
for pdf in os.listdir("resumes/"):
|
|
395
412
|
if pdf.endswith(".pdf"):
|
|
396
413
|
r = client.resumes.upload_analyze_compare(
|
|
397
414
|
f"resumes/{pdf}", job_id=job.job_id
|
|
398
415
|
)
|
|
399
416
|
results.append(r)
|
|
400
|
-
|
|
417
|
+
total_credits += r.credits_used
|
|
418
|
+
print(f"{r.comparison_score:5.1f}% — {pdf} ({r.credits_used} credits)")
|
|
401
419
|
|
|
402
420
|
# Sort by score
|
|
403
421
|
results.sort(key=lambda x: x.comparison_score, reverse=True)
|
|
404
422
|
print(f"\nTop candidate: resume_id={results[0].resume_id} ({results[0].comparison_score}%)")
|
|
423
|
+
print(f"Total credits used: {total_credits}")
|
|
405
424
|
```
|
|
406
425
|
|
|
407
426
|
---
|
|
@@ -434,4 +453,4 @@ client = ResumeAnalyser()
|
|
|
434
453
|
|
|
435
454
|
## License
|
|
436
455
|
|
|
437
|
-
MIT License - see [LICENSE](LICENSE) for details.
|
|
456
|
+
MIT License - see [LICENSE](LICENSE) for details.
|