gOdoo-cli 0.1.4__tar.gz → 0.1.5__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 (31) hide show
  1. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/PKG-INFO +1 -2
  2. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/README.md +0 -1
  3. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/pyproject.toml +1 -1
  4. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/setup.py +2 -2
  5. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/__init__.py +1 -1
  6. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/test.py +7 -2
  7. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/helpers/odoo_files.py +51 -29
  8. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/LICENSE +0 -0
  9. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/__main__.py +0 -0
  10. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/cli.py +0 -0
  11. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/__init__.py +0 -0
  12. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/bootstrap.py +0 -0
  13. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/launch.py +0 -0
  14. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/makedev.py +0 -0
  15. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/rpc/__init__.py +0 -0
  16. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/rpc/cli.py +0 -0
  17. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/rpc/cli_callbacks.py +0 -0
  18. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/rpc/importer.py +0 -0
  19. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/rpc/modules.py +0 -0
  20. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/rpc/translations.py +0 -0
  21. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/shell.py +0 -0
  22. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/commands/source_get.py +0 -0
  23. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/git/__init__.py +0 -0
  24. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/git/git_odoo.py +0 -0
  25. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/git/git_odoo_addons.py +0 -0
  26. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/git/git_repo.py +0 -0
  27. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/git/git_url.py +0 -0
  28. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/git/zip_download.py +0 -0
  29. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/helpers/__init__.py +0 -0
  30. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/helpers/cli.py +0 -0
  31. {godoo_cli-0.1.4 → godoo_cli-0.1.5}/src/godoo_cli/helpers/odoo_manifest.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: godoo-cli
3
- Version: 0.1.4
3
+ Version: 0.1.5
4
4
  Summary: Wrapper around Odoo-Bin with some convinience RPC functions.
5
5
  Home-page: https://github.com/OpenJKSoftware/gOdoo
6
6
  License: LGPL-3
@@ -127,7 +127,6 @@ docker-compose up
127
127
  - You can enable godoo tab-completion by `godoo --install-completion`
128
128
  - `make` -> Loads Odoo + Workspace Addons
129
129
  - `make bare` -> Loads Odoo with ony `web` installed.
130
- - `make enterprise` -> godoo launch with `-i web_enterprise` parameter
131
130
  - `make kill` -> Search for `odoo-bin` processes and kill them
132
131
  - `make reset` -> Drops DB, deletes config file and datafolder
133
132
  - The full init script is available via "`godoo`". (See --help for Options)
@@ -90,7 +90,6 @@ docker-compose up
90
90
  - You can enable godoo tab-completion by `godoo --install-completion`
91
91
  - `make` -> Loads Odoo + Workspace Addons
92
92
  - `make bare` -> Loads Odoo with ony `web` installed.
93
- - `make enterprise` -> godoo launch with `-i web_enterprise` parameter
94
93
  - `make kill` -> Search for `odoo-bin` processes and kill them
95
94
  - `make reset` -> Drops DB, deletes config file and datafolder
96
95
  - The full init script is available via "`godoo`". (See --help for Options)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "gOdoo-cli"
3
- version = "0.1.4"
3
+ version = "0.1.5"
4
4
  description = "Wrapper around Odoo-Bin with some convinience RPC functions."
5
5
  authors = ["Joshua Kreuder <Joshua_Kreuder@outlook.com>"]
6
6
  license = "LGPL-3"
@@ -40,9 +40,9 @@ entry_points = \
40
40
 
41
41
  setup_kwargs = {
42
42
  'name': 'godoo-cli',
43
- 'version': '0.1.4',
43
+ 'version': '0.1.5',
44
44
  'description': 'Wrapper around Odoo-Bin with some convinience RPC functions.',
45
- 'long_description': '# gOdoo Dev Environment\n\n![OdooLogo](https://raw.githubusercontent.com/OpenJKSoftware/gOdoo/main/assets/odoo_logo.png)\n![ComposeLogo](https://raw.githubusercontent.com/docker/compose/v2/logo.png)\n\n[<img src="https://raw.githubusercontent.com/OpenJKSoftware/gOdoo/main/assets/godoo-main-cli.png" width="1000"/>](image.png)\n\n**gOdoo** is short for **go Odoo**. \\\nIt is a [Vscode Devcontainer](https://code.visualstudio.com/docs/remote/containers) Environment for [Odoo](https://odoo.com/)\nwith Python CLI `godoo` convenience wrapper around `odoo-bin`.\n\nThis repository is the base source for the Python package [godoo-cli](https://pypi.org/project/godoo-cli/) and serves as\nan all batteries included development environment.\n\nMade Possible by: [WEMPE Elektronic GmbH](https://wetech.de)\n\n# gOdoo-cli\n\nPython package that provides `godoo` command line interface around `odoo-bin`.\n\nIt\'s build with [Typer](https://github.com/tiangolo/typer) to provide some convenience Wrappers for Odoo development and\nDeployment.\n\nMost flags can be configured by Env variables. \\\nUse `godoo --help` to find out more. HINT: Install tab-completion with `godoo --install-completion`\n\n# Docker\n\nThis workspace also contains Docker and Docker-Compose files. \\\n\nThey are used to provide either easy Odoo instances where the source is pulled according to\n[ODOO_MANIFEST.yml](./ODOO_MANIFEST.yml), or as a all batteries included devcontainer for VScode.\n\n## Requirements\n\n- [Docker Compose](https://github.com/docker/compose)\n- [Traefik](https://doc.traefik.io/traefik/) container running with docker provider and "traefik" named docker network.\n Example: [Traefik Devproxy](https://github.com/joshkreud/traefik_devproxy)\n- SSH Agent running. (check `echo $SSH_AUTH_SOCK`)\\\n This gets passed trough in the Buildprocess to clone Thirdparty repos.\n\n## Just wanna have a quick and easy Odoo Instance?\n\n```bash\ngit clone https://github.com/OpenJKSoftware/gOdoo\ncd godoo\n. scripts/container_requirements.sh # Check Requirements\ndocker-compose build\ndocker-compose up\n# wait......\n# wait a bit mode ...\n# just a little bit longer ..\n# There we go.\n# Odoo should be reachable on \'https://godoo.docker.localhost\' assuming you didn\'t change .env TRAEFIK_HOST_RULE or COMPOSE_PROJECT_NAME\n```\n\n# Devcontainer\n\n## Features\n\n- All batteries included [Devcontainer](https://code.visualstudio.com/docs/remote/containers) with postgres service\n Container and local DNS resolvig managed by [Traefik](https://doc.traefik.io/traefik/).\n- Easy fully working Odoo instance by `docker-compose up` with https access.\n- `godoo` CLI wrapper around Odoo. (Most flags can be configured by Environment Variables and are already preconfigured\n in the Containers. See [.env.sample](./.env.sample))\n- `odoo-bin` is added to PATH and can thus be invoked from every folder.\n- Odoo will run in Proxy_Mode behind a Traefik reverse proxy for easy access on\n `https://$COMPOSE_PROJECT_NAME.docker.localhost`\n- [Odoo Pylint plugin](https://github.com/OCA/pylint-odoo) preconfigured in vscode\n- Preinstalled vscode Extensions Highlights:\n - [SQL Tools](https://marketplace.visualstudio.com/items?itemName=mtxr.sqltools) with preconfigured connection for\n easy Database access in the Sidebar.\n - [Docker Extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) controls\n container host.\n - [Odoo Snippets](https://marketplace.visualstudio.com/items?itemName=mstuttgart.odoo-snippets)\n - [Odoo Developments](https://marketplace.visualstudio.com/items?itemName=scapigliato.vsc-odoo-development) can Grab\n Odoo Model information from a running Server\n - [Todo Tree](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree)\n\n## Usage\n\n1. For Docker on windows: Clone the repo into the WSL2 Filesystem for better IO performance\n2. Have [Traefik](https://github.com/traefik/traefik) Running on `docker.localhost`\n [Example](https://github.com/joshkreud/traefik_devproxy) \\\n There must be a Docker network called `traefik` that can reach traefik.\n3. Open Devcontianer:\n - If you have the Devcontainer CLI: `devcontainer open .`\n - If not open the workspace in Local Vscode. In the Command pallete search for `Reopen in container`\n4. From **within the container** start Odoo using one of the following commands:\n - You can enable godoo tab-completion by `godoo --install-completion`\n - `make` -> Loads Odoo + Workspace Addons\n - `make bare` -> Loads Odoo with ony `web` installed.\n - `make enterprise` -> godoo launch with `-i web_enterprise` parameter\n - `make kill` -> Search for `odoo-bin` processes and kill them\n - `make reset` -> Drops DB, deletes config file and datafolder\n - The full init script is available via "`godoo`". (See --help for Options)\n5. Open Odoo `https://$COMPOSE_PROJECT_NAME.docker.localhost`\\\n For example `COMPOSE_PROJECT_NAME=godoo` --> [https://godoo.docker.localhost](https://godoo.docker.localhost)\n6. Login with `admin:admin`\n7. Profit!\n\n### Access to Odoo and Thirdparty addon Source\n\nYou can access the Odoo source by opening the VsCode workspace [full.code-workspace](full.code-workspace) from within\nthe Container. This will open a [Multi-Root Workspace](https://code.visualstudio.com/docs/editor/multi-root-workspaces).\nReally waiting for https://github.com/microsoft/vscode-remote-release/issues/3665 here.\n\n## Reset Devcontainer Data\n\nWhen you screwed up so bad its time to just start Over godoo has you covered:\n\n### Automatic Reset\n\nThere are 3 Options to reset the Dev Env.\n\n1. From **Outside** the Container run `make reset` in the project root to delete docker volumes and restart the\n container. (Vscode will prompt to reconnect if still open)\n2. From **Outside** the Container run `make reset-hard` in the project root to force rebuild the main Odoo container and\n then do the same as `make reset`\n3. From **Inside** the Container run `make reset` to drop the DB and delete varlib and the bootstrap flag, which is way\n quicker than the other options.\n\n### Manual Reset\n\n1. Close vscode\n2. Remove `app` and `db` container from docker.\n3. Remove volumes: `db, odoo_thirdparty, odoo_web, vscode_extensions`\n4. Restart Devcontainer\n\n## Python Debugging\n\n### VsCode Debugging\n\nDebugging doesn\'t reliably work with\n[Odoo Multiprocess](https://www.odoo.com/documentation/14.0/developer/misc/other/cmdline.html#multiprocessing) mode\nenabled. \\\nThe container ships with a Vscode Debug profile, that sets `--workers 0` to allow for Debugging Breakpoints. See [.vscode/launch.json](./.vscode/launch.json)\n\n### Interactive Shell\n\nUse `godoo shell` to enter an interactive shell on the Database.\n\n# Odoo Modules\n\n## Third Party Modules (manifest.yml)\n\nThe `godoo` bootstrap function, will download some modules using git. \\\nWhich Repos to download is specified in `ODOO_MANIFEST.yml` ([Default](./ODOO_MANIFEST.yml)) \\\nNot all of the cloned addons are automatically installed. \\\nInstall them via the Apps Page in Odoo using `godoo rpc modules install` or using `odoo-bin`.\\\nModules downloaded on the Odoo Marketplace can be dropped as a `.zip` archive in [./thirdparty](./thirdparty)\n',
45
+ 'long_description': '# gOdoo Dev Environment\n\n![OdooLogo](https://raw.githubusercontent.com/OpenJKSoftware/gOdoo/main/assets/odoo_logo.png)\n![ComposeLogo](https://raw.githubusercontent.com/docker/compose/v2/logo.png)\n\n[<img src="https://raw.githubusercontent.com/OpenJKSoftware/gOdoo/main/assets/godoo-main-cli.png" width="1000"/>](image.png)\n\n**gOdoo** is short for **go Odoo**. \\\nIt is a [Vscode Devcontainer](https://code.visualstudio.com/docs/remote/containers) Environment for [Odoo](https://odoo.com/)\nwith Python CLI `godoo` convenience wrapper around `odoo-bin`.\n\nThis repository is the base source for the Python package [godoo-cli](https://pypi.org/project/godoo-cli/) and serves as\nan all batteries included development environment.\n\nMade Possible by: [WEMPE Elektronic GmbH](https://wetech.de)\n\n# gOdoo-cli\n\nPython package that provides `godoo` command line interface around `odoo-bin`.\n\nIt\'s build with [Typer](https://github.com/tiangolo/typer) to provide some convenience Wrappers for Odoo development and\nDeployment.\n\nMost flags can be configured by Env variables. \\\nUse `godoo --help` to find out more. HINT: Install tab-completion with `godoo --install-completion`\n\n# Docker\n\nThis workspace also contains Docker and Docker-Compose files. \\\n\nThey are used to provide either easy Odoo instances where the source is pulled according to\n[ODOO_MANIFEST.yml](./ODOO_MANIFEST.yml), or as a all batteries included devcontainer for VScode.\n\n## Requirements\n\n- [Docker Compose](https://github.com/docker/compose)\n- [Traefik](https://doc.traefik.io/traefik/) container running with docker provider and "traefik" named docker network.\n Example: [Traefik Devproxy](https://github.com/joshkreud/traefik_devproxy)\n- SSH Agent running. (check `echo $SSH_AUTH_SOCK`)\\\n This gets passed trough in the Buildprocess to clone Thirdparty repos.\n\n## Just wanna have a quick and easy Odoo Instance?\n\n```bash\ngit clone https://github.com/OpenJKSoftware/gOdoo\ncd godoo\n. scripts/container_requirements.sh # Check Requirements\ndocker-compose build\ndocker-compose up\n# wait......\n# wait a bit mode ...\n# just a little bit longer ..\n# There we go.\n# Odoo should be reachable on \'https://godoo.docker.localhost\' assuming you didn\'t change .env TRAEFIK_HOST_RULE or COMPOSE_PROJECT_NAME\n```\n\n# Devcontainer\n\n## Features\n\n- All batteries included [Devcontainer](https://code.visualstudio.com/docs/remote/containers) with postgres service\n Container and local DNS resolvig managed by [Traefik](https://doc.traefik.io/traefik/).\n- Easy fully working Odoo instance by `docker-compose up` with https access.\n- `godoo` CLI wrapper around Odoo. (Most flags can be configured by Environment Variables and are already preconfigured\n in the Containers. See [.env.sample](./.env.sample))\n- `odoo-bin` is added to PATH and can thus be invoked from every folder.\n- Odoo will run in Proxy_Mode behind a Traefik reverse proxy for easy access on\n `https://$COMPOSE_PROJECT_NAME.docker.localhost`\n- [Odoo Pylint plugin](https://github.com/OCA/pylint-odoo) preconfigured in vscode\n- Preinstalled vscode Extensions Highlights:\n - [SQL Tools](https://marketplace.visualstudio.com/items?itemName=mtxr.sqltools) with preconfigured connection for\n easy Database access in the Sidebar.\n - [Docker Extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) controls\n container host.\n - [Odoo Snippets](https://marketplace.visualstudio.com/items?itemName=mstuttgart.odoo-snippets)\n - [Odoo Developments](https://marketplace.visualstudio.com/items?itemName=scapigliato.vsc-odoo-development) can Grab\n Odoo Model information from a running Server\n - [Todo Tree](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree)\n\n## Usage\n\n1. For Docker on windows: Clone the repo into the WSL2 Filesystem for better IO performance\n2. Have [Traefik](https://github.com/traefik/traefik) Running on `docker.localhost`\n [Example](https://github.com/joshkreud/traefik_devproxy) \\\n There must be a Docker network called `traefik` that can reach traefik.\n3. Open Devcontianer:\n - If you have the Devcontainer CLI: `devcontainer open .`\n - If not open the workspace in Local Vscode. In the Command pallete search for `Reopen in container`\n4. From **within the container** start Odoo using one of the following commands:\n - You can enable godoo tab-completion by `godoo --install-completion`\n - `make` -> Loads Odoo + Workspace Addons\n - `make bare` -> Loads Odoo with ony `web` installed.\n - `make kill` -> Search for `odoo-bin` processes and kill them\n - `make reset` -> Drops DB, deletes config file and datafolder\n - The full init script is available via "`godoo`". (See --help for Options)\n5. Open Odoo `https://$COMPOSE_PROJECT_NAME.docker.localhost`\\\n For example `COMPOSE_PROJECT_NAME=godoo` --> [https://godoo.docker.localhost](https://godoo.docker.localhost)\n6. Login with `admin:admin`\n7. Profit!\n\n### Access to Odoo and Thirdparty addon Source\n\nYou can access the Odoo source by opening the VsCode workspace [full.code-workspace](full.code-workspace) from within\nthe Container. This will open a [Multi-Root Workspace](https://code.visualstudio.com/docs/editor/multi-root-workspaces).\nReally waiting for https://github.com/microsoft/vscode-remote-release/issues/3665 here.\n\n## Reset Devcontainer Data\n\nWhen you screwed up so bad its time to just start Over godoo has you covered:\n\n### Automatic Reset\n\nThere are 3 Options to reset the Dev Env.\n\n1. From **Outside** the Container run `make reset` in the project root to delete docker volumes and restart the\n container. (Vscode will prompt to reconnect if still open)\n2. From **Outside** the Container run `make reset-hard` in the project root to force rebuild the main Odoo container and\n then do the same as `make reset`\n3. From **Inside** the Container run `make reset` to drop the DB and delete varlib and the bootstrap flag, which is way\n quicker than the other options.\n\n### Manual Reset\n\n1. Close vscode\n2. Remove `app` and `db` container from docker.\n3. Remove volumes: `db, odoo_thirdparty, odoo_web, vscode_extensions`\n4. Restart Devcontainer\n\n## Python Debugging\n\n### VsCode Debugging\n\nDebugging doesn\'t reliably work with\n[Odoo Multiprocess](https://www.odoo.com/documentation/14.0/developer/misc/other/cmdline.html#multiprocessing) mode\nenabled. \\\nThe container ships with a Vscode Debug profile, that sets `--workers 0` to allow for Debugging Breakpoints. See [.vscode/launch.json](./.vscode/launch.json)\n\n### Interactive Shell\n\nUse `godoo shell` to enter an interactive shell on the Database.\n\n# Odoo Modules\n\n## Third Party Modules (manifest.yml)\n\nThe `godoo` bootstrap function, will download some modules using git. \\\nWhich Repos to download is specified in `ODOO_MANIFEST.yml` ([Default](./ODOO_MANIFEST.yml)) \\\nNot all of the cloned addons are automatically installed. \\\nInstall them via the Apps Page in Odoo using `godoo rpc modules install` or using `odoo-bin`.\\\nModules downloaded on the Odoo Marketplace can be dropped as a `.zip` archive in [./thirdparty](./thirdparty)\n',
46
46
  'author': 'Joshua Kreuder',
47
47
  'author_email': 'Joshua_Kreuder@outlook.com',
48
48
  'maintainer': 'None',
@@ -1,2 +1,2 @@
1
- __version__ = "0.1.4"
1
+ __version__ = "0.1.5"
2
2
  from .cli import launch_cli
@@ -6,7 +6,7 @@ from typing import List
6
6
  import typer
7
7
 
8
8
  from ..helpers.cli import typer_retuner
9
- from ..helpers.odoo_files import get_changed_modules, get_depends_of_modules, get_odoo_module_paths
9
+ from ..helpers.odoo_files import get_changed_modules, get_depends_of_module, get_odoo_module_paths
10
10
  from .launch import launch_odoo as launch_odoo
11
11
 
12
12
  LOGGER = logging.getLogger(__name__)
@@ -24,7 +24,12 @@ def _test_modules_special_cases(in_modules: List[str], workspace_addon_path: Pat
24
24
  changed_modules = get_changed_modules(addon_path=workspace_addon_path, diff_branch=compare_branch)
25
25
  if not changed_modules:
26
26
  return []
27
- out_modules = get_depends_of_modules(workspace_addon_path, changed_modules)
27
+ change_modules_depends = []
28
+ for module in changed_modules:
29
+ change_modules_depends += get_depends_of_module(
30
+ out_modules, module, already_done_modules=change_modules_depends
31
+ )
32
+ out_modules = changed_modules + change_modules_depends
28
33
  if out_modules:
29
34
  out_modules_with_tests = [p for p in out_modules if any(p.rglob("tests/__init__.py"))]
30
35
  return [p.stem for p in out_modules_with_tests]
@@ -71,42 +71,52 @@ def get_changed_modules(
71
71
  return changed_module_folders
72
72
 
73
73
 
74
- def get_depends_of_modules(addon_path: Path, in_module_paths: List[Path]) -> List[Path]:
75
- """Get Modules which do depend on given modules. Recursive.
74
+ def get_depends_of_module(
75
+ all_modules: List[Path],
76
+ module_to_check: Path,
77
+ already_done_modules: List[Path] = None,
78
+ ):
79
+ """Recursively Searches sub dependencies for Odoo modules.
80
+
76
81
 
77
82
  Parameters
78
83
  ----------
79
- addon_path : Path
80
- Folder where to look for Depends of in_module_paths
81
- in_module_paths : List[Path]
82
- List of Module Paths of which we want to get the downstream dependencies
84
+ all_modules : List[Path]
85
+ List of Path objects pointing to odoo modules
86
+ module_to_check : Path
87
+ path with odoo module
88
+ already_done_modules : List[Path], optional
89
+ Only used internally for recursion caching, by default None
83
90
 
84
91
  Returns
85
92
  -------
86
93
  List[Path]
87
- Union of in_module_paths and all their downstream depends.
94
+ Paths to dependency modules
88
95
  """
89
- all_modules = get_odoo_module_paths(addon_path)
90
- if not in_module_paths:
91
- return
92
- added = True
93
- LOGGER.debug("Searching Depends for: %s", ", ".join([str(p) for p in in_module_paths]))
94
- out_depends = in_module_paths.copy()
95
- while added:
96
- added = False
97
- for module in all_modules:
98
- manifest_path = module / "__manifest__.py"
99
- current_module = module.absolute()
100
- if current_module in out_depends:
96
+ manifest_path = module_to_check / "__manifest__.py"
97
+
98
+ if not already_done_modules:
99
+ already_done_modules = []
100
+ if module_to_check.absolute() in already_done_modules:
101
+ return []
102
+ already_done_modules.append(module_to_check.absolute())
103
+
104
+ LOGGER.debug("Loading Manifest: %s", manifest_path.absolute())
105
+ manifest = literal_eval(manifest_path.read_text())
106
+ module_depends = manifest.get("depends", [])
107
+ sub_depends = []
108
+ for dep in module_depends:
109
+ dep_path = [p for p in all_modules if p.stem == dep]
110
+ if dep_path:
111
+ dep_path = dep_path[0]
112
+ if dep_path.absolute() in already_done_modules:
101
113
  continue
102
- LOGGER.debug("Loading Manifest: %s", manifest_path.absolute())
103
- manifest = literal_eval(manifest_path.read_text())
104
- module_depends = manifest.get("depends", [])
105
- if any(item.stem in module_depends for item in out_depends):
106
- out_depends.append(module.absolute())
107
- added = True
108
- LOGGER.debug("Found Depends: %s", ", ".join([str(d) for d in out_depends if d not in in_module_paths]))
109
- return out_depends
114
+ sub_depends.append(dep_path.absolute())
115
+ sub_depends += get_depends_of_module(all_modules, dep_path, already_done_modules)
116
+ elif dep != "base":
117
+ LOGGER.warn("Could not find Dependency: '%s' in available modules", dep)
118
+
119
+ return list(set(sub_depends))
110
120
 
111
121
 
112
122
  def get_addon_paths(
@@ -155,17 +165,29 @@ def _get_python_requirements_of_modules(addon_paths: List[Path], filter_module_n
155
165
  filter_module_names : List[str], optional
156
166
  Modules to look for manifests, by default all available modules
157
167
  """
158
- LOGGER.debug("Checking python requirements of Modules: %s", ", ".join(filter_module_names))
159
168
  available_modules = get_odoo_module_paths(addon_paths)
160
169
  available_module_names = [p.stem for p in available_modules]
170
+
161
171
  if not filter_module_names:
162
172
  filter_module_names = available_module_names
163
173
  filter_module_names = [f for f in filter_module_names if f not in ["base", "web"]]
174
+ LOGGER.info("Checking python requirements of Modules: %s", ", ".join(sorted(filter_module_names)))
164
175
 
165
176
  if unavailable_modules := [m for m in filter_module_names if m not in available_module_names]:
166
177
  LOGGER.warning("Couldn't search Python reqs for unavailable Modules: %s", ", ".join(unavailable_modules))
167
178
 
168
179
  check_modules = [mp for mp in available_modules if mp.stem in filter_module_names]
180
+ check_modules_dependencies = []
181
+ for module in check_modules:
182
+ check_modules_dependencies += get_depends_of_module(
183
+ available_modules, module, already_done_modules=check_modules_dependencies
184
+ )
185
+ LOGGER.debug(
186
+ "adding child modules to check list: %s", ", ".join(sorted([p.stem for p in check_modules_dependencies]))
187
+ )
188
+
189
+ check_modules += check_modules_dependencies
190
+
169
191
  if not check_modules:
170
192
  LOGGER.debug("No Modules provided to check for python Requirements")
171
193
  return
@@ -177,4 +199,4 @@ def _get_python_requirements_of_modules(addon_paths: List[Path], filter_module_n
177
199
  if module_depends := manifest.get("external_dependencies", {}).get("python"):
178
200
  python_depends += module_depends
179
201
 
180
- return python_depends
202
+ return list(set(python_depends))
File without changes