Merge branch 'main' into lendemor/rename_private_fields
This commit is contained in:
commit
59f4f03af1
@ -47,14 +47,14 @@ jobs:
|
|||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
run-poetry-install: true
|
run-poetry-install: true
|
||||||
create-venv-at-path: .venv
|
create-venv-at-path: .venv
|
||||||
- run: poetry run uv pip install pyvirtualdisplay pillow pytest-split
|
- run: poetry run uv pip install pyvirtualdisplay pillow pytest-split pytest-retry
|
||||||
- name: Run app harness tests
|
- name: Run app harness tests
|
||||||
env:
|
env:
|
||||||
SCREENSHOT_DIR: /tmp/screenshots/${{ matrix.state_manager }}/${{ matrix.python-version }}/${{ matrix.split_index }}
|
SCREENSHOT_DIR: /tmp/screenshots/${{ matrix.state_manager }}/${{ matrix.python-version }}/${{ matrix.split_index }}
|
||||||
REDIS_URL: ${{ matrix.state_manager == 'redis' && 'redis://localhost:6379' || '' }}
|
REDIS_URL: ${{ matrix.state_manager == 'redis' && 'redis://localhost:6379' || '' }}
|
||||||
run: |
|
run: |
|
||||||
poetry run playwright install chromium
|
poetry run playwright install chromium
|
||||||
poetry run pytest tests/integration --splits 2 --group ${{matrix.split_index}}
|
poetry run pytest tests/integration --retries 3 --maxfail=5 --splits 2 --group ${{matrix.split_index}}
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
name: Upload failed test screenshots
|
name: Upload failed test screenshots
|
||||||
if: always()
|
if: always()
|
||||||
|
@ -70,6 +70,8 @@ _SUBMOD_ATTRS: dict = {
|
|||||||
"Label",
|
"Label",
|
||||||
"label_list",
|
"label_list",
|
||||||
"LabelList",
|
"LabelList",
|
||||||
|
"cell",
|
||||||
|
"Cell",
|
||||||
],
|
],
|
||||||
"polar": [
|
"polar": [
|
||||||
"pie",
|
"pie",
|
||||||
|
@ -53,11 +53,13 @@ from .charts import radar_chart as radar_chart
|
|||||||
from .charts import radial_bar_chart as radial_bar_chart
|
from .charts import radial_bar_chart as radial_bar_chart
|
||||||
from .charts import scatter_chart as scatter_chart
|
from .charts import scatter_chart as scatter_chart
|
||||||
from .charts import treemap as treemap
|
from .charts import treemap as treemap
|
||||||
|
from .general import Cell as Cell
|
||||||
from .general import GraphingTooltip as GraphingTooltip
|
from .general import GraphingTooltip as GraphingTooltip
|
||||||
from .general import Label as Label
|
from .general import Label as Label
|
||||||
from .general import LabelList as LabelList
|
from .general import LabelList as LabelList
|
||||||
from .general import Legend as Legend
|
from .general import Legend as Legend
|
||||||
from .general import ResponsiveContainer as ResponsiveContainer
|
from .general import ResponsiveContainer as ResponsiveContainer
|
||||||
|
from .general import cell as cell
|
||||||
from .general import graphing_tooltip as graphing_tooltip
|
from .general import graphing_tooltip as graphing_tooltip
|
||||||
from .general import label as label
|
from .general import label as label
|
||||||
from .general import label_list as label_list
|
from .general import label_list as label_list
|
||||||
|
@ -242,8 +242,23 @@ class LabelList(Recharts):
|
|||||||
stroke: Var[Union[str, Color]] = LiteralVar.create("none")
|
stroke: Var[Union[str, Color]] = LiteralVar.create("none")
|
||||||
|
|
||||||
|
|
||||||
|
class Cell(Recharts):
|
||||||
|
"""A Cell component in Recharts."""
|
||||||
|
|
||||||
|
tag = "Cell"
|
||||||
|
|
||||||
|
alias = "RechartsCell"
|
||||||
|
|
||||||
|
# The presentation attribute of a rectangle in bar or a sector in pie.
|
||||||
|
fill: Var[str]
|
||||||
|
|
||||||
|
# The presentation attribute of a rectangle in bar or a sector in pie.
|
||||||
|
stroke: Var[str]
|
||||||
|
|
||||||
|
|
||||||
responsive_container = ResponsiveContainer.create
|
responsive_container = ResponsiveContainer.create
|
||||||
legend = Legend.create
|
legend = Legend.create
|
||||||
graphing_tooltip = GraphingTooltip.create
|
graphing_tooltip = GraphingTooltip.create
|
||||||
label = Label.create
|
label = Label.create
|
||||||
label_list = LabelList.create
|
label_list = LabelList.create
|
||||||
|
cell = Cell.create
|
||||||
|
@ -482,8 +482,59 @@ class LabelList(Recharts):
|
|||||||
"""
|
"""
|
||||||
...
|
...
|
||||||
|
|
||||||
|
class Cell(Recharts):
|
||||||
|
@overload
|
||||||
|
@classmethod
|
||||||
|
def create( # type: ignore
|
||||||
|
cls,
|
||||||
|
*children,
|
||||||
|
fill: Optional[Union[Var[str], str]] = None,
|
||||||
|
stroke: Optional[Union[Var[str], str]] = None,
|
||||||
|
style: Optional[Style] = None,
|
||||||
|
key: Optional[Any] = None,
|
||||||
|
id: Optional[Any] = None,
|
||||||
|
class_name: Optional[Any] = None,
|
||||||
|
autofocus: Optional[bool] = None,
|
||||||
|
custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
|
||||||
|
on_blur: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_click: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_double_click: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_focus: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_mount: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_scroll: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
on_unmount: Optional[EventType[[], BASE_STATE]] = None,
|
||||||
|
**props,
|
||||||
|
) -> "Cell":
|
||||||
|
"""Create the component.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
*children: The children of the component.
|
||||||
|
fill: The presentation attribute of a rectangle in bar or a sector in pie.
|
||||||
|
stroke: The presentation attribute of a rectangle in bar or a sector in pie.
|
||||||
|
style: The style of the component.
|
||||||
|
key: A unique key for the component.
|
||||||
|
id: The id for the component.
|
||||||
|
class_name: The class name for the component.
|
||||||
|
autofocus: Whether the component should take the focus once the page is loaded
|
||||||
|
custom_attrs: custom attribute
|
||||||
|
**props: The props of the component.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The component.
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
responsive_container = ResponsiveContainer.create
|
responsive_container = ResponsiveContainer.create
|
||||||
legend = Legend.create
|
legend = Legend.create
|
||||||
graphing_tooltip = GraphingTooltip.create
|
graphing_tooltip = GraphingTooltip.create
|
||||||
label = Label.create
|
label = Label.create
|
||||||
label_list = LabelList.create
|
label_list = LabelList.create
|
||||||
|
cell = Cell.create
|
||||||
|
@ -174,7 +174,7 @@ def get_node_path() -> str | None:
|
|||||||
return str(node_path)
|
return str(node_path)
|
||||||
|
|
||||||
|
|
||||||
def get_npm_path() -> str | None:
|
def get_npm_path() -> Path | None:
|
||||||
"""Get npm binary path.
|
"""Get npm binary path.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@ -183,8 +183,8 @@ def get_npm_path() -> str | None:
|
|||||||
npm_path = Path(constants.Node.NPM_PATH)
|
npm_path = Path(constants.Node.NPM_PATH)
|
||||||
if use_system_node() or not npm_path.exists():
|
if use_system_node() or not npm_path.exists():
|
||||||
system_npm_path = which("npm")
|
system_npm_path = which("npm")
|
||||||
return str(system_npm_path) if system_npm_path else None
|
npm_path = Path(system_npm_path) if system_npm_path else None
|
||||||
return str(npm_path)
|
return npm_path.absolute() if npm_path else None
|
||||||
|
|
||||||
|
|
||||||
def update_json_file(file_path: str | Path, update_dict: dict[str, int | str]):
|
def update_json_file(file_path: str | Path, update_dict: dict[str, int | str]):
|
||||||
|
@ -254,7 +254,7 @@ def get_package_manager(on_failure_return_none: bool = False) -> str | None:
|
|||||||
"""
|
"""
|
||||||
npm_path = path_ops.get_npm_path()
|
npm_path = path_ops.get_npm_path()
|
||||||
if npm_path is not None:
|
if npm_path is not None:
|
||||||
return str(Path(npm_path).resolve())
|
return str(npm_path)
|
||||||
if on_failure_return_none:
|
if on_failure_return_none:
|
||||||
return None
|
return None
|
||||||
raise FileNotFoundError("NPM not found. You may need to run `reflex init`.")
|
raise FileNotFoundError("NPM not found. You may need to run `reflex init`.")
|
||||||
|
@ -9,7 +9,6 @@ import os
|
|||||||
import signal
|
import signal
|
||||||
import subprocess
|
import subprocess
|
||||||
from concurrent import futures
|
from concurrent import futures
|
||||||
from pathlib import Path
|
|
||||||
from typing import Callable, Generator, List, Optional, Tuple, Union
|
from typing import Callable, Generator, List, Optional, Tuple, Union
|
||||||
|
|
||||||
import psutil
|
import psutil
|
||||||
@ -368,7 +367,7 @@ def get_command_with_loglevel(command: list[str]) -> list[str]:
|
|||||||
The updated command list
|
The updated command list
|
||||||
"""
|
"""
|
||||||
npm_path = path_ops.get_npm_path()
|
npm_path = path_ops.get_npm_path()
|
||||||
npm_path = str(Path(npm_path).resolve()) if npm_path else npm_path
|
npm_path = str(npm_path) if npm_path else None
|
||||||
|
|
||||||
if command[0] == npm_path:
|
if command[0] == npm_path:
|
||||||
return [*command, "--loglevel", "silly"]
|
return [*command, "--loglevel", "silly"]
|
||||||
|
Loading…
Reference in New Issue
Block a user