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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiondtech
3
- Version: 2.1.0
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()` | 1 | Upload PDF resume |
83
- | `resumes.upload_and_analyze()` | 3 | Upload + AI parsing |
84
- | `resumes.upload_analyze_compare()` | 6 | Upload + parse + compare to job |
85
- | `resumes.analyze()` | 2 | Parse existing resume by ID |
86
- | `resumes.compare_resumes()` | 3 | Compare resume to job |
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()` | 1 | Create job posting |
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 — 1
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 — 3
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 — 6
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 — 2
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 — 1
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.language # str | None Detected language (e.g. "en", "ar")
258
- result.credits_used # int — 3
269
+ result.credits_used # intCredits 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
- print(f"{r.comparison_score:5.1f}% — {pdf}")
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()` | 1 | Upload PDF resume |
47
- | `resumes.upload_and_analyze()` | 3 | Upload + AI parsing |
48
- | `resumes.upload_analyze_compare()` | 6 | Upload + parse + compare to job |
49
- | `resumes.analyze()` | 2 | Parse existing resume by ID |
50
- | `resumes.compare_resumes()` | 3 | Compare resume to job |
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()` | 1 | Create job posting |
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 — 1
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 — 3
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 — 6
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 — 2
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 — 1
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.language # str | None Detected language (e.g. "en", "ar")
222
- result.credits_used # int — 3
233
+ result.credits_used # intCredits 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
- print(f"{r.comparison_score:5.1f}% — {pdf}")
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.
@@ -31,7 +31,7 @@ Environment Variables:
31
31
  AIONDTECH_BASE_URL: Custom API URL (default: https://api.dev.aiondtech.com)
32
32
  """
33
33
 
34
- __version__ = "2.1.0"
34
+ __version__ = "2.2.0"
35
35
  __author__ = "AiondTech"
36
36
 
37
37
  from .client import ResumeAnalyser, Client