manen 0.3.0.dev3__tar.gz → 0.3.0.dev4__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 (57) hide show
  1. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/PKG-INFO +12 -10
  2. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/README.md +11 -9
  3. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/index.rst +6 -5
  4. manen-0.3.0.dev4/docs/source/manen/manen.page_object_model.config.rst +8 -0
  5. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.page_object_model.rst +1 -0
  6. manen-0.3.0.dev4/docs/source/user_guide/page_object_model.ipynb +598 -0
  7. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/__init__.py +1 -1
  8. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/page_object_model/__init__.py +9 -9
  9. manen-0.3.0.dev3/manen/page_object_model/dom.py → manen-0.3.0.dev4/manen/page_object_model/config.py +5 -14
  10. manen-0.3.0.dev4/manen/page_object_model/dom.py +14 -0
  11. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/page_object_model/element.py +3 -2
  12. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/page_object_model/webarea.py +1 -1
  13. manen-0.3.0.dev3/docs/source/user_guide/page_object_model.ipynb +0 -594
  14. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/.github/workflows/build-documentation.yml +0 -0
  15. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/.github/workflows/deploy-package.yml +0 -0
  16. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/.github/workflows/test-package.yml +0 -0
  17. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/.gitignore +0 -0
  18. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/.rstcheck.cfg +0 -0
  19. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/LICENSE +0 -0
  20. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/Makefile +0 -0
  21. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/assets/screenshot_pypi_home.png +0 -0
  22. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/assets/screenshot_pypi_search_results.png +0 -0
  23. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/make.bat +0 -0
  24. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/_static/favicon.png +0 -0
  25. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/_static/manen_logo.png +0 -0
  26. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/_static/manen_logo_xs.png +0 -0
  27. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/_static/theme_override.css +0 -0
  28. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/about.rst +0 -0
  29. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/changelog.rst +0 -0
  30. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/conf.py +0 -0
  31. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/contributing.rst +0 -0
  32. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/installation.rst +0 -0
  33. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.browser.rst +0 -0
  34. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.exceptions.rst +0 -0
  35. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.finder.rst +0 -0
  36. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.helpers.rst +0 -0
  37. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.page_object_model.dom.rst +0 -0
  38. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.page_object_model.element.rst +0 -0
  39. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.page_object_model.webarea.rst +0 -0
  40. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/manen/manen.rst +0 -0
  41. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/user_guide/browser.ipynb +0 -0
  42. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/user_guide/dom_exploration.ipynb +0 -0
  43. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/docs/source/user_guide.rst +0 -0
  44. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/browser.py +0 -0
  45. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/exceptions.py +0 -0
  46. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/finder.py +0 -0
  47. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/helpers.py +0 -0
  48. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/manen/typing.py +0 -0
  49. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/pyproject.toml +0 -0
  50. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/requirements-dev.lock +0 -0
  51. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/requirements.lock +0 -0
  52. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/tests/__init__.py +0 -0
  53. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/tests/assets/page.yaml +0 -0
  54. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/tests/assets/page_test_basic.jinja.html +0 -0
  55. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/tests/test_finder.py +0 -0
  56. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/tests/test_helpers.py +0 -0
  57. {manen-0.3.0.dev3 → manen-0.3.0.dev4}/tests/test_imports.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: manen
3
- Version: 0.3.0.dev3
3
+ Version: 0.3.0.dev4
4
4
  Summary: An implementation of the Page Object Model design pattern, and other utilities for web scraping and automation.
5
5
  Project-URL: Changes, https://kodaho.github.io/manen/changelog.html
6
6
  Project-URL: Documentation, https://kodaho.github.io/manen/
@@ -114,28 +114,30 @@ attributes. Note the whole page object model design pattern is implemented with
114
114
  like in `Pydantic` model).
115
115
 
116
116
  ```python
117
- from manen.page_object_model.webarea import Page, WebArea
118
117
  from manen.page_object_model import dom
118
+ from manen.page_object_model.config import CSS, XPath
119
+ from manen.page_object_model.webarea import Page, WebArea
120
+
119
121
 
120
122
  class HomePage(Page):
121
- query: Annotated[dom.Input, dom.CSS("input[name='q']")]
123
+ query: Annotated[dom.Input, CSS("input[name='q']")]
122
124
 
123
125
 
124
126
  class SearchResultPage(Page):
125
127
  class Result(WebArea):
126
- name: Annotated[str, dom.CSS("h3 span.package-snippet__name")]
127
- version: Annotated[str, dom.CSS("h3 span.package-snippet__version")]
128
- link: Annotated[dom.HRef, dom.CSS("a.package-snippet")]
129
- description: Annotated[str, dom.CSS("p.package-snippet__description")]
130
- release_date: Annotated[datetime, dom.CSS("span.package-snippet__created")]
128
+ name: Annotated[str, CSS("h3 span.package-snippet__name")]
129
+ version: Annotated[str, CSS("h3 span.package-snippet__version")]
130
+ link: Annotated[dom.HRef, CSS("a.package-snippet")]
131
+ description: Annotated[str, CSS("p.package-snippet__description")]
132
+ release_date: Annotated[datetime, CSS("span.package-snippet__created")]
131
133
 
132
134
  nb_results: Annotated[
133
135
  int,
134
- dom.XPath("//*[@id='content']//form/div[1]/div[1]/p/strong"),
136
+ XPath("//*[@id='content']//form/div[1]/div[1]/p/strong"),
135
137
  ]
136
138
  results: Annotated[
137
139
  list[Result],
138
- dom.CSS("ul[aria-label='Search results'] li"),
140
+ CSS("ul[aria-label='Search results'] li"),
139
141
  ]
140
142
  ```
141
143
 
@@ -89,28 +89,30 @@ attributes. Note the whole page object model design pattern is implemented with
89
89
  like in `Pydantic` model).
90
90
 
91
91
  ```python
92
- from manen.page_object_model.webarea import Page, WebArea
93
92
  from manen.page_object_model import dom
93
+ from manen.page_object_model.config import CSS, XPath
94
+ from manen.page_object_model.webarea import Page, WebArea
95
+
94
96
 
95
97
  class HomePage(Page):
96
- query: Annotated[dom.Input, dom.CSS("input[name='q']")]
98
+ query: Annotated[dom.Input, CSS("input[name='q']")]
97
99
 
98
100
 
99
101
  class SearchResultPage(Page):
100
102
  class Result(WebArea):
101
- name: Annotated[str, dom.CSS("h3 span.package-snippet__name")]
102
- version: Annotated[str, dom.CSS("h3 span.package-snippet__version")]
103
- link: Annotated[dom.HRef, dom.CSS("a.package-snippet")]
104
- description: Annotated[str, dom.CSS("p.package-snippet__description")]
105
- release_date: Annotated[datetime, dom.CSS("span.package-snippet__created")]
103
+ name: Annotated[str, CSS("h3 span.package-snippet__name")]
104
+ version: Annotated[str, CSS("h3 span.package-snippet__version")]
105
+ link: Annotated[dom.HRef, CSS("a.package-snippet")]
106
+ description: Annotated[str, CSS("p.package-snippet__description")]
107
+ release_date: Annotated[datetime, CSS("span.package-snippet__created")]
106
108
 
107
109
  nb_results: Annotated[
108
110
  int,
109
- dom.XPath("//*[@id='content']//form/div[1]/div[1]/p/strong"),
111
+ XPath("//*[@id='content']//form/div[1]/div[1]/p/strong"),
110
112
  ]
111
113
  results: Annotated[
112
114
  list[Result],
113
- dom.CSS("ul[aria-label='Search results'] li"),
115
+ CSS("ul[aria-label='Search results'] li"),
114
116
  ]
115
117
  ```
116
118
 
@@ -28,17 +28,18 @@ with and without Manen:
28
28
  from selenium.webdriver.chrome.webdriver import WebDriver
29
29
 
30
30
  from manen.page_object_model import dom
31
+ from manen.page_object_model.config import CSS, Default, Wait, XPath
31
32
  from manen.page_object_model.webarea import Page, WebArea
32
33
 
33
34
 
34
35
  class BlogPage(Page):
35
36
  class Article(WebArea):
36
- title: Annotated[str, dom.XPath("//h1")]
37
- n_likes: Annotated[int, dom.CSS("span.n_likes")]
38
- tags: Annotated[list[str], dom.CSS("span.tag"), dom.Default([])]
39
- updated_at: Annotated[datetime, dom.CSS("span.updated_at")]
37
+ title: Annotated[str, XPath("//h1")]
38
+ n_likes: Annotated[int, CSS("span.n_likes")]
39
+ tags: Annotated[list[str], CSS("span.tag"), Default([])]
40
+ updated_at: Annotated[datetime, CSS("span.updated_at")]
40
41
 
41
- articles: Annotated[list[Article], dom.CSS('div.article'), dom.Wait(3)]
42
+ articles: Annotated[list[Article], CSS('div.article'), Wait(3)]
42
43
 
43
44
 
44
45
  driver = WebDriver()
@@ -0,0 +1,8 @@
1
+ :py:mod:`~manen.page_object_model.config`
2
+ =========================================
3
+
4
+ .. automodule:: manen.page_object_model.config
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
8
+ :ignore-module-all:
@@ -14,6 +14,7 @@
14
14
  :maxdepth: 1
15
15
  :titlesonly:
16
16
 
17
+ manen.page_object_model.config
17
18
  manen.page_object_model.dom
18
19
  manen.page_object_model.element
19
20
  manen.page_object_model.webarea