atsfill 0.0.5.dev146__tar.gz → 0.0.5.dev147__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 (59) hide show
  1. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/PKG-INFO +35 -6
  2. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/README.md +34 -5
  3. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/pyproject.toml +1 -1
  4. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/pyproject.toml.orig +1 -1
  5. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/commands.py +1 -0
  6. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/registry.py +12 -13
  7. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/results.py +1 -0
  8. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/LICENSE +0 -0
  9. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/__init__.py +0 -0
  10. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/__init__.py +0 -0
  11. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/ashby.py +0 -0
  12. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/bamboohr.py +0 -0
  13. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/breezy.py +0 -0
  14. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/dayforce.py +0 -0
  15. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/eightfold.py +0 -0
  16. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/greenhouse.py +0 -0
  17. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/gupy.py +0 -0
  18. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/hireology.py +0 -0
  19. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/hiringthing.py +0 -0
  20. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/hrmdirect.py +0 -0
  21. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/isolvedhire.py +0 -0
  22. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/jazzhr.py +0 -0
  23. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/join.py +0 -0
  24. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/lever.py +0 -0
  25. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/manatal.py +0 -0
  26. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/oracle.py +0 -0
  27. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/paycor.py +0 -0
  28. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/paylocity.py +0 -0
  29. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/personio.py +0 -0
  30. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/phenom.py +0 -0
  31. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/pinpoint.py +0 -0
  32. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/recruitee.py +0 -0
  33. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/rippling.py +0 -0
  34. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/smartrecruiters.py +0 -0
  35. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/successfactors.js +0 -0
  36. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/successfactors.py +0 -0
  37. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/taleo.py +0 -0
  38. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/teamtailor.py +0 -0
  39. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/ukg.py +0 -0
  40. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/workable.py +0 -0
  41. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/workday.py +0 -0
  42. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/wttj.py +0 -0
  43. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/adapters/zohorecruit.py +0 -0
  44. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/cli.py +0 -0
  45. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/__init__.py +0 -0
  46. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/accounts.py +0 -0
  47. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/adapter.py +0 -0
  48. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/attempts.py +0 -0
  49. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/browser.py +0 -0
  50. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/conditions.py +0 -0
  51. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/html.py +0 -0
  52. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/matching.py +0 -0
  53. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/otp.py +0 -0
  54. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/passwords.py +0 -0
  55. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/paths.py +0 -0
  56. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/snapshot.py +0 -0
  57. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/core/telemetry.py +0 -0
  58. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/py.typed +0 -0
  59. {atsfill-0.0.5.dev146 → atsfill-0.0.5.dev147}/src/atsfill/registry.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atsfill
3
- Version: 0.0.5.dev146
3
+ Version: 0.0.5.dev147
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
@@ -57,11 +57,40 @@ It is built for agents with a shell: every command prints one JSON document and
57
57
 
58
58
  ## Supported hiring systems
59
59
 
60
- <!-- badges -->
61
- ![oracle: supported 2026-10-20](https://img.shields.io/badge/oracle-supported%202026--10--20-9ece6a) ![smartrecruiters: supported 2026-10-20](https://img.shields.io/badge/smartrecruiters-supported%202026--10--20-9ece6a) ![greenhouse: supported 2026-10-19](https://img.shields.io/badge/greenhouse-supported%202026--10--19-9ece6a) ![manatal: supported 2026-10-20](https://img.shields.io/badge/manatal-supported%202026--10--20-9ece6a) ![paylocity: supported 2026-10-20](https://img.shields.io/badge/paylocity-supported%202026--10--20-9ece6a) ![dayforce: supported 2026-10-20](https://img.shields.io/badge/dayforce-supported%202026--10--20-9ece6a) ![workable: supported 2026-10-20](https://img.shields.io/badge/workable-supported%202026--10--20-9ece6a) ![ashby: supported 2026-10-19](https://img.shields.io/badge/ashby-supported%202026--10--19-9ece6a) ![bamboohr: supported 2026-10-21](https://img.shields.io/badge/bamboohr-supported%202026--10--21-9ece6a) ![teamtailor: supported 2026-10-25](https://img.shields.io/badge/teamtailor-supported%202026--10--25-9ece6a) ![jazzhr: supported 2026-10-20](https://img.shields.io/badge/jazzhr-supported%202026--10--20-9ece6a) ![lever: supported 2026-10-20](https://img.shields.io/badge/lever-supported%202026--10--20-9ece6a) ![hireology: supported 2026-10-20](https://img.shields.io/badge/hireology-supported%202026--10--20-9ece6a) ![paycor: supported 2026-10-20](https://img.shields.io/badge/paycor-supported%202026--10--20-9ece6a) ![zohorecruit: supported 2026-10-22](https://img.shields.io/badge/zohorecruit-supported%202026--10--22-9ece6a) ![phenom: supported 2026-10-21](https://img.shields.io/badge/phenom-supported%202026--10--21-9ece6a) ![breezy: supported 2026-10-21](https://img.shields.io/badge/breezy-supported%202026--10--21-9ece6a) ![recruitee: supported 2026-10-25](https://img.shields.io/badge/recruitee-supported%202026--10--25-9ece6a) ![rippling: supported 2026-10-22](https://img.shields.io/badge/rippling-supported%202026--10--22-9ece6a) ![personio: supported 2026-10-22](https://img.shields.io/badge/personio-supported%202026--10--22-9ece6a) ![eightfold: supported 2026-10-22](https://img.shields.io/badge/eightfold-supported%202026--10--22-9ece6a) ![pinpoint: supported 2026-10-22](https://img.shields.io/badge/pinpoint-supported%202026--10--22-9ece6a) ![hiringthing: supported 2026-10-22](https://img.shields.io/badge/hiringthing-supported%202026--10--22-9ece6a) ![join: supported 2026-10-26](https://img.shields.io/badge/join-supported%202026--10--26-9ece6a) ![wttj: supported 2026-10-24](https://img.shields.io/badge/wttj-supported%202026--10--24-9ece6a) ![workday: supported 2026-10-24](https://img.shields.io/badge/workday-supported%202026--10--24-9ece6a) ![successfactors: supported 2026-10-26](https://img.shields.io/badge/successfactors-supported%202026--10--26-9ece6a) ![isolvedhire: supported 2026-10-26](https://img.shields.io/badge/isolvedhire-supported%202026--10--26-9ece6a) ![gupy: supported 2026-10-26](https://img.shields.io/badge/gupy-supported%202026--10--26-9ece6a) ![ukg: in scope 2026-10-26](https://img.shields.io/badge/ukg-in%20scope%202026--10--26-e0af68)
62
- <!-- /badges -->
63
-
64
- Each badge is a hiring system atsfill has an adapter for: `supported` once a dry run passed on five employers, with its date.
60
+ <!-- run-history -->
61
+ [![oracle run history](https://shbernal.github.io/atsfill/run-history/oracle.svg)](https://shbernal.github.io/atsfill/run-history/)
62
+ [![smartrecruiters run history](https://shbernal.github.io/atsfill/run-history/smartrecruiters.svg)](https://shbernal.github.io/atsfill/run-history/)
63
+ [![greenhouse run history](https://shbernal.github.io/atsfill/run-history/greenhouse.svg)](https://shbernal.github.io/atsfill/run-history/)
64
+ [![manatal run history](https://shbernal.github.io/atsfill/run-history/manatal.svg)](https://shbernal.github.io/atsfill/run-history/)
65
+ [![paylocity run history](https://shbernal.github.io/atsfill/run-history/paylocity.svg)](https://shbernal.github.io/atsfill/run-history/)
66
+ [![dayforce run history](https://shbernal.github.io/atsfill/run-history/dayforce.svg)](https://shbernal.github.io/atsfill/run-history/)
67
+ [![workable run history](https://shbernal.github.io/atsfill/run-history/workable.svg)](https://shbernal.github.io/atsfill/run-history/)
68
+ [![ashby run history](https://shbernal.github.io/atsfill/run-history/ashby.svg)](https://shbernal.github.io/atsfill/run-history/)
69
+ [![bamboohr run history](https://shbernal.github.io/atsfill/run-history/bamboohr.svg)](https://shbernal.github.io/atsfill/run-history/)
70
+ [![teamtailor run history](https://shbernal.github.io/atsfill/run-history/teamtailor.svg)](https://shbernal.github.io/atsfill/run-history/)
71
+ [![jazzhr run history](https://shbernal.github.io/atsfill/run-history/jazzhr.svg)](https://shbernal.github.io/atsfill/run-history/)
72
+ [![lever run history](https://shbernal.github.io/atsfill/run-history/lever.svg)](https://shbernal.github.io/atsfill/run-history/)
73
+ [![hireology run history](https://shbernal.github.io/atsfill/run-history/hireology.svg)](https://shbernal.github.io/atsfill/run-history/)
74
+ [![paycor run history](https://shbernal.github.io/atsfill/run-history/paycor.svg)](https://shbernal.github.io/atsfill/run-history/)
75
+ [![zohorecruit run history](https://shbernal.github.io/atsfill/run-history/zohorecruit.svg)](https://shbernal.github.io/atsfill/run-history/)
76
+ [![phenom run history](https://shbernal.github.io/atsfill/run-history/phenom.svg)](https://shbernal.github.io/atsfill/run-history/)
77
+ [![breezy run history](https://shbernal.github.io/atsfill/run-history/breezy.svg)](https://shbernal.github.io/atsfill/run-history/)
78
+ [![recruitee run history](https://shbernal.github.io/atsfill/run-history/recruitee.svg)](https://shbernal.github.io/atsfill/run-history/)
79
+ [![rippling run history](https://shbernal.github.io/atsfill/run-history/rippling.svg)](https://shbernal.github.io/atsfill/run-history/)
80
+ [![personio run history](https://shbernal.github.io/atsfill/run-history/personio.svg)](https://shbernal.github.io/atsfill/run-history/)
81
+ [![eightfold run history](https://shbernal.github.io/atsfill/run-history/eightfold.svg)](https://shbernal.github.io/atsfill/run-history/)
82
+ [![pinpoint run history](https://shbernal.github.io/atsfill/run-history/pinpoint.svg)](https://shbernal.github.io/atsfill/run-history/)
83
+ [![hiringthing run history](https://shbernal.github.io/atsfill/run-history/hiringthing.svg)](https://shbernal.github.io/atsfill/run-history/)
84
+ [![join run history](https://shbernal.github.io/atsfill/run-history/join.svg)](https://shbernal.github.io/atsfill/run-history/)
85
+ [![wttj run history](https://shbernal.github.io/atsfill/run-history/wttj.svg)](https://shbernal.github.io/atsfill/run-history/)
86
+ [![workday run history](https://shbernal.github.io/atsfill/run-history/workday.svg)](https://shbernal.github.io/atsfill/run-history/)
87
+ [![successfactors run history](https://shbernal.github.io/atsfill/run-history/successfactors.svg)](https://shbernal.github.io/atsfill/run-history/)
88
+ [![isolvedhire run history](https://shbernal.github.io/atsfill/run-history/isolvedhire.svg)](https://shbernal.github.io/atsfill/run-history/)
89
+ [![gupy run history](https://shbernal.github.io/atsfill/run-history/gupy.svg)](https://shbernal.github.io/atsfill/run-history/)
90
+ [![ukg run history](https://shbernal.github.io/atsfill/run-history/ukg.svg)](https://shbernal.github.io/atsfill/run-history/)
91
+ <!-- /run-history -->
92
+
93
+ Each line is a hiring system atsfill has an adapter for, and its [run history](https://shbernal.github.io/atsfill/run-history/): the last 30 days of runs, green when a form filled or an application went through, red when it failed.
65
94
  [The systems](docs/adapters/README.md) lists which ones need an account, to read the form or only to send it.
66
95
  Any other system returns `unsupported`, so the consumer can fall back to driving a browser itself.
67
96
 
@@ -28,11 +28,40 @@ It is built for agents with a shell: every command prints one JSON document and
28
28
 
29
29
  ## Supported hiring systems
30
30
 
31
- <!-- badges -->
32
- ![oracle: supported 2026-10-20](https://img.shields.io/badge/oracle-supported%202026--10--20-9ece6a) ![smartrecruiters: supported 2026-10-20](https://img.shields.io/badge/smartrecruiters-supported%202026--10--20-9ece6a) ![greenhouse: supported 2026-10-19](https://img.shields.io/badge/greenhouse-supported%202026--10--19-9ece6a) ![manatal: supported 2026-10-20](https://img.shields.io/badge/manatal-supported%202026--10--20-9ece6a) ![paylocity: supported 2026-10-20](https://img.shields.io/badge/paylocity-supported%202026--10--20-9ece6a) ![dayforce: supported 2026-10-20](https://img.shields.io/badge/dayforce-supported%202026--10--20-9ece6a) ![workable: supported 2026-10-20](https://img.shields.io/badge/workable-supported%202026--10--20-9ece6a) ![ashby: supported 2026-10-19](https://img.shields.io/badge/ashby-supported%202026--10--19-9ece6a) ![bamboohr: supported 2026-10-21](https://img.shields.io/badge/bamboohr-supported%202026--10--21-9ece6a) ![teamtailor: supported 2026-10-25](https://img.shields.io/badge/teamtailor-supported%202026--10--25-9ece6a) ![jazzhr: supported 2026-10-20](https://img.shields.io/badge/jazzhr-supported%202026--10--20-9ece6a) ![lever: supported 2026-10-20](https://img.shields.io/badge/lever-supported%202026--10--20-9ece6a) ![hireology: supported 2026-10-20](https://img.shields.io/badge/hireology-supported%202026--10--20-9ece6a) ![paycor: supported 2026-10-20](https://img.shields.io/badge/paycor-supported%202026--10--20-9ece6a) ![zohorecruit: supported 2026-10-22](https://img.shields.io/badge/zohorecruit-supported%202026--10--22-9ece6a) ![phenom: supported 2026-10-21](https://img.shields.io/badge/phenom-supported%202026--10--21-9ece6a) ![breezy: supported 2026-10-21](https://img.shields.io/badge/breezy-supported%202026--10--21-9ece6a) ![recruitee: supported 2026-10-25](https://img.shields.io/badge/recruitee-supported%202026--10--25-9ece6a) ![rippling: supported 2026-10-22](https://img.shields.io/badge/rippling-supported%202026--10--22-9ece6a) ![personio: supported 2026-10-22](https://img.shields.io/badge/personio-supported%202026--10--22-9ece6a) ![eightfold: supported 2026-10-22](https://img.shields.io/badge/eightfold-supported%202026--10--22-9ece6a) ![pinpoint: supported 2026-10-22](https://img.shields.io/badge/pinpoint-supported%202026--10--22-9ece6a) ![hiringthing: supported 2026-10-22](https://img.shields.io/badge/hiringthing-supported%202026--10--22-9ece6a) ![join: supported 2026-10-26](https://img.shields.io/badge/join-supported%202026--10--26-9ece6a) ![wttj: supported 2026-10-24](https://img.shields.io/badge/wttj-supported%202026--10--24-9ece6a) ![workday: supported 2026-10-24](https://img.shields.io/badge/workday-supported%202026--10--24-9ece6a) ![successfactors: supported 2026-10-26](https://img.shields.io/badge/successfactors-supported%202026--10--26-9ece6a) ![isolvedhire: supported 2026-10-26](https://img.shields.io/badge/isolvedhire-supported%202026--10--26-9ece6a) ![gupy: supported 2026-10-26](https://img.shields.io/badge/gupy-supported%202026--10--26-9ece6a) ![ukg: in scope 2026-10-26](https://img.shields.io/badge/ukg-in%20scope%202026--10--26-e0af68)
33
- <!-- /badges -->
34
-
35
- Each badge is a hiring system atsfill has an adapter for: `supported` once a dry run passed on five employers, with its date.
31
+ <!-- run-history -->
32
+ [![oracle run history](https://shbernal.github.io/atsfill/run-history/oracle.svg)](https://shbernal.github.io/atsfill/run-history/)
33
+ [![smartrecruiters run history](https://shbernal.github.io/atsfill/run-history/smartrecruiters.svg)](https://shbernal.github.io/atsfill/run-history/)
34
+ [![greenhouse run history](https://shbernal.github.io/atsfill/run-history/greenhouse.svg)](https://shbernal.github.io/atsfill/run-history/)
35
+ [![manatal run history](https://shbernal.github.io/atsfill/run-history/manatal.svg)](https://shbernal.github.io/atsfill/run-history/)
36
+ [![paylocity run history](https://shbernal.github.io/atsfill/run-history/paylocity.svg)](https://shbernal.github.io/atsfill/run-history/)
37
+ [![dayforce run history](https://shbernal.github.io/atsfill/run-history/dayforce.svg)](https://shbernal.github.io/atsfill/run-history/)
38
+ [![workable run history](https://shbernal.github.io/atsfill/run-history/workable.svg)](https://shbernal.github.io/atsfill/run-history/)
39
+ [![ashby run history](https://shbernal.github.io/atsfill/run-history/ashby.svg)](https://shbernal.github.io/atsfill/run-history/)
40
+ [![bamboohr run history](https://shbernal.github.io/atsfill/run-history/bamboohr.svg)](https://shbernal.github.io/atsfill/run-history/)
41
+ [![teamtailor run history](https://shbernal.github.io/atsfill/run-history/teamtailor.svg)](https://shbernal.github.io/atsfill/run-history/)
42
+ [![jazzhr run history](https://shbernal.github.io/atsfill/run-history/jazzhr.svg)](https://shbernal.github.io/atsfill/run-history/)
43
+ [![lever run history](https://shbernal.github.io/atsfill/run-history/lever.svg)](https://shbernal.github.io/atsfill/run-history/)
44
+ [![hireology run history](https://shbernal.github.io/atsfill/run-history/hireology.svg)](https://shbernal.github.io/atsfill/run-history/)
45
+ [![paycor run history](https://shbernal.github.io/atsfill/run-history/paycor.svg)](https://shbernal.github.io/atsfill/run-history/)
46
+ [![zohorecruit run history](https://shbernal.github.io/atsfill/run-history/zohorecruit.svg)](https://shbernal.github.io/atsfill/run-history/)
47
+ [![phenom run history](https://shbernal.github.io/atsfill/run-history/phenom.svg)](https://shbernal.github.io/atsfill/run-history/)
48
+ [![breezy run history](https://shbernal.github.io/atsfill/run-history/breezy.svg)](https://shbernal.github.io/atsfill/run-history/)
49
+ [![recruitee run history](https://shbernal.github.io/atsfill/run-history/recruitee.svg)](https://shbernal.github.io/atsfill/run-history/)
50
+ [![rippling run history](https://shbernal.github.io/atsfill/run-history/rippling.svg)](https://shbernal.github.io/atsfill/run-history/)
51
+ [![personio run history](https://shbernal.github.io/atsfill/run-history/personio.svg)](https://shbernal.github.io/atsfill/run-history/)
52
+ [![eightfold run history](https://shbernal.github.io/atsfill/run-history/eightfold.svg)](https://shbernal.github.io/atsfill/run-history/)
53
+ [![pinpoint run history](https://shbernal.github.io/atsfill/run-history/pinpoint.svg)](https://shbernal.github.io/atsfill/run-history/)
54
+ [![hiringthing run history](https://shbernal.github.io/atsfill/run-history/hiringthing.svg)](https://shbernal.github.io/atsfill/run-history/)
55
+ [![join run history](https://shbernal.github.io/atsfill/run-history/join.svg)](https://shbernal.github.io/atsfill/run-history/)
56
+ [![wttj run history](https://shbernal.github.io/atsfill/run-history/wttj.svg)](https://shbernal.github.io/atsfill/run-history/)
57
+ [![workday run history](https://shbernal.github.io/atsfill/run-history/workday.svg)](https://shbernal.github.io/atsfill/run-history/)
58
+ [![successfactors run history](https://shbernal.github.io/atsfill/run-history/successfactors.svg)](https://shbernal.github.io/atsfill/run-history/)
59
+ [![isolvedhire run history](https://shbernal.github.io/atsfill/run-history/isolvedhire.svg)](https://shbernal.github.io/atsfill/run-history/)
60
+ [![gupy run history](https://shbernal.github.io/atsfill/run-history/gupy.svg)](https://shbernal.github.io/atsfill/run-history/)
61
+ [![ukg run history](https://shbernal.github.io/atsfill/run-history/ukg.svg)](https://shbernal.github.io/atsfill/run-history/)
62
+ <!-- /run-history -->
63
+
64
+ Each line is a hiring system atsfill has an adapter for, and its [run history](https://shbernal.github.io/atsfill/run-history/): the last 30 days of runs, green when a form filled or an application went through, red when it failed.
36
65
  [The systems](docs/adapters/README.md) lists which ones need an account, to read the form or only to send it.
37
66
  Any other system returns `unsupported`, so the consumer can fall back to driving a browser itself.
38
67
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atsfill"
3
- version = "0.0.5.dev146"
3
+ version = "0.0.5.dev147"
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.5.dev146"
3
+ version = "0.0.5.dev147"
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"
@@ -500,6 +500,7 @@ def status(*, data_dir: Path | None = None) -> StatusReport:
500
500
  users=users,
501
501
  adapters=[_adapter_status(a, users) for a in candidates],
502
502
  sessions=_sessions(data, users, candidates),
503
+ run_history=registry.RUN_HISTORY,
503
504
  )
504
505
 
505
506
 
@@ -183,21 +183,20 @@ def backlog(registry: dict[str, Source] | None = None) -> str:
183
183
  return "\n".join(text) + "\n"
184
184
 
185
185
 
186
- BADGES = ("<!-- badges -->", "<!-- /badges -->")
187
- COLORS = {"supported": "9ece6a", "in_scope": "e0af68", "out_of_scope": "565f89"}
186
+ RUN_HISTORY = "https://shbernal.github.io/atsfill/run-history/" # built by scripts/run_history.py
187
+ RUN_HISTORIES = ("<!-- run-history -->", "<!-- /run-history -->")
188
188
 
189
189
 
190
- def _badge(s: Source) -> str:
191
- message = " ".join(str(x) for x in (s.scope.value.replace("_", " "), s.scope.date) if x)
192
- color = COLORS[s.scope.value]
193
- escape = lambda t: t.replace("-", "--").replace("_", "__").replace(" ", "%20") # noqa: E731
194
- url = f"https://img.shields.io/badge/{escape(s.adapter or s.name)}-{escape(message)}-{color}"
195
- return f"![{s.adapter}: {message}]({url})"
190
+ def _run_history(s: Source) -> str:
191
+ """Its image links to the page: an SVG's own links don't survive GitHub's image proxy."""
192
+ return f"[![{s.adapter} run history]({RUN_HISTORY}{s.adapter}.svg)]({RUN_HISTORY})"
196
193
 
197
194
 
198
- def with_badges(readme: str, registry: dict[str, Source] | None = None) -> str:
199
- """The README with one badge per adapter between its badge markers."""
195
+ def with_run_histories(readme: str, registry: dict[str, Source] | None = None) -> str:
196
+ """The README with each adapter's run history between its markers."""
200
197
  registry = sources() if registry is None else registry
201
- start, end = readme.index(BADGES[0]) + len(BADGES[0]), readme.index(BADGES[1])
202
- badges = " ".join(_badge(s) for s in sorted(registry.values(), key=_backlog_key) if s.adapter)
203
- return f"{readme[:start]}\n{badges}\n{readme[end:]}"
198
+ start = readme.index(RUN_HISTORIES[0]) + len(RUN_HISTORIES[0])
199
+ end = readme.index(RUN_HISTORIES[1])
200
+ adapters = sorted((s for s in registry.values() if s.adapter), key=_backlog_key)
201
+ images = "\n".join(_run_history(s) for s in adapters)
202
+ return f"{readme[:start]}\n{images}\n{readme[end:]}"
@@ -144,3 +144,4 @@ class StatusReport:
144
144
  users: list[str]
145
145
  adapters: list[AdapterStatus]
146
146
  sessions: list[SessionReport] # every stored one, of every user
147
+ run_history: str # the docs page: whether each adapter works today, from its runs
File without changes