Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: fix exports, snapshot public api #3836

Merged
merged 1 commit into from
Feb 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,12 @@ py-test:
cd marimo && typos && cd - && hatch run +py=3.12 test-optional:test

.PHONY: py-snapshots
# update html snapshots
# update snapshots
py-snapshots:
hatch run +py=3.12 test:test \
tests/_server/templates/test_templates.py \
tests/_server/api/endpoints/test_export.py
tests/_server/api/endpoints/test_export.py \
tests/test_api.py

.PHONY: install-all
# install everything; takes a long time due to editable install
Expand Down
4 changes: 1 addition & 3 deletions marimo/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
5. fun
"""

from __future__ import annotations

__all__ = [
# Core API
"App",
Expand Down Expand Up @@ -89,7 +87,7 @@
import marimo._islands as islands
from marimo._ast.app import App
from marimo._ast.cell import Cell
from marimo._islands.island_generator import MarimoIslandGenerator
from marimo._islands._island_generator import MarimoIslandGenerator
from marimo._output.doc import doc
from marimo._output.formatting import as_html, iframe, plain
from marimo._output.hypertext import Html
Expand Down
6 changes: 2 additions & 4 deletions marimo/_ai/__init__.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
# Copyright 2024 Marimo. All rights reserved.
"""AI utilities."""

from __future__ import annotations

__all__ = [
"ChatMessage",
"ChatModelConfig",
"ChatAttachment",
"llm",
]

from marimo._ai import llm
from marimo._ai.types import (
import marimo._ai.llm as llm
from marimo._ai._types import (
ChatAttachment,
ChatMessage,
ChatModelConfig,
Expand Down
2 changes: 1 addition & 1 deletion marimo/_ai/convert.py → marimo/_ai/_convert.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import base64
from typing import Any, Dict, List, TypedDict

from marimo._ai.types import ChatMessage
from marimo._ai._types import ChatMessage


def convert_to_openai_messages(
Expand Down
File renamed without changes.
3 changes: 3 additions & 0 deletions marimo/_ai/llm/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from marimo._ai.llm._impl import anthropic, google, groq, openai

__all__ = ["openai", "anthropic", "google", "groq"]
4 changes: 2 additions & 2 deletions marimo/_ai/llm.py → marimo/_ai/llm/_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
import os
from typing import Callable, List, Optional, cast

from marimo._ai.convert import (
from marimo._ai._convert import (
convert_to_anthropic_messages,
convert_to_google_messages,
convert_to_groq_messages,
convert_to_openai_messages,
)
from marimo._ai.types import (
from marimo._ai._types import (
ChatMessage,
ChatModel,
ChatModelConfig,
Expand Down
4 changes: 1 addition & 3 deletions marimo/_islands/__init__.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
# Copyright 2024 Marimo. All rights reserved.
from __future__ import annotations

__all__ = [
"MarimoIslandGenerator",
"MarimoIslandStub",
]

from marimo._islands.island_generator import (
from marimo._islands._island_generator import (
MarimoIslandGenerator,
MarimoIslandStub,
)
2 changes: 0 additions & 2 deletions marimo/_plugins/ui/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
This module contains a library of interactive UI elements.
"""

from __future__ import annotations

__all__ = [
"altair_chart",
"anywidget",
Expand Down
2 changes: 1 addition & 1 deletion marimo/_plugins/ui/_impl/chat/chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from dataclasses import dataclass
from typing import Any, Callable, Dict, Final, List, Optional, Union, cast

from marimo._ai.types import (
from marimo._ai._types import (
ChatMessage,
ChatModelConfig,
ChatModelConfigDict,
Expand Down
2 changes: 1 addition & 1 deletion marimo/_plugins/ui/_impl/chat/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from typing import List, Optional

from marimo._ai.types import (
from marimo._ai._types import (
ChatAttachment,
ChatMessage,
ChatMessageDict,
Expand Down
4 changes: 2 additions & 2 deletions marimo/_server/api/endpoints/ai.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
from starlette.responses import StreamingResponse

from marimo import _loggers
from marimo._ai.convert import (
from marimo._ai._convert import (
convert_to_anthropic_messages,
convert_to_google_messages,
convert_to_openai_messages,
)
from marimo._ai.types import ChatMessage
from marimo._ai._types import ChatMessage
from marimo._config.config import MarimoConfig
from marimo._server.ai.prompts import Prompter
from marimo._server.api.deps import AppState
Expand Down
2 changes: 1 addition & 1 deletion marimo/_server/export/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ async def run_app_then_export_as_reactive_html(
) -> ExportResult:
import os

from marimo._islands.island_generator import MarimoIslandGenerator
from marimo._islands._island_generator import MarimoIslandGenerator

generator = MarimoIslandGenerator.from_file(
path.absolute_name, display_code=include_code
Expand Down
2 changes: 1 addition & 1 deletion marimo/_server/models/completion.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from dataclasses import dataclass, field
from typing import Any, List, Literal, Optional

from marimo._ai.types import ChatMessage
from marimo._ai._types import ChatMessage


@dataclass
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,7 @@ ignore = [
"PT011", # `pytest.raises(ValueError)` is too broad, set the `match` parameter or use a more specific exception
"E501", # Line too long, we still trim
"D415", # First line should end with a period, question mark, or exclamation point
"FA102", # Use `from __future__ import annotations`
]
extend-select = [
# pyflakes
Expand Down
4 changes: 2 additions & 2 deletions tests/_ai/test_chat_convert.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@

import pytest

from marimo._ai.convert import (
from marimo._ai._convert import (
convert_to_anthropic_messages,
convert_to_google_messages,
convert_to_groq_messages,
convert_to_openai_messages,
)
from marimo._ai.types import (
from marimo._ai._types import (
ChatAttachment,
ChatMessage,
)
Expand Down
4 changes: 2 additions & 2 deletions tests/_ai/test_chat_model.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from __future__ import annotations

from marimo._ai.llm import simple
from marimo._ai.types import ChatMessage, ChatModelConfig
from marimo._ai._types import ChatMessage, ChatModelConfig
from marimo._ai.llm._impl import simple


def test_simple_model():
Expand Down
2 changes: 1 addition & 1 deletion tests/_islands/test_island_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from marimo import __version__
from marimo._ast.app import _AppConfig
from marimo._islands.island_generator import (
from marimo._islands._island_generator import (
MarimoIslandGenerator,
)
from tests.mocks import snapshotter
Expand Down
2 changes: 1 addition & 1 deletion tests/_plugins/ui/_impl/chat/test_chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import pytest

from marimo._ai.types import (
from marimo._ai._types import (
ChatMessage,
ChatModelConfig,
ChatModelConfigDict,
Expand Down
114 changes: 114 additions & 0 deletions tests/snapshots/api.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
App
Cell
Html
MarimoIslandGenerator
MarimoStopError
Thread
accordion
ai
ChatAttachment
ChatMessage
ChatModelConfig
llm
anthropic
google
groq
openai
app_meta
as_html
audio
cache
callout
capture_stderr
capture_stdout
carousel
center
cli_args
create_asgi_app
defs
doc
download
hstack
icon
iframe
image
islands
MarimoIslandGenerator
MarimoIslandStub
latex
lazy
left
lru_cache
md
mermaid
mpl
interactive
nav_menu
notebook_dir
notebook_location
output
append
clear
replace
replace_at_index
pdf
persistent_cache
plain
plain_text
query_params
redirect_stderr
redirect_stdout
refs
right
routes
running_in_notebook
show_code
sidebar
sql
stat
state
status
progress_bar
spinner
toast
stop
style
tabs
tree
ui
altair_chart
anywidget
array
batch
button
chat
checkbox
code_editor
data_explorer
dataframe
date
date_range
datetime
dictionary
dropdown
experimental_data_editor
file
file_browser
form
microphone
multiselect
number
panel
plotly
radio
range_slider
refresh
run_button
slider
switch
table
tabs
text
text_area
video
vstack
57 changes: 57 additions & 0 deletions tests/test_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from __future__ import annotations

import inspect
from typing import Any, Optional, Set

from tests.mocks import snapshotter

snapshot = snapshotter(__file__)


def _explore_module(
module: Any, indent: int = 0, visited: Optional[Set[int]] = None
) -> list[str]:
"""
Recursively explore a module and print all public exported items.

Args:
module: The module or object to explore
indent: Current indentation level (for pretty printing)
visited: Set[int] = set()
"""
if visited is None:
visited = set()

# Skip if we've already visited this object
if id(module) in visited:
return []

visited.add(id(module))

results: list[str] = []
# Get all attributes of the module
for name, obj in inspect.getmembers(module):
# Skip private/special attributes (starting with _)
if name.startswith("_"):
continue

# Create indentation string
indent_str = " " * indent

# Print the current item
results.append(f"{indent_str}{name}")

# Recursively explore if it's a module, class, or other container type
if inspect.ismodule(obj) and obj.__name__.startswith(module.__name__):
# Only recurse into submodules of the original module
results.extend(_explore_module(obj, indent + 1, visited))

return results


def test_api():
import marimo as mo

results = _explore_module(mo)
assert len(results) > 0
snapshot("api.txt", "\n".join(results))
Loading