atsfill 0.0.8.dev229__tar.gz → 0.0.8.dev231__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.dev229 → atsfill-0.0.8.dev231}/PKG-INFO +4 -4
  2. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/pyproject.toml +9 -9
  3. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/pyproject.toml.orig +9 -9
  4. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/commands.py +2 -2
  5. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/LICENSE +0 -0
  6. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/README.md +0 -0
  7. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/__init__.py +0 -0
  8. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/__init__.py +0 -0
  9. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/adp.py +0 -0
  10. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/adpmyjobs.py +0 -0
  11. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/ashby.py +0 -0
  12. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/bamboohr.py +0 -0
  13. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/breezy.py +0 -0
  14. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/dayforce.py +0 -0
  15. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/eightfold.py +0 -0
  16. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/greenhouse.py +0 -0
  17. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/gupy.py +0 -0
  18. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/hireology.py +0 -0
  19. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/hiringthing.py +0 -0
  20. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/hrmdirect.py +0 -0
  21. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/isolvedhire.py +0 -0
  22. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/jazzhr.py +0 -0
  23. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/jobaffinity.py +0 -0
  24. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/jobstreet.py +0 -0
  25. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/join.py +0 -0
  26. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/lever.py +0 -0
  27. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/manatal.py +0 -0
  28. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/oracle.py +0 -0
  29. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/paycor.py +0 -0
  30. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/paylocity.py +0 -0
  31. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/personio.py +0 -0
  32. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/phenom.py +0 -0
  33. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/pinpoint.py +0 -0
  34. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/recruitee.py +0 -0
  35. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/recruiterflow.py +0 -0
  36. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/rippling.py +0 -0
  37. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/smartrecruiters.py +0 -0
  38. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/successfactors.js +0 -0
  39. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/successfactors.py +0 -0
  40. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/taleo.py +0 -0
  41. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/teamtailor.py +0 -0
  42. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/ukg.py +0 -0
  43. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/welcomekit.py +0 -0
  44. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/wellfound.py +0 -0
  45. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/werecruit.py +0 -0
  46. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/workable.py +0 -0
  47. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/workatastartup.py +0 -0
  48. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/workday.py +0 -0
  49. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/wttj.py +0 -0
  50. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/adapters/zohorecruit.py +0 -0
  51. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/cli.py +0 -0
  52. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/__init__.py +0 -0
  53. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/accounts.py +0 -0
  54. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/adapter.py +0 -0
  55. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/attempts.py +0 -0
  56. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/browser.py +0 -0
  57. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/conditions.py +0 -0
  58. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/countries.py +0 -0
  59. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/html.py +0 -0
  60. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/matching.py +0 -0
  61. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/otp.py +0 -0
  62. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/passwords.py +0 -0
  63. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/paths.py +0 -0
  64. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/registry.py +0 -0
  65. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/results.py +0 -0
  66. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/snapshot.py +0 -0
  67. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/core/telemetry.py +0 -0
  68. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/src/atsfill/py.typed +0 -0
  69. {atsfill-0.0.8.dev229 → atsfill-0.0.8.dev231}/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.dev229
3
+ Version: 0.0.8.dev231
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
@@ -16,11 +16,11 @@ Classifier: Programming Language :: Python :: 3
16
16
  Classifier: Programming Language :: Python :: 3.14
17
17
  Classifier: Topic :: Office/Business
18
18
  Classifier: Typing :: Typed
19
- Requires-Dist: camoufox==0.5.9b6
20
- Requires-Dist: filelock==4.1.1
19
+ Requires-Dist: camoufox==0.5.9
20
+ Requires-Dist: filelock==4.2.10
21
21
  Requires-Dist: keyring==25.7.0
22
22
  Requires-Dist: packaging==26.3
23
- Requires-Dist: posthog==7.78.0
23
+ Requires-Dist: posthog==7.87.1
24
24
  Requires-Python: >=3.14
25
25
  Project-URL: Homepage, https://github.com/shbernal/atsfill
26
26
  Project-URL: Repository, https://github.com/shbernal/atsfill
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atsfill"
3
- version = "0.0.8.dev229"
3
+ version = "0.0.8.dev231"
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"
@@ -28,11 +28,11 @@ classifiers = [
28
28
  "Typing :: Typed",
29
29
  ]
30
30
  dependencies = [
31
- "camoufox==0.5.9b6",
32
- "filelock==4.1.1",
31
+ "camoufox==0.5.9",
32
+ "filelock==4.2.10",
33
33
  "keyring==25.7.0",
34
34
  "packaging==26.3",
35
- "posthog==7.78.0",
35
+ "posthog==7.87.1",
36
36
  ]
37
37
 
38
38
  [[project.authors]]
@@ -51,13 +51,13 @@ requires = ["uv_build>=0.13.0,<0.14.0"]
51
51
  build-backend = "uv_build"
52
52
 
53
53
  [dependency-groups]
54
- docs = ["zensical==0.0.73"]
55
- commit-check = ["commit-check==2.19.0"]
54
+ docs = ["zensical==0.1.1"]
55
+ commit-check = ["commit-check==2.20.5"]
56
56
  dev = [
57
- "pytest>=9.1.1",
57
+ "pytest>=9.2.0",
58
58
  "pytest-xdist>=3.8.0",
59
- "ruff>=0.17.1",
60
- "ty==0.0.89",
59
+ "ruff>=0.17.4",
60
+ "ty==0.0.101",
61
61
  ]
62
62
 
63
63
  [tool.ruff]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atsfill"
3
- version = "0.0.8.dev229"
3
+ version = "0.0.8.dev231"
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"
@@ -21,11 +21,11 @@ classifiers = [
21
21
  "Typing :: Typed",
22
22
  ]
23
23
  dependencies = [
24
- "camoufox==0.5.9b6",
25
- "filelock==4.1.1",
24
+ "camoufox==0.5.9",
25
+ "filelock==4.2.10",
26
26
  "keyring==25.7.0",
27
27
  "packaging==26.3",
28
- "posthog==7.78.0",
28
+ "posthog==7.87.1",
29
29
  ]
30
30
 
31
31
  [project.urls]
@@ -42,16 +42,16 @@ build-backend = "uv_build"
42
42
 
43
43
  [dependency-groups]
44
44
  docs = [
45
- "zensical==0.0.73",
45
+ "zensical==0.1.1",
46
46
  ]
47
47
  commit-check = [
48
- "commit-check==2.19.0",
48
+ "commit-check==2.20.5",
49
49
  ]
50
50
  dev = [
51
- "pytest>=9.1.1",
51
+ "pytest>=9.2.0",
52
52
  "pytest-xdist>=3.8.0",
53
- "ruff>=0.17.1",
54
- "ty==0.0.89",
53
+ "ruff>=0.17.4",
54
+ "ty==0.0.101",
55
55
  ]
56
56
 
57
57
  [tool.ruff]
@@ -805,7 +805,7 @@ def login(
805
805
  `email` is remembered for the account; `password` is used for this sign-in only. `create`
806
806
  creates the account with a password atsfill generates and stores first (a side effect),
807
807
  giving the sign-up the user's `details`; with a password already stored, the account may
808
- exist, so it signs in with that password and keeps the account's email instead, the
808
+ exist, so it signs in with that password and keeps the account's email if it has one, the
809
809
  `details` finishing a sign-up the account was left in. An account without a password signs
810
810
  in through the user's OTP command in place of a password source, and is created the same
811
811
  way."""
@@ -827,7 +827,7 @@ def login(
827
827
  report.status, report.reason = Status.BLOCKED, f"password_source: {e}"
828
828
  return report
829
829
  kept = stored is not None
830
- if email and not kept:
830
+ if email and not (kept and accounts.email(mine, adapter, scope)):
831
831
  accounts.remember(mine, adapter, scope, email)
832
832
  if create and not kept:
833
833
  assert email
File without changes
File without changes