Skip to content
Open
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
17 changes: 12 additions & 5 deletions marimo/_convert/markdown/markdown.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@
NotebookSerializationV1,
)

LEGACY_PYTHON_REGEX = re.compile(r"\{.*python.*\}")

LEGACY_SQL_REGEX = re.compile(r"\{.*sql.*\}")

MARIMO_REGEX = re.compile(r".*\{.*marimo.*\}")

LOGGER = _loggers.marimo_logger()

MARIMO_MD = "marimo-md"
Expand Down Expand Up @@ -77,12 +83,13 @@ def extract_attribs(

def _is_code_tag(text: str) -> bool:
head = text.split("\n")[0].strip()
legacy_format = bool(re.search(r"\{.*python.*\}", head))
legacy_format |= bool(re.search(r"\{.*sql.*\}", head))
# Fast legacy check by precompiled regexes
if LEGACY_PYTHON_REGEX.search(head) or LEGACY_SQL_REGEX.search(head):
return True
# If code is compatible and dependency met, check marimo pattern
if DependencyManager.new_superfences.has_required_version(quiet=True):
supported_format = bool(re.search(r".*\{.*marimo.*\}", head))
return legacy_format or supported_format
return legacy_format
return bool(MARIMO_REGEX.search(head))
return False


def _get_language(text: str) -> str:
Expand Down
10 changes: 5 additions & 5 deletions marimo/_dependencies/dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import sys
from dataclasses import dataclass

from packaging.version import parse as parse_version

from marimo._dependencies.errors import ManyModulesNotFoundError


Expand Down Expand Up @@ -159,11 +161,9 @@ def _version_check(
if min_v is None and max_v is None:
return True

from packaging import version

parsed_min_version = version.parse(min_v) if min_v else None
parsed_max_version = version.parse(max_v) if max_v else None
parsed_v = version.parse(v)
parsed_min_version = parse_version(min_v) if min_v else None
parsed_max_version = parse_version(max_v) if max_v else None
parsed_v = parse_version(v)

if parsed_min_version is not None and parsed_v < parsed_min_version:
msg = f"Mismatched version of {pkg}: expected >={min_v}, got {v}"
Expand Down