atsfill 0.0.4.dev86__tar.gz → 0.0.4.dev87__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.
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/PKG-INFO +1 -1
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/pyproject.toml +1 -1
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/pyproject.toml.orig +1 -1
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/rippling.py +6 -2
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/browser.py +9 -3
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/LICENSE +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/README.md +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/__init__.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/__init__.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/ashby.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/bamboohr.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/breezy.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/dayforce.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/eightfold.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/greenhouse.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/hireology.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/hiringthing.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/jazzhr.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/lever.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/manatal.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/oracle.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/paycor.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/paylocity.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/personio.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/phenom.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/pinpoint.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/recruitee.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/smartrecruiters.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/teamtailor.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/workable.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/wttj.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/adapters/zohorecruit.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/cli.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/__init__.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/accounts.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/adapter.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/attempts.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/commands.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/matching.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/passwords.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/paths.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/registry.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/core/results.py +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/py.typed +0 -0
- {atsfill-0.0.4.dev86 → atsfill-0.0.4.dev87}/src/atsfill/registry.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atsfill
|
|
3
|
-
Version: 0.0.4.
|
|
3
|
+
Version: 0.0.4.dev87
|
|
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
|
|
@@ -218,8 +218,12 @@ class Rippling:
|
|
|
218
218
|
timeout=PARSE_TIMEOUT_MS,
|
|
219
219
|
):
|
|
220
220
|
_attach(page, "resume", answers["resume"])
|
|
221
|
-
|
|
222
|
-
|
|
221
|
+
# The page writes the parse and shows its notice a moment after the response; the
|
|
222
|
+
# notice then covers the fields below it while it shows.
|
|
223
|
+
notice = page.get_by_text(PARSED_NOTICE)
|
|
224
|
+
with suppress(Timeout):
|
|
225
|
+
notice.wait_for(timeout=NOTICE_TIMEOUT_MS)
|
|
226
|
+
notice.wait_for(state="hidden", timeout=NOTICE_TIMEOUT_MS)
|
|
223
227
|
for field_id, field in self._fields.items():
|
|
224
228
|
if field_id == "resume" or field_id not in answers:
|
|
225
229
|
continue
|
|
@@ -63,6 +63,8 @@ INCLUDE = re.compile(r"^!#include (\S+)$", re.M)
|
|
|
63
63
|
# A page holding a banner the lists hide: until they do, the blocker is still starting.
|
|
64
64
|
PROBE = ("https://blocker.invalid/", '<div id="cookie-banner">probe</div>')
|
|
65
65
|
BLOCKER_TIMEOUT_MS = 30_000 # its lists take seconds to compile on each launch, more under load
|
|
66
|
+
OVERLAY_GRACE_MS = 1_000 # how long a cover may stay on a click target before it counts
|
|
67
|
+
OVERLAY_POLL_MS = 100
|
|
66
68
|
|
|
67
69
|
|
|
68
70
|
class OutOfTime(Exception):
|
|
@@ -338,7 +340,11 @@ def overlay_on(target: Locator) -> str | None:
|
|
|
338
340
|
|
|
339
341
|
|
|
340
342
|
def click(target: Locator) -> None:
|
|
341
|
-
"""Clicks the target, raising `Overlaid` when an overlay
|
|
342
|
-
|
|
343
|
-
|
|
343
|
+
"""Clicks the target, raising `Overlaid` when an overlay stays on top of it for the grace
|
|
344
|
+
period: a toast or a spinner that goes within it is waited out."""
|
|
345
|
+
deadline = time.monotonic() + OVERLAY_GRACE_MS / 1000
|
|
346
|
+
while overlay := overlay_on(target):
|
|
347
|
+
if time.monotonic() >= deadline:
|
|
348
|
+
raise Overlaid(overlay)
|
|
349
|
+
target.page.wait_for_timeout(OVERLAY_POLL_MS)
|
|
344
350
|
target.click()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|