parsagon 0.9.8__tar.gz → 0.10.1__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 (26) hide show
  1. {parsagon-0.9.8 → parsagon-0.10.1}/PKG-INFO +16 -1
  2. {parsagon-0.9.8 → parsagon-0.10.1}/pyproject.toml +1 -1
  3. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/__init__.py +1 -1
  4. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/api.py +3 -3
  5. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/main.py +18 -5
  6. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon.egg-info/PKG-INFO +16 -1
  7. {parsagon-0.9.8 → parsagon-0.10.1}/README.md +0 -0
  8. {parsagon-0.9.8 → parsagon-0.10.1}/setup.cfg +0 -0
  9. {parsagon-0.9.8 → parsagon-0.10.1}/src/__init__.py +0 -0
  10. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/custom_function.py +0 -0
  11. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/exceptions.py +0 -0
  12. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/executor.py +0 -0
  13. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/highlights.js +0 -0
  14. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/settings.py +0 -0
  15. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/tests/__init__.py +0 -0
  16. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/tests/api_mocks.py +0 -0
  17. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/tests/cli_mocks.py +0 -0
  18. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/tests/conftest.py +0 -0
  19. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/tests/test_executor.py +0 -0
  20. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/tests/test_invalid_args.py +0 -0
  21. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon/tests/test_pipeline_operations.py +0 -0
  22. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon.egg-info/SOURCES.txt +0 -0
  23. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon.egg-info/dependency_links.txt +0 -0
  24. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon.egg-info/entry_points.txt +0 -0
  25. {parsagon-0.9.8 → parsagon-0.10.1}/src/parsagon.egg-info/requires.txt +0 -0
  26. {parsagon-0.9.8 → parsagon-0.10.1}/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.9.8
3
+ Version: 0.10.1
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
@@ -8,7 +8,22 @@ Classifier: Programming Language :: Python :: 3
8
8
  Classifier: Operating System :: OS Independent
9
9
  Requires-Python: >=3.8
10
10
  Description-Content-Type: text/markdown
11
+ Requires-Dist: selenium==4.9.1
12
+ Requires-Dist: lxml==4.9.2
13
+ Requires-Dist: httpx==0.24.1
14
+ Requires-Dist: halo==0.0.31
15
+ Requires-Dist: pandas==1.4.2
16
+ Requires-Dist: PyVirtualDisplay==3.0
17
+ Requires-Dist: selenium-wire==5.1.0
18
+ Requires-Dist: cssselect==1.1.0
19
+ Requires-Dist: undetected-chromedriver==3.5.2
20
+ Requires-Dist: webdriver-manager==4.0.0
21
+ Requires-Dist: jsonpath-ng==1.5.3
22
+ Requires-Dist: usaddress==0.5.10
23
+ Requires-Dist: simplejson==3.19.1
11
24
  Provides-Extra: dev
25
+ Requires-Dist: pytest==7.3.2; extra == "dev"
26
+ Requires-Dist: pytest-mock==3.11.1; extra == "dev"
12
27
 
13
28
  # parsagon
14
29
 
@@ -16,7 +16,7 @@ line-length = 120
16
16
 
17
17
  [project]
18
18
  name = "parsagon"
19
- version = "0.9.8"
19
+ version = "0.10.1"
20
20
  description = "Allows you to create browser automations with natural language"
21
21
  readme = "README.md"
22
22
  requires-python = ">=3.8"
@@ -1 +1 @@
1
- from parsagon.main import create, update, detail, run, delete, get_product
1
+ from parsagon.main import create, update, detail, run, delete, get_product, get_review_article, get_article_list
@@ -58,7 +58,7 @@ def get_program_sketches(description):
58
58
  """
59
59
  Gets a program sketches (full and abridged) from a description.
60
60
  :param description: Description in natural language that will be used to generate the scraping program.
61
- :return: A dict with keys "full" and "abridged" for the respective program ASTs.
61
+ :return: A dict with keys "full", "abridged", and "pseudocode" for the respective program ASTs and pseudocode.
62
62
  """
63
63
  return _api_call(httpx.post, "/transformers/get-program-sketch/", json={"description": description})
64
64
 
@@ -199,5 +199,5 @@ def get_run(run_id):
199
199
  )
200
200
 
201
201
 
202
- def poll_product(url):
203
- return _api_call(httpx.post, "/extract/product/", json={"url": url, "page_type": "PRODUCT_DETAIL"})
202
+ def poll_data(url, page_type):
203
+ return _api_call(httpx.post, "/extract/", json={"url": url, "page_type": page_type})
@@ -17,7 +17,7 @@ from parsagon.api import (
17
17
  get_pipelines,
18
18
  get_pipeline_code,
19
19
  get_run,
20
- poll_product,
20
+ poll_data,
21
21
  APIException,
22
22
  )
23
23
  from parsagon.exceptions import ParsagonException
@@ -190,10 +190,11 @@ def create(task=None, program_name=None, headless=False, infer=False, verbose=Fa
190
190
 
191
191
  logger.info("Analyzing task description...")
192
192
  program_sketches = get_program_sketches(task)
193
- logger.info("Created a program based on task description. Now demonstrating what the program does:\n")
194
193
 
195
194
  full_program = program_sketches["full"]
196
195
  abridged_program = program_sketches["abridged"]
196
+ pseudocode = program_sketches["pseudocode"]
197
+ logger.info(f"Created a program based on task description. Program does the following:\n\n{pseudocode}\n\nNow executing the program to identify web elements to be scraped:\n")
197
198
  logger.debug("Program:\n%s", abridged_program)
198
199
  abridged_program += "\n\noutput = func()\nprint(f'Program finished and returned a value of:\\n{output}\\n')\n" # Make the program runnable
199
200
 
@@ -354,13 +355,25 @@ def setup(verbose=False):
354
355
  logger.info("Setup complete.")
355
356
 
356
357
 
357
- def get_product(url, timeout=300):
358
+ def _get_data(url, page_type, timeout):
358
359
  start_time = time.time()
359
360
  with Halo(text="Extracting data...", spinner="dots"):
360
361
  while time.time() - start_time <= timeout:
361
- result = poll_product(url)
362
+ result = poll_data(url, page_type)
362
363
  if result["done"]:
363
364
  return result["result"]
364
- time.sleep(5)
365
+ time.sleep(15)
365
366
  logger.info("No data found")
366
367
  return None
368
+
369
+
370
+ def get_product(url, timeout=300):
371
+ return _get_data(url, "PRODUCT_DETAIL", timeout)
372
+
373
+
374
+ def get_review_article(url, timeout=300):
375
+ return _get_data(url, "REVIEW_ARTICLE_DETAIL", timeout)
376
+
377
+
378
+ def get_article_list(url, timeout=300):
379
+ return _get_data(url, "ARTICLE_LIST", timeout)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: parsagon
3
- Version: 0.9.8
3
+ Version: 0.10.1
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
@@ -8,7 +8,22 @@ Classifier: Programming Language :: Python :: 3
8
8
  Classifier: Operating System :: OS Independent
9
9
  Requires-Python: >=3.8
10
10
  Description-Content-Type: text/markdown
11
+ Requires-Dist: selenium==4.9.1
12
+ Requires-Dist: lxml==4.9.2
13
+ Requires-Dist: httpx==0.24.1
14
+ Requires-Dist: halo==0.0.31
15
+ Requires-Dist: pandas==1.4.2
16
+ Requires-Dist: PyVirtualDisplay==3.0
17
+ Requires-Dist: selenium-wire==5.1.0
18
+ Requires-Dist: cssselect==1.1.0
19
+ Requires-Dist: undetected-chromedriver==3.5.2
20
+ Requires-Dist: webdriver-manager==4.0.0
21
+ Requires-Dist: jsonpath-ng==1.5.3
22
+ Requires-Dist: usaddress==0.5.10
23
+ Requires-Dist: simplejson==3.19.1
11
24
  Provides-Extra: dev
25
+ Requires-Dist: pytest==7.3.2; extra == "dev"
26
+ Requires-Dist: pytest-mock==3.11.1; extra == "dev"
12
27
 
13
28
  # parsagon
14
29
 
File without changes
File without changes
File without changes