1
0
Эх сурвалжийг харах

Merge pull request #548 from Avaiga/feature/#547-remove-src-folder

feature/#547 removed src folder
Toan Quach 1 жил өмнө
parent
commit
08e5fab588
100 өөрчлөгдсөн 513 нэмэгдсэн , 386 устгасан
  1. 4 5
      .github/sync.yml
  2. 2 2
      .github/workflows/linter.yml
  3. 3 19
      .github/workflows/packaging.yml
  4. 3 3
      .github/workflows/publish.yml
  5. 6 6
      .github/workflows/release-dev.yml
  6. 5 2
      .github/workflows/release.yml
  7. 9 0
      .github/workflows/tests.yml
  8. 18 3
      MANIFEST.in
  9. 55 6
      Pipfile
  10. 2 2
      doc/gui/extension/README.md
  11. 0 1
      frontend/taipy-gui/dom/package-lock.json
  12. 349 202
      frontend/taipy-gui/package-lock.json
  13. 1 1
      frontend/taipy-gui/webpack.config.js
  14. 6 2
      frontend/taipy/package-lock.json
  15. 1 1
      frontend/taipy/webpack.config.js
  16. 0 0
      pytest.ini
  17. 43 34
      setup.py
  18. 0 2
      src/taipy/config/MANIFEST.in
  19. 0 0
      src/taipy/config/global_app/__init__.py
  20. 0 11
      src/taipy/config/version.py
  21. 0 2
      src/taipy/core/MANIFEST.in
  22. 0 4
      src/taipy/gui/MANIFEST.in
  23. 0 1
      src/taipy/templates/MANIFEST.in
  24. 0 9
      src/taipy/templates/default/hooks/pre_gen_project.py
  25. 0 1
      src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/algorithms/__init__.py
  26. 0 1
      src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/configuration/__init__.py
  27. 0 1
      src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/pages/__init__.py
  28. 0 10
      src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/pages/page_example/page_example.py
  29. 0 10
      src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/pages/root.py
  30. 0 0
      src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/{{cookiecutter.__main_file}}.py
  31. 0 1
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/algos/__init__.py
  32. 0 3
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/algos/algos.py
  33. 0 0
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/config/__init__.py
  34. 0 6
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/config/config_with_toml.py
  35. 0 2
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/__init__.py
  36. 0 1
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/job_page/__init__.py
  37. 0 3
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/job_page/job_page.py
  38. 0 7
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/root.py
  39. 0 1
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/scenario_page/__init__.py
  40. 0 19
      src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/scenario_page/scenario_page.py
  41. 0 0
      taipy/__init__.py
  42. 0 0
      taipy/_cli/__init__.py
  43. 0 0
      taipy/_cli/_base_cli/__init__.py
  44. 0 0
      taipy/_cli/_base_cli/_cli.py
  45. 0 0
      taipy/_cli/_help_cli.py
  46. 0 0
      taipy/_cli/_run_cli.py
  47. 0 0
      taipy/_cli/_scaffold_cli.py
  48. 0 0
      taipy/_entrypoint.py
  49. 0 0
      taipy/_run.py
  50. 0 0
      taipy/config/.coveragerc
  51. 0 0
      taipy/config/.editorconfig
  52. 0 0
      taipy/config/.flake8
  53. 0 0
      taipy/config/.gitattributes
  54. 0 0
      taipy/config/.github/ISSUE_TEMPLATE.md
  55. 0 0
      taipy/config/.github/ISSUE_TEMPLATE/bug_report.md
  56. 0 0
      taipy/config/.github/ISSUE_TEMPLATE/feature-improvement.md
  57. 0 0
      taipy/config/.github/ISSUE_TEMPLATE/new-feature.md
  58. 0 0
      taipy/config/.github/workflows/codeql-analysis.yml
  59. 0 0
      taipy/config/.github/workflows/coverage.yml
  60. 0 0
      taipy/config/.github/workflows/generate_pyi.yml
  61. 0 0
      taipy/config/.github/workflows/publish.yml
  62. 0 0
      taipy/config/.github/workflows/release-dev.yml
  63. 0 0
      taipy/config/.github/workflows/release.yml
  64. 0 0
      taipy/config/.github/workflows/setuptools.yml
  65. 0 0
      taipy/config/.github/workflows/tests.yml
  66. 0 0
      taipy/config/.gitignore
  67. 0 0
      taipy/config/.isort.cfg
  68. 0 0
      taipy/config/.license-header
  69. 0 0
      taipy/config/.pre-commit-config.yaml
  70. 0 0
      taipy/config/CODE_OF_CONDUCT.md
  71. 0 0
      taipy/config/CONTRIBUTING.md
  72. 0 0
      taipy/config/INSTALLATION.md
  73. 0 0
      taipy/config/LICENSE
  74. 2 0
      taipy/config/MANIFEST.in
  75. 0 0
      taipy/config/Pipfile
  76. 2 2
      taipy/config/README.md
  77. 2 0
      taipy/config/__init__.py
  78. 0 0
      taipy/config/_config.py
  79. 0 0
      taipy/config/_config_comparator/__init__.py
  80. 0 0
      taipy/config/_config_comparator/_comparator_result.py
  81. 0 0
      taipy/config/_config_comparator/_config_comparator.py
  82. 0 0
      taipy/config/_init.py
  83. 0 0
      taipy/config/_serializer/__init__.py
  84. 0 0
      taipy/config/_serializer/_base_serializer.py
  85. 0 0
      taipy/config/_serializer/_json_serializer.py
  86. 0 0
      taipy/config/_serializer/_toml_serializer.py
  87. 0 0
      taipy/config/checker/__init__.py
  88. 0 0
      taipy/config/checker/_checker.py
  89. 0 0
      taipy/config/checker/_checkers/__init__.py
  90. 0 0
      taipy/config/checker/_checkers/_auth_config_checker.py
  91. 0 0
      taipy/config/checker/_checkers/_config_checker.py
  92. 0 0
      taipy/config/checker/issue.py
  93. 0 0
      taipy/config/checker/issue_collector.py
  94. 0 0
      taipy/config/common/__init__.py
  95. 0 0
      taipy/config/common/_classproperty.py
  96. 0 0
      taipy/config/common/_config_blocker.py
  97. 0 0
      taipy/config/common/_repr_enum.py
  98. 0 0
      taipy/config/common/_template_handler.py
  99. 0 0
      taipy/config/common/_validate_id.py
  100. 0 0
      taipy/config/common/frequency.py

+ 4 - 5
.github/sync.yml

@@ -4,8 +4,8 @@ group:
     Avaiga/taipy-core
     Avaiga/taipy-core
     Avaiga/taipy-gui
     Avaiga/taipy-gui
     Avaiga/taipy-rest
     Avaiga/taipy-rest
-    
-  files: 
+
+  files:
     - .flake8
     - .flake8
     - .gitattributes
     - .gitattributes
     - .license-header
     - .license-header
@@ -14,7 +14,6 @@ group:
     - LICENSE
     - LICENSE
     - mypy.ini
     - mypy.ini
     - pyproject.toml
     - pyproject.toml
-    - src/taipy/__init__.py
+    - taipy/__init__.py
     # - .isort.cfg
     # - .isort.cfg
-    # - src/__init__.py
-    
+    # - __init__.py

+ 2 - 2
.github/workflows/linter.yml

@@ -21,7 +21,7 @@ jobs:
           use-pylint: false
           use-pylint: false
           use-isort: false
           use-isort: false
           use-mypy: false
           use-mypy: false
-          extra-black-options: "--line-length=120"
+          extra-black-options: "--line-length=120 --diff"
           extra-pycodestyle-options: "--max-line-length=120  --exclude=tests/gui --ignore=E121,E123,E126,E226,E24,E704,W503,W504,E203"
           extra-pycodestyle-options: "--max-line-length=120  --exclude=tests/gui --ignore=E121,E123,E126,E226,E24,E704,W503,W504,E203"
-          extra-mypy-options: "--ignore-missing-imports --implicit-optional --no-namespace-packages --exclude (src/taipy/templates/|generate_pyi.py) --follow-imports skip"
+          extra-mypy-options: "--ignore-missing-imports --implicit-optional --no-namespace-packages --exclude (taipy/templates/|generate_pyi.py) --follow-imports skip"
           extra-isort-options: "--line-length=120 --force-grid-wrap=10 --multi-line=VERTICAL_HANGING_INDENT --trailing-comma"
           extra-isort-options: "--line-length=120 --force-grid-wrap=10 --multi-line=VERTICAL_HANGING_INDENT --trailing-comma"

+ 3 - 19
.github/workflows/packaging.yml

@@ -28,30 +28,14 @@ jobs:
         with:
         with:
           python-version: ${{ matrix.python-versions }}
           python-version: ${{ matrix.python-versions }}
 
 
-      - name: Get taipy-gui version from setup.py
-        id: taipy_gui_version
+      - name: Build frontends
         run: |
         run: |
-          echo """
-          with open('setup.py') as f:
-              for line in f:
-                  if 'taipy-gui' in line:
-                      start = line.find('taipy-gui')
-                      end = line.rstrip().find('\",')
-                      print(f'VERSION={line[start:end]}')
-                      break
-          """ > ${{ runner.temp }}/get_gui_version.py
-          python ${{ runner.temp }}/get_gui_version.py >> $GITHUB_OUTPUT
-
-      - name: Install dependencies
-        run: |
-          python -m pip install --upgrade pip
-          # install taipy-gui from based on setup.py version
-          pip install "${{ steps.taipy_gui_version.outputs.VERSION }}"
+          python tools/frontend/bundle_build.py
 
 
       - name: Install Taipy without dependencies
       - name: Install Taipy without dependencies
         run: |
         run: |
           pip install .
           pip install .
-          rm -rf src
+          rm -rf taipy
 
 
           python -c "import taipy as tp; tp.Scenario"
           python -c "import taipy as tp; tp.Scenario"
           python -c "import taipy as tp; tp.gui"
           python -c "import taipy as tp; tp.gui"

+ 3 - 3
.github/workflows/publish.yml

@@ -25,7 +25,7 @@ jobs:
         run: |
         run: |
           echo """
           echo """
           import json, sys, os
           import json, sys, os
-          with open(f\"src{os.sep}taipy{os.sep}version.json\") as version_file:
+          with open(f\"taipy{os.sep}version.json\") as version_file:
             version_o = json.load(version_file)
             version_o = json.load(version_file)
           version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
           version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
           if vext := version_o.get(\"ext\"):
           if vext := version_o.get(\"ext\"):
@@ -87,12 +87,12 @@ jobs:
       - name: Prepare tests on unix
       - name: Prepare tests on unix
         if: matrix.os != 'windows-latest'
         if: matrix.os != 'windows-latest'
         run: |
         run: |
-          rm -rf src
+          rm -rf taipy
 
 
       - name: Prepare tests on windows
       - name: Prepare tests on windows
         if: matrix.os == 'windows-latest'
         if: matrix.os == 'windows-latest'
         run: |
         run: |
-          rmdir -Recurse -Force src
+          rmdir -Recurse -Force taipy
 
 
       - name: Install and test package
       - name: Install and test package
         run: |
         run: |

+ 6 - 6
.github/workflows/release-dev.yml

@@ -31,7 +31,7 @@ jobs:
           echo """
           echo """
           import json, sys, os
           import json, sys, os
           SUFFIX = 'dev'
           SUFFIX = 'dev'
-          with open(f\"src{os.sep}taipy{os.sep}version.json\") as version_file:
+          with open(f\"taipy{os.sep}version.json\") as version_file:
               version_o = json.load(version_file)
               version_o = json.load(version_file)
           version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
           version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
           if vext := version_o.get(\"ext\"):
           if vext := version_o.get(\"ext\"):
@@ -46,7 +46,7 @@ jobs:
         run: |
         run: |
           echo """
           echo """
           import json, os
           import json, os
-          with open(f\"src{os.sep}taipy{os.sep}version.json\") as version_file:
+          with open(f\"taipy{os.sep}version.json\") as version_file:
               version_o = json.load(version_file)
               version_o = json.load(version_file)
           version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
           version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
           if vext := version_o.get(\"ext\"):
           if vext := version_o.get(\"ext\"):
@@ -149,17 +149,17 @@ jobs:
         run: |
         run: |
           echo """
           echo """
           import json, os
           import json, os
-          with open(f'src{os.sep}taipy{os.sep}version.json') as version_file:
+          with open(f'taipy{os.sep}version.json') as version_file:
               version_o = json.load(version_file)
               version_o = json.load(version_file)
               if version_o is None or 'dev' not in version_o['ext']:
               if version_o is None or 'dev' not in version_o['ext']:
                   raise ValueError('Invalid version file. Version must contain dev suffix.')
                   raise ValueError('Invalid version file. Version must contain dev suffix.')
               prev_version = version_o['ext']
               prev_version = version_o['ext']
               new_version = 'dev' + str(int(version_o['ext'].replace('dev', '')) + 1)
               new_version = 'dev' + str(int(version_o['ext'].replace('dev', '')) + 1)
-              with open(f'src{os.sep}taipy{os.sep}version.json') as r:
+              with open(f'taipy{os.sep}version.json') as r:
                   text = r.read().replace(prev_version, new_version)
                   text = r.read().replace(prev_version, new_version)
-              with open(f'src{os.sep}taipy{os.sep}version.json', mode='w') as w:
+              with open(f'taipy{os.sep}version.json', mode='w') as w:
                   w.write(text)
                   w.write(text)
-              with open(f\"src{os.sep}taipy{os.sep}version.json\") as version_file:
+              with open(f\"taipy{os.sep}version.json\") as version_file:
                   version_o = json.load(version_file)
                   version_o = json.load(version_file)
               version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
               version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
               if vext := version_o.get(\"ext\"):
               if vext := version_o.get(\"ext\"):

+ 5 - 2
.github/workflows/release.yml

@@ -16,6 +16,9 @@ jobs:
       - uses: actions/setup-python@v4
       - uses: actions/setup-python@v4
         with:
         with:
           python-version: 3.11
           python-version: 3.11
+      - uses: actions/setup-node@v4
+        with:
+          node-version: '20'
 
 
       - name: Extract branch name
       - name: Extract branch name
         shell: bash
         shell: bash
@@ -26,7 +29,7 @@ jobs:
         run: |
         run: |
           echo """
           echo """
           import json, sys, os
           import json, sys, os
-          with open(f\"src{os.sep}taipy{os.sep}version.json\") as version_file:
+          with open(f\"taipy{os.sep}version.json\") as version_file:
               version_o = json.load(version_file)
               version_o = json.load(version_file)
           version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
           version = f'{version_o.get(\"major\")}.{version_o.get(\"minor\")}.{version_o.get(\"patch\")}'
           if vext := version_o.get(\"ext\"):
           if vext := version_o.get(\"ext\"):
@@ -40,7 +43,7 @@ jobs:
         run: |
         run: |
           echo """
           echo """
           import json, sys, os
           import json, sys, os
-          with open(f\"src{os.sep}taipy{os.sep}version.json\") as version_file:
+          with open(f\"taipy{os.sep}version.json\") as version_file:
               version = json.load(version_file)
               version = json.load(version_file)
           if f'release/{version.get(\"major\")}.{version.get(\"minor\")}' != sys.argv[1]:
           if f'release/{version.get(\"major\")}.{version.get(\"minor\")}' != sys.argv[1]:
               raise ValueError(f'Branch name mismatch: release/{version.get(\"major\")}.{version.get(\"minor\")} != {sys.argv[1]}')
               raise ValueError(f'Branch name mismatch: release/{version.get(\"major\")}.{version.get(\"minor\")} != {sys.argv[1]}')

+ 9 - 0
.github/workflows/tests.yml

@@ -21,8 +21,17 @@ jobs:
       - uses: actions/setup-python@v4
       - uses: actions/setup-python@v4
         with:
         with:
           python-version: ${{ matrix.python-versions }}
           python-version: ${{ matrix.python-versions }}
+      - uses: actions/setup-node@v4
+        with:
+          node-version: '20'
+
+
+      - name: install libmagic on macos
+        if: matrix.os == 'macos-latest'
+        run: brew install libmagic
 
 
       - name: Tests
       - name: Tests
+        if: matrix.os != 'windows-latest' || matrix.python-versions != '3.8'
         run: |
         run: |
           pip install tox
           pip install tox
           tox -e tests
           tox -e tests

+ 18 - 3
MANIFEST.in

@@ -1,3 +1,18 @@
-include src/taipy/*.json
-include src/taipy/gui_core/*.json
-include src/taipy/gui_core/lib/*.js
+include taipy/*.json
+include taipy/gui_core/*.json
+include taipy/gui_core/lib/*.js
+
+include taipy/config/*.pyi
+include taipy/config/*.json
+
+include taipy/core/*.json
+include taipy/core/config/*.json
+
+recursive-include taipy/gui/webapp *
+include taipy/gui/version.json
+include taipy/gui/viselements.json
+include taipy/gui/*.pyi
+
+include taipy/rest/*.json
+
+recursive-include taipy/templates *

+ 55 - 6
Pipfile

@@ -4,26 +4,75 @@ verify_ssl = true
 name = "pypi"
 name = "pypi"
 
 
 [packages]
 [packages]
+apispec = {extras = ["yaml"], version = "==6.3"}
+apispec-webframeworks = "==0.5.2"
 "backports.zoneinfo" = {version="==0.2.1", markers="python_version < '3.9'", extras=["tzdata"]}
 "backports.zoneinfo" = {version="==0.2.1", markers="python_version < '3.9'", extras=["tzdata"]}
 cookiecutter = "==2.1.1"
 cookiecutter = "==2.1.1"
-taipy-gui = {ref = "develop", git = "https://github.com/avaiga/taipy-gui.git"}
-taipy-rest = {ref = "develop", git = "https://github.com/avaiga/taipy-rest.git"}
-taipy-templates = {ref = "develop", git = "https://github.com/avaiga/taipy-templates.git"}
+deepdiff = "==6.2.2"
+flask = "==3.0.0"
+flask-cors = "==4.0.0"
+flask-socketio = "==5.3.6"
+Flask-RESTful = ">=0.3.9"
+gevent = "==23.7.0"
+gevent-websocket = "==0.10.1"
+gitignore-parser = "==0.1.1"
+kthread = "==0.2.3"
+markdown = "==3.4.4"
+marshmallow = "==3.20.1"
+modin = {extras = ["dask"], version = "==0.23.0"}
+networkx = "==2.6"
+openpyxl = "==3.1.2"
+pandas = "==2.0.0"
+pyarrow = "==10.0.1"
+pymongo = {extras = ["srv"], version = "==4.2.0"}
+python-dotenv = "==1.0.0"
+python-magic = {version = "==0.4.24", markers="sys_platform != 'win32'"}
+python-magic-bin = {version = "==0.4.14", markers="sys_platform == 'win32'"}
+pytz = "==2021.3"
+simple-websocket = "==0.10.1"
+sqlalchemy = "==2.0.16"
+toml = "==0.10"
+twisted = "==23.8.0"
+tzlocal = "==3.0"
 
 
 [dev-packages]
 [dev-packages]
 autopep8 = "*"
 autopep8 = "*"
 black = "*"
 black = "*"
 flake8 = "*"
 flake8 = "*"
 flake8-docstrings = "*"
 flake8-docstrings = "*"
+ipython = "*"
+ipykernel = "*"
 isort = "*"
 isort = "*"
+mkdocs = "*"
+mkdocs-autorefs = "*"
+mkdocs-include-markdown-plugin = "*"
+mkdocs-macros-plugin = "*"
+mkdocs-material = "==7.3.0"
+mkdocs-material-extensions = "*"
+mkdocstrings = "*"
+mongomock = "*"
 mypy = "*"
 mypy = "*"
+requests = "*"
+pandas-stubs = "*"
+playwright = "*"
 pre-commit = "*"
 pre-commit = "*"
+pyopenssl = "*"
 pytest = "*"
 pytest = "*"
-tox = "*"
-types-python-dateutil = "*"
-mongomock = "*"
+pytest-cov = "*"
 pytest-mock = "*"
 pytest-mock = "*"
+pytest-playwright = "*"
+pytest-timeout = "*"
+python-dotenv = "*"
 testbook = "*"
 testbook = "*"
+tox = "*"
+twine = "*"
+types-flask = "*"
+types-Flask-Cors = "*"
+types-Markdown = "*"
+types-python-dateutil = "*"
+types-pytz = "*"
+types-toml = ">=0.10.0"
+types-tzlocal = "*"
 
 
 [requires]
 [requires]
 python_version = "3"
 python_version = "3"

+ 2 - 2
doc/gui/extension/README.md

@@ -56,8 +56,8 @@ the Taipy GUI installation:
 - If you build from a local copy (a clone, for example) of the
 - If you build from a local copy (a clone, for example) of the
   [`taipy-gui` repository](https://github.com/Avaiga/taipy-gui/),
   [`taipy-gui` repository](https://github.com/Avaiga/taipy-gui/),
   this variable should be set to the path of the directory two levels above the directory where this
   this variable should be set to the path of the directory two levels above the directory where this
-  README file is located, then down to the "src" directory (i.e., the result of the Unix command
-  "``readlink -f `pwd`/../../src``").
+  README file is located, then down to the "taipy" directory (i.e., the result of the Unix command
+  "``readlink -f `pwd`/../../taipy``").
 - If you are building this extension library example from an installation of Taipy GUI, you can
 - If you are building this extension library example from an installation of Taipy GUI, you can
   get that location issuing the command `pip show taipy-gui`.
   get that location issuing the command `pip show taipy-gui`.
 
 

+ 0 - 1
frontend/taipy-gui/dom/package-lock.json

@@ -14,7 +14,6 @@
       }
       }
     },
     },
     "../packaging": {
     "../packaging": {
-      "name": "taipy-gui",
       "version": "3.1.0"
       "version": "3.1.0"
     },
     },
     "node_modules/js-tokens": {
     "node_modules/js-tokens": {

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 349 - 202
frontend/taipy-gui/package-lock.json


+ 1 - 1
frontend/taipy-gui/webpack.config.js

@@ -28,7 +28,7 @@ const taipyBundle = "taipy-gui"
 const reactBundleName = "TaipyGuiDependencies"
 const reactBundleName = "TaipyGuiDependencies"
 const taipyBundleName = "TaipyGui"
 const taipyBundleName = "TaipyGui"
 
 
-const basePath = "../../src/taipy/gui/webapp";
+const basePath = "../../taipy/gui/webapp";
 const webAppPath = resolveApp(basePath);
 const webAppPath = resolveApp(basePath);
 const reactManifestPath = resolveApp(basePath + "/" + reactBundle + "-manifest.json");
 const reactManifestPath = resolveApp(basePath + "/" + reactBundle + "-manifest.json");
 const reactDllPath = resolveApp(basePath + "/" + reactBundle + ".dll.js")
 const reactDllPath = resolveApp(basePath + "/" + reactBundle + ".dll.js")

+ 6 - 2
frontend/taipy/package-lock.json

@@ -21,7 +21,7 @@
         "formik": "^2.2.9",
         "formik": "^2.2.9",
         "react": "^18.2.0",
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
         "react-dom": "^18.2.0",
-        "taipy-gui": "file:../../../.virtualenvs/taipy-OW_uNObx/Lib/site-packages/taipy/gui/webapp"
+        "taipy-gui": "file:../../taipy/gui/webapp"
       },
       },
       "devDependencies": {
       "devDependencies": {
         "@types/react": "^18.0.15",
         "@types/react": "^18.0.15",
@@ -42,6 +42,10 @@
     },
     },
     "../../../.virtualenvs/taipy-OW_uNObx/Lib/site-packages/taipy/gui/webapp": {
     "../../../.virtualenvs/taipy-OW_uNObx/Lib/site-packages/taipy/gui/webapp": {
       "name": "taipy-gui",
       "name": "taipy-gui",
+      "version": "3.1.0",
+      "extraneous": true
+    },
+    "../../taipy/gui/webapp": {
       "version": "3.1.0"
       "version": "3.1.0"
     },
     },
     "node_modules/@aashutoshrathi/word-wrap": {
     "node_modules/@aashutoshrathi/word-wrap": {
@@ -4915,7 +4919,7 @@
       }
       }
     },
     },
     "node_modules/taipy-gui": {
     "node_modules/taipy-gui": {
-      "resolved": "../../../.virtualenvs/taipy-OW_uNObx/Lib/site-packages/taipy/gui/webapp",
+      "resolved": "../../taipy/gui/webapp",
       "link": true
       "link": true
     },
     },
     "node_modules/tapable": {
     "node_modules/tapable": {

+ 1 - 1
frontend/taipy/webpack.config.js

@@ -22,7 +22,7 @@ module.exports = (_env, options) => {
         entry: ["./src/index.ts"],
         entry: ["./src/index.ts"],
         output: {
         output: {
             filename: "taipy-gui-core.js",
             filename: "taipy-gui-core.js",
-            path: path.resolve(__dirname, "../../src/taipy/gui_core/lib"),
+            path: path.resolve(__dirname, "../../taipy/gui_core/lib"),
             library: {
             library: {
                 // Camel case transformation of the library name "example"
                 // Camel case transformation of the library name "example"
                 name: "TaipyGuiCore",
                 name: "TaipyGuiCore",

+ 0 - 0
src/taipy/gui/pytest.ini → pytest.ini


+ 43 - 34
setup.py

@@ -13,18 +13,17 @@
 
 
 
 
 import json
 import json
-import os
-import sysconfig
-from importlib.util import find_spec
+import subprocess
 from pathlib import Path
 from pathlib import Path
 
 
-from setuptools import find_namespace_packages, find_packages, setup
+from setuptools import find_packages, setup
 from setuptools.command.build_py import build_py
 from setuptools.command.build_py import build_py
 
 
-with open("README.md", "rb") as readme_file:
-    readme = readme_file.read().decode("UTF-8")
+root_folder = Path(__file__).parent
 
 
-with open(f"src{os.sep}taipy{os.sep}version.json") as version_file:
+readme = Path(root_folder / "README.md").read_text("UTF-8")
+
+with open(root_folder / "taipy" / "version.json") as version_file:
     version = json.load(version_file)
     version = json.load(version_file)
     version_string = f'{version.get("major", 0)}.{version.get("minor", 0)}.{version.get("patch", 0)}'
     version_string = f'{version.get("major", 0)}.{version.get("minor", 0)}.{version.get("patch", 0)}'
     if vext := version.get("ext"):
     if vext := version.get("ext"):
@@ -33,11 +32,42 @@ with open(f"src{os.sep}taipy{os.sep}version.json") as version_file:
 requirements = [
 requirements = [
     "backports.zoneinfo>=0.2.1,<0.3;python_version<'3.9'",
     "backports.zoneinfo>=0.2.1,<0.3;python_version<'3.9'",
     "cookiecutter>=2.1.1,<2.2",
     "cookiecutter>=2.1.1,<2.2",
-    "taipy-gui@git+https://git@github.com/Avaiga/taipy-gui.git@develop",
-    "taipy-rest@git+https://git@github.com/Avaiga/taipy-rest.git@develop",
-    "taipy-templates@git+https://git@github.com/Avaiga/taipy-templates.git@develop",
+    "toml>=0.10,<0.11",
+    "deepdiff>=6.2,<6.3",
+    "pyarrow>=10.0.1,<11.0",
+    "networkx>=2.6,<3.0",
+    "openpyxl>=3.1.2,<3.2",
+    "modin[dask]>=0.23.0,<1.0",
+    "pymongo[srv]>=4.2.0,<5.0",
+    "sqlalchemy>=2.0.16,<2.1",
+    "flask>=3.0.0,<3.1",
+    "flask-cors>=4.0.0,<5.0",
+    "flask-socketio>=5.3.6,<6.0",
+    "markdown>=3.4.4,<4.0",
+    "pandas>=2.0.0,<3.0",
+    "python-dotenv>=1.0.0,<1.1",
+    "pytz>=2021.3,<2022.2",
+    "tzlocal>=3.0,<5.0",
+    "backports.zoneinfo>=0.2.1,<0.3;python_version<'3.9'",
+    "gevent>=23.7.0,<24.0",
+    "gevent-websocket>=0.10.1,<0.11",
+    "kthread>=0.2.3,<0.3",
+    "gitignore-parser>=0.1,<0.2",
+    "simple-websocket>=0.10.1,<1.0",
+    "twisted>=23.8.0,<24.0",
+    "flask-restful>=0.3.9,<0.4",
+    "passlib>=1.7.4,<1.8",
+    "marshmallow>=3.20.1,<3.30",
+    "apispec[yaml]>=6.3,<7.0",
+    "apispec-webframeworks>=0.5.2,<0.6",
 ]
 ]
 
 
+
+def get_requirements():
+    # TODO get requirements from the different setups in tools/packages (removing taipy packages)
+    return requirements
+
+
 test_requirements = ["pytest>=3.8"]
 test_requirements = ["pytest>=3.8"]
 
 
 extras_require = {
 extras_require = {
@@ -52,29 +82,9 @@ extras_require = {
 }
 }
 
 
 
 
-def _build_webapp():
-    already_exists = Path("./src/taipy/gui_core/lib/taipy-gui-core.js").exists()
-    if not already_exists:
-        # default site-packages path is from the current python interpreter
-        site_packages_path = sysconfig.get_path("purelib")
-        # taipy-gui should be available through setup_requires option
-        # taipy-gui at this step is installed in a backend site-packages separated from the one being used by pip
-        if find_spec("taipy") and find_spec("taipy.gui"):
-            import taipy
-
-            site_packages_path = Path(taipy.__file__).absolute().parent.parent
-
-        # Specify the correct path to taipy-gui in gui/.env file
-        env_file_path = Path(__file__).absolute().parent / "frontend" / "taipy" / ".env"
-        if not os.path.exists(env_file_path):
-            with open(env_file_path, "w") as env_file:
-                env_file.write(f"TAIPY_GUI_DIR={site_packages_path}\n")
-        os.system("cd frontend/taipy && npm ci && npm run build")
-
-
 class NPMInstall(build_py):
 class NPMInstall(build_py):
     def run(self):
     def run(self):
-        _build_webapp()
+        subprocess.run(["python", "bundle_build.py"], cwd=root_folder / "tools" / "frontend", check=True, shell=True)
         build_py.run(self)
         build_py.run(self)
 
 
 
 
@@ -93,7 +103,7 @@ setup(
         "Programming Language :: Python :: 3.11",
         "Programming Language :: Python :: 3.11",
     ],
     ],
     description="A 360° open-source platform from Python pilots to production-ready web apps.",
     description="A 360° open-source platform from Python pilots to production-ready web apps.",
-    install_requires=requirements,
+    install_requires=get_requirements(),
     entry_points={
     entry_points={
         "console_scripts": [
         "console_scripts": [
             "taipy = taipy._entrypoint:_entrypoint",
             "taipy = taipy._entrypoint:_entrypoint",
@@ -104,8 +114,7 @@ setup(
     long_description_content_type="text/markdown",
     long_description_content_type="text/markdown",
     keywords="taipy",
     keywords="taipy",
     name="taipy",
     name="taipy",
-    package_dir={"": "src"},
-    packages=find_namespace_packages(where="src") + find_packages(include=["taipy"]),
+    packages=find_packages(include=["taipy", "taipy.*"]),
     include_package_data=True,
     include_package_data=True,
     test_suite="tests",
     test_suite="tests",
     url="https://github.com/avaiga/taipy",
     url="https://github.com/avaiga/taipy",

+ 0 - 2
src/taipy/config/MANIFEST.in

@@ -1,2 +0,0 @@
-include src/taipy/config/*.pyi
-include src/taipy/config/*.json

+ 0 - 0
src/taipy/config/global_app/__init__.py


+ 0 - 11
src/taipy/config/version.py

@@ -1,11 +0,0 @@
-import json
-import os
-
-
-def _get_version():
-    with open(f"{os.path.dirname(os.path.abspath(__file__))}{os.sep}version.json") as version_file:
-        version = json.load(version_file)
-        version_string = f'{version.get("major", 0)}.{version.get("minor", 0)}.{version.get("patch", 0)}'
-        if vext := version.get("ext"):
-            version_string = f"{version_string}.{vext}"
-    return version_string

+ 0 - 2
src/taipy/core/MANIFEST.in

@@ -1,2 +0,0 @@
-include src/taipy/core/*.json
-include src/taipy/core/config/*.json

+ 0 - 4
src/taipy/gui/MANIFEST.in

@@ -1,4 +0,0 @@
-recursive-include src/taipy/gui/webapp *
-include src/taipy/gui/version.json
-include src/taipy/gui/viselements.json
-include src/taipy/gui/*.pyi

+ 0 - 1
src/taipy/templates/MANIFEST.in

@@ -1 +0,0 @@
-recursive-include src/taipy/templates *

+ 0 - 9
src/taipy/templates/default/hooks/pre_gen_project.py

@@ -1,9 +0,0 @@
-import sys
-
-pages = "{{ cookiecutter.__pages }}".split(" ")
-# Remove empty string from pages list
-pages = [page for page in pages if page != ""]
-
-for page in pages:
-    if not page.isidentifier():
-        sys.exit(f'Page name "{page}" is not a valid Python identifier. Please choose another name.')

+ 0 - 1
src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/algorithms/__init__.py

@@ -1 +0,0 @@
-from algorithms import *

+ 0 - 1
src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/configuration/__init__.py

@@ -1 +0,0 @@
-from .config import *

+ 0 - 1
src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/pages/__init__.py

@@ -1 +0,0 @@
-from .root import root_page

+ 0 - 10
src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/pages/page_example/page_example.py

@@ -1,10 +0,0 @@
-"""
-A page of the application.
-Page content is imported from the page_example.md file.
-
-Please refer to https://docs.taipy.io/en/latest/manuals/gui/pages for more details.
-"""
-
-from taipy.gui import Markdown
-
-page_example = Markdown("pages/page_example/page_example.md")

+ 0 - 10
src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/pages/root.py

@@ -1,10 +0,0 @@
-"""
-The root page of the application.
-Page content is imported from the root.md file.
-
-Please refer to https://docs.taipy.io/en/latest/manuals/gui/pages for more details.
-"""
-
-from taipy.gui import Markdown
-
-root_page = Markdown("pages/root.md")

+ 0 - 0
src/taipy/templates/default/{{cookiecutter.__root_folder_name}}/{{cookiecutter.__main_file}}.py


+ 0 - 1
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/algos/__init__.py

@@ -1 +0,0 @@
-from .algos import clean_data

+ 0 - 3
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/algos/algos.py

@@ -1,3 +0,0 @@
-def clean_data(df, replacement_type):
-    df = df.fillna(replacement_type)
-    return df

+ 0 - 0
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/config/__init__.py


+ 0 - 6
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/config/config_with_toml.py

@@ -1,6 +0,0 @@
-from taipy import Config
-
-
-def configure():
-    Config.load("config/config.toml")
-    return Config.scenarios["scenario_configuration"]

+ 0 - 2
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/__init__.py

@@ -1,2 +0,0 @@
-from .job_page import job_page
-from .scenario_page import scenario_page

+ 0 - 1
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/job_page/__init__.py

@@ -1 +0,0 @@
-from .job_page import job_page

+ 0 - 3
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/job_page/job_page.py

@@ -1,3 +0,0 @@
-from taipy.gui import Markdown
-
-job_page = Markdown("pages/job_page/job_page.md")

+ 0 - 7
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/root.py

@@ -1,7 +0,0 @@
-from taipy.gui import Markdown
-
-selected_scenario = None
-selected_data_node = None
-content = ""
-
-root = Markdown("pages/root.md")

+ 0 - 1
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/scenario_page/__init__.py

@@ -1 +0,0 @@
-from .scenario_page import scenario_page

+ 0 - 19
src/taipy/templates/scenario-management/{{cookiecutter.__root_folder_name}}/pages/scenario_page/scenario_page.py

@@ -1,19 +0,0 @@
-from taipy.gui import Markdown, notify
-
-from .data_node_management import manage_partial
-
-
-def notify_on_submission(state, submitable, details):
-    if details["submission_status"] == "COMPLETED":
-        notify(state, "success", "Submision completed!")
-    elif details["submission_status"] == "FAILED":
-        notify(state, "error", "Submission failed!")
-    else:
-        notify(state, "info", "In progress...")
-
-
-def manage_data_node_partial(state):
-    manage_partial(state)
-
-
-scenario_page = Markdown("pages/scenario_page/scenario_page.md")

+ 0 - 0
src/taipy/__init__.py → taipy/__init__.py


+ 0 - 0
src/__init__.py → taipy/_cli/__init__.py


+ 0 - 0
src/taipy/_cli/_base_cli/__init__.py → taipy/_cli/_base_cli/__init__.py


+ 0 - 0
src/taipy/_cli/_base_cli/_cli.py → taipy/_cli/_base_cli/_cli.py


+ 0 - 0
src/taipy/_cli/_help_cli.py → taipy/_cli/_help_cli.py


+ 0 - 0
src/taipy/_cli/_run_cli.py → taipy/_cli/_run_cli.py


+ 0 - 0
src/taipy/_cli/_scaffold_cli.py → taipy/_cli/_scaffold_cli.py


+ 0 - 0
src/taipy/_entrypoint.py → taipy/_entrypoint.py


+ 0 - 0
src/taipy/_run.py → taipy/_run.py


+ 0 - 0
src/taipy/config/.coveragerc → taipy/config/.coveragerc


+ 0 - 0
src/taipy/config/.editorconfig → taipy/config/.editorconfig


+ 0 - 0
src/taipy/config/.flake8 → taipy/config/.flake8


+ 0 - 0
src/taipy/config/.gitattributes → taipy/config/.gitattributes


+ 0 - 0
src/taipy/config/.github/ISSUE_TEMPLATE.md → taipy/config/.github/ISSUE_TEMPLATE.md


+ 0 - 0
src/taipy/config/.github/ISSUE_TEMPLATE/bug_report.md → taipy/config/.github/ISSUE_TEMPLATE/bug_report.md


+ 0 - 0
src/taipy/config/.github/ISSUE_TEMPLATE/feature-improvement.md → taipy/config/.github/ISSUE_TEMPLATE/feature-improvement.md


+ 0 - 0
src/taipy/config/.github/ISSUE_TEMPLATE/new-feature.md → taipy/config/.github/ISSUE_TEMPLATE/new-feature.md


+ 0 - 0
src/taipy/config/.github/workflows/codeql-analysis.yml → taipy/config/.github/workflows/codeql-analysis.yml


+ 0 - 0
src/taipy/config/.github/workflows/coverage.yml → taipy/config/.github/workflows/coverage.yml


+ 0 - 0
src/taipy/config/.github/workflows/generate_pyi.yml → taipy/config/.github/workflows/generate_pyi.yml


+ 0 - 0
src/taipy/config/.github/workflows/publish.yml → taipy/config/.github/workflows/publish.yml


+ 0 - 0
src/taipy/config/.github/workflows/release-dev.yml → taipy/config/.github/workflows/release-dev.yml


+ 0 - 0
src/taipy/config/.github/workflows/release.yml → taipy/config/.github/workflows/release.yml


+ 0 - 0
src/taipy/config/.github/workflows/setuptools.yml → taipy/config/.github/workflows/setuptools.yml


+ 0 - 0
src/taipy/config/.github/workflows/tests.yml → taipy/config/.github/workflows/tests.yml


+ 0 - 0
src/taipy/config/.gitignore → taipy/config/.gitignore


+ 0 - 0
src/taipy/config/.isort.cfg → taipy/config/.isort.cfg


+ 0 - 0
src/taipy/config/.license-header → taipy/config/.license-header


+ 0 - 0
src/taipy/config/.pre-commit-config.yaml → taipy/config/.pre-commit-config.yaml


+ 0 - 0
src/taipy/config/CODE_OF_CONDUCT.md → taipy/config/CODE_OF_CONDUCT.md


+ 0 - 0
src/taipy/config/CONTRIBUTING.md → taipy/config/CONTRIBUTING.md


+ 0 - 0
src/taipy/config/INSTALLATION.md → taipy/config/INSTALLATION.md


+ 0 - 0
src/taipy/config/LICENSE → taipy/config/LICENSE


+ 2 - 0
taipy/config/MANIFEST.in

@@ -0,0 +1,2 @@
+include taipy/config/*.pyi
+include taipy/config/*.json

+ 0 - 0
src/taipy/config/Pipfile → taipy/config/Pipfile


+ 2 - 2
src/taipy/config/README.md → taipy/config/README.md

@@ -1,7 +1,7 @@
 # 🚧 Under construction 🚧
 # 🚧 Under construction 🚧
 
 
-WARNING: The Taipy team is performing a repository restructuration. This current repository taipy-config is about to be 
-merged into the main repository: taipy. Once the merge is done, the current code base will be in the 
+WARNING: The Taipy team is performing a repository restructuration. This current repository taipy-config is about to be
+merged into the main repository: taipy. Once the merge is done, the current code base will be in the
 [taipy repository](https://github.com/Avaiga/taipy). The migration should take a maximum of a few days.
 [taipy repository](https://github.com/Avaiga/taipy). The migration should take a maximum of a few days.
 <br>
 <br>
 
 

+ 2 - 0
src/taipy/config/__init__.py → taipy/config/__init__.py

@@ -23,6 +23,8 @@ from typing import List
 from ._init import Config
 from ._init import Config
 from .checker.issue import Issue
 from .checker.issue import Issue
 from .checker.issue_collector import IssueCollector
 from .checker.issue_collector import IssueCollector
+from .common.frequency import Frequency
+from .common.scope import Scope
 from .global_app.global_app_config import GlobalAppConfig
 from .global_app.global_app_config import GlobalAppConfig
 from .section import Section
 from .section import Section
 from .unique_section import UniqueSection
 from .unique_section import UniqueSection

+ 0 - 0
src/taipy/config/_config.py → taipy/config/_config.py


+ 0 - 0
src/taipy/_cli/__init__.py → taipy/config/_config_comparator/__init__.py


+ 0 - 0
src/taipy/config/_config_comparator/_comparator_result.py → taipy/config/_config_comparator/_comparator_result.py


+ 0 - 0
src/taipy/config/_config_comparator/_config_comparator.py → taipy/config/_config_comparator/_config_comparator.py


+ 0 - 0
src/taipy/config/_init.py → taipy/config/_init.py


+ 0 - 0
src/taipy/config/_config_comparator/__init__.py → taipy/config/_serializer/__init__.py


+ 0 - 0
src/taipy/config/_serializer/_base_serializer.py → taipy/config/_serializer/_base_serializer.py


+ 0 - 0
src/taipy/config/_serializer/_json_serializer.py → taipy/config/_serializer/_json_serializer.py


+ 0 - 0
src/taipy/config/_serializer/_toml_serializer.py → taipy/config/_serializer/_toml_serializer.py


+ 0 - 0
src/taipy/config/_serializer/__init__.py → taipy/config/checker/__init__.py


+ 0 - 0
src/taipy/config/checker/_checker.py → taipy/config/checker/_checker.py


+ 0 - 0
src/taipy/config/checker/__init__.py → taipy/config/checker/_checkers/__init__.py


+ 0 - 0
src/taipy/config/checker/_checkers/_auth_config_checker.py → taipy/config/checker/_checkers/_auth_config_checker.py


+ 0 - 0
src/taipy/config/checker/_checkers/_config_checker.py → taipy/config/checker/_checkers/_config_checker.py


+ 0 - 0
src/taipy/config/checker/issue.py → taipy/config/checker/issue.py


+ 0 - 0
src/taipy/config/checker/issue_collector.py → taipy/config/checker/issue_collector.py


+ 0 - 0
src/taipy/config/checker/_checkers/__init__.py → taipy/config/common/__init__.py


+ 0 - 0
src/taipy/config/common/_classproperty.py → taipy/config/common/_classproperty.py


+ 0 - 0
src/taipy/config/common/_config_blocker.py → taipy/config/common/_config_blocker.py


+ 0 - 0
src/taipy/config/common/_repr_enum.py → taipy/config/common/_repr_enum.py


+ 0 - 0
src/taipy/config/common/_template_handler.py → taipy/config/common/_template_handler.py


+ 0 - 0
src/taipy/config/common/_validate_id.py → taipy/config/common/_validate_id.py


+ 0 - 0
src/taipy/config/common/frequency.py → taipy/config/common/frequency.py


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно