atsfill 0.0.8.dev221__tar.gz → 0.0.8.dev223__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.
Files changed (69) hide show
  1. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/PKG-INFO +1 -1
  2. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/pyproject.toml +1 -1
  3. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/pyproject.toml.orig +1 -1
  4. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/hrmdirect.py +1 -0
  5. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/recruiterflow.py +1 -0
  6. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/taleo.py +1 -0
  7. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/workday.py +1 -0
  8. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/adapter.py +8 -0
  9. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/LICENSE +0 -0
  10. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/README.md +0 -0
  11. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/__init__.py +0 -0
  12. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/__init__.py +0 -0
  13. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/adp.py +0 -0
  14. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/adpmyjobs.py +0 -0
  15. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/ashby.py +0 -0
  16. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/bamboohr.py +0 -0
  17. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/breezy.py +0 -0
  18. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/dayforce.py +0 -0
  19. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/eightfold.py +0 -0
  20. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/greenhouse.py +0 -0
  21. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/gupy.py +0 -0
  22. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/hireology.py +0 -0
  23. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/hiringthing.py +0 -0
  24. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/isolvedhire.py +0 -0
  25. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/jazzhr.py +0 -0
  26. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/jobaffinity.py +0 -0
  27. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/jobstreet.py +0 -0
  28. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/join.py +0 -0
  29. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/lever.py +0 -0
  30. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/manatal.py +0 -0
  31. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/oracle.py +0 -0
  32. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/paycor.py +0 -0
  33. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/paylocity.py +0 -0
  34. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/personio.py +0 -0
  35. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/phenom.py +0 -0
  36. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/pinpoint.py +0 -0
  37. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/recruitee.py +0 -0
  38. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/rippling.py +0 -0
  39. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/smartrecruiters.py +0 -0
  40. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/successfactors.js +0 -0
  41. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/successfactors.py +0 -0
  42. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/teamtailor.py +0 -0
  43. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/ukg.py +0 -0
  44. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/welcomekit.py +0 -0
  45. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/wellfound.py +0 -0
  46. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/werecruit.py +0 -0
  47. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/workable.py +0 -0
  48. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/workatastartup.py +0 -0
  49. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/wttj.py +0 -0
  50. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/adapters/zohorecruit.py +0 -0
  51. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/cli.py +0 -0
  52. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/__init__.py +0 -0
  53. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/accounts.py +0 -0
  54. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/attempts.py +0 -0
  55. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/browser.py +0 -0
  56. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/commands.py +0 -0
  57. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/conditions.py +0 -0
  58. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/countries.py +0 -0
  59. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/html.py +0 -0
  60. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/matching.py +0 -0
  61. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/otp.py +0 -0
  62. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/passwords.py +0 -0
  63. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/paths.py +0 -0
  64. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/registry.py +0 -0
  65. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/results.py +0 -0
  66. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/snapshot.py +0 -0
  67. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/core/telemetry.py +0 -0
  68. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/py.typed +0 -0
  69. {atsfill-0.0.8.dev221 → atsfill-0.0.8.dev223}/src/atsfill/registry.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atsfill
3
- Version: 0.0.8.dev221
3
+ Version: 0.0.8.dev223
4
4
  Summary: Read, dry-run and submit job application forms on hiring systems: Ashby, Greenhouse, Teamtailor, Welcome to the Jungle.
5
5
  Keywords: job-applications,ats,ashby,greenhouse,teamtailor,ai-agents,cli
6
6
  Author: shbernal
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atsfill"
3
- version = "0.0.8.dev221"
3
+ version = "0.0.8.dev223"
4
4
  description = "Read, dry-run and submit job application forms on hiring systems: Ashby, Greenhouse, Teamtailor, Welcome to the Jungle."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atsfill"
3
- version = "0.0.8.dev221"
3
+ version = "0.0.8.dev223"
4
4
  description = "Read, dry-run and submit job application forms on hiring systems: Ashby, Greenhouse, Teamtailor, Welcome to the Jungle."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -95,6 +95,7 @@ _FIELDS = """form => [...form.querySelectorAll('.form-field')].flatMap(f => {
95
95
 
96
96
  class HRMDirect:
97
97
  name = "hrmdirect"
98
+ lists_every_field = "the fill stops on a field the read did not list, page by page"
98
99
  per_employer = True
99
100
  asks = {"name"}
100
101
  known_gaps = {"screening_first": Gap.FLOW}
@@ -116,6 +116,7 @@ class _Control:
116
116
 
117
117
  class Recruiterflow:
118
118
  name = "recruiterflow"
119
+ lists_every_field = "the page's JSON holds every field whatever the answers"
119
120
  known_gaps: dict[str, Gap] = {}
120
121
  filters = ["recruiterflow.com##.rf-careers-cookie-banner-container"] # over the questions
121
122
  side_effects = [
@@ -208,6 +208,7 @@ def posting(url: str) -> Posting | None:
208
208
 
209
209
  class Taleo:
210
210
  name = "taleo"
211
+ lists_every_field = "the fill stops on a field the read did not list, page by page"
211
212
  per_employer = True
212
213
  asks: set[str] = set()
213
214
  known_gaps = {LOCATION_GAP: Gap.RENDERING, DATE_PICKER_GAP: Gap.RENDERING}
@@ -194,6 +194,7 @@ def _profile_hosts(request: Request, scope: str | None) -> list[str]:
194
194
 
195
195
  class Workday:
196
196
  name = "workday"
197
+ lists_every_field = "the fill stops on a field the read did not list, page by page"
197
198
  per_employer = True
198
199
  asks: set[str] = set()
199
200
  known_gaps = {
@@ -325,3 +325,11 @@ class ListsShownFields(Adapter, Protocol):
325
325
  def shown_fields(self, page: Page) -> list[str]:
326
326
  """The ids of the fields the filled page shows, each as `browser_read` would name it."""
327
327
  ...
328
+
329
+
330
+ @runtime_checkable
331
+ class ListsEveryField(Adapter, Protocol):
332
+ """An adapter that is neither `ListsShownFields` nor `RevealsFields`: it says why no field
333
+ can appear after a read, or how it checks for one itself (ADR 0005)."""
334
+
335
+ lists_every_field: str
File without changes
File without changes