parsagon 0.14.7__tar.gz → 0.14.9__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 (38) hide show
  1. {parsagon-0.14.7 → parsagon-0.14.9}/PKG-INFO +1 -1
  2. {parsagon-0.14.7 → parsagon-0.14.9}/pyproject.toml +1 -1
  3. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/executor.py +15 -3
  4. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon.egg-info/PKG-INFO +1 -1
  5. {parsagon-0.14.7 → parsagon-0.14.9}/README.md +0 -0
  6. {parsagon-0.14.7 → parsagon-0.14.9}/setup.cfg +0 -0
  7. {parsagon-0.14.7 → parsagon-0.14.9}/src/__init__.py +0 -0
  8. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/__init__.py +0 -0
  9. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/api.py +0 -0
  10. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/assistant.py +0 -0
  11. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/create.py +0 -0
  12. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/custom_function.py +0 -0
  13. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/edit.py +0 -0
  14. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/exceptions.py +0 -0
  15. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/gui/__init__.py +0 -0
  16. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/gui/controller.py +0 -0
  17. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/gui/menu.py +0 -0
  18. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/gui/window.py +0 -0
  19. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/gui_entry.py +0 -0
  20. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/highlights.js +0 -0
  21. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/main.py +0 -0
  22. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/print.py +0 -0
  23. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/runs.py +0 -0
  24. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/secrets.py +0 -0
  25. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/settings.py +0 -0
  26. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/tests/__init__.py +0 -0
  27. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/tests/api_mocks.py +0 -0
  28. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/tests/conftest.py +0 -0
  29. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/tests/test_executor.py +0 -0
  30. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/tests/test_invalid_args.py +0 -0
  31. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/tests/test_pipeline_operations.py +0 -0
  32. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/tests/test_print.py +0 -0
  33. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon/tests/test_secrets.py +0 -0
  34. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon.egg-info/SOURCES.txt +0 -0
  35. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon.egg-info/dependency_links.txt +0 -0
  36. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon.egg-info/entry_points.txt +0 -0
  37. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon.egg-info/requires.txt +0 -0
  38. {parsagon-0.14.7 → parsagon-0.14.9}/src/parsagon.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsagon
3
- Version: 0.14.7
3
+ Version: 0.14.9
4
4
  Summary: Allows you to create browser automations with natural language
5
5
  Author-email: Sandy Suh <sandy@parsagon.io>
6
6
  Project-URL: Homepage, https://parsagon.io
@@ -16,7 +16,7 @@ line-length = 120
16
16
 
17
17
  [project]
18
18
  name = "parsagon"
19
- version = "0.14.7"
19
+ version = "0.14.9"
20
20
  description = "Allows you to create browser automations with natural language"
21
21
  readme = "README.md"
22
22
  requires-python = ">=3.8"
@@ -212,24 +212,36 @@ class Executor:
212
212
  elem.getparent().remove(elem)
213
213
 
214
214
  # Remove invisible elements
215
+ id_to_elem = {}
216
+ for elem in root.iter():
217
+ elem_id = elem.get("data-psgn-id")
218
+ if elem_id:
219
+ id_to_elem[elem_id] = elem
215
220
  visible_elem_ids = set(
216
221
  driver.execute_script(
217
- "return Array.from(document.getElementsByTagName('*')).filter((elem) => { const style = getComputedStyle(elem); return style.opacity > 0.1 && style.display !== 'none' && style.visibility === 'visible' && elem.offsetWidth && elem.offsetHeight && elem.getClientRects().length }).map((elem) => elem.getAttribute('data-psgn-id'))"
222
+ "return Array.from(document.getElementsByTagName('*')).filter((elem) => { const style = getComputedStyle(elem); const rect = elem.getBoundingClientRect(); return style.opacity > 0.1 && style.display !== 'none' && style.visibility === 'visible' && elem.offsetWidth && elem.offsetHeight && elem.getClientRects().length && rect.right + window.scrollX >= 0 && rect.bottom + window.scrollY >= 0 }).map((elem) => elem.getAttribute('data-psgn-id'))"
218
223
  )
219
224
  )
220
225
  max_elem_id = self.max_elem_ids[self.driver.current_window_handle]
221
226
  with Progress() as progress:
222
227
  for elem_id in progress.track(range(max_elem_id), description="[green]Analyzing page"):
223
- is_visible = str(elem_id) in visible_elem_ids
228
+ elem_id = str(elem_id)
229
+ is_visible = elem_id in visible_elem_ids
224
230
  if not is_visible:
225
231
  try:
226
232
  lxml_elem = root.xpath(f'//*[@data-psgn-id="{elem_id}"]')[0]
233
+ contains_visible = False
234
+ for descendant in lxml_elem.iterdescendants():
235
+ if descendant.get("data-psgn-id") in visible_elem_ids:
236
+ contains_visible = True
237
+ break
238
+ if contains_visible:
239
+ continue
227
240
  parent = lxml_elem.getparent()
228
241
  if parent is not None:
229
242
  parent.remove(lxml_elem)
230
243
  except IndexError:
231
244
  continue
232
-
233
245
  return lxml.html.tostring(root).decode()
234
246
 
235
247
  def get_elem(self, description, elem_type):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsagon
3
- Version: 0.14.7
3
+ Version: 0.14.9
4
4
  Summary: Allows you to create browser automations with natural language
5
5
  Author-email: Sandy Suh <sandy@parsagon.io>
6
6
  Project-URL: Homepage, https://parsagon.io
File without changes
File without changes
File without changes
File without changes