Skip to content

Commit

Permalink
fix event-to-object fix npm release (reactive-python#962)
Browse files Browse the repository at this point in the history
* fix event-to-object   fix npm release

* fix sanic error
  • Loading branch information
rmorshea committed Apr 2, 2023
1 parent 82a8bd6 commit 3a009b6
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 19 deletions.
38 changes: 27 additions & 11 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 21,9 @@
from typing import Literal, Protocol, TypeAlias

class ReleasePrepFunc(Protocol):
def __call__(self, session: Session) -> Callable[[bool], None]:
def __call__(
self, session: Session, package: PackageInfo
) -> Callable[[bool], None]:
...


Expand Down Expand Up @@ -309,7 311,7 @@ def publish(
if tag_pkg not in packages:
session.error(f"Tag {tag} references package {tag_pkg} that does not exist")

pkg_path, pkg_lang, pkg_ver = packages[tag_pkg]
pkg_name, pkg_path, pkg_lang, pkg_ver = pkg_info = packages[tag_pkg]
if pkg_ver != tag_ver:
session.error(
f"Tag {tag} references version {tag_ver} of package {tag_pkg}, "
Expand All @@ -318,7 320,7 @@ def publish(

session.chdir(pkg_path)
session.log(f"Preparing {tag_pkg} for release...")
publishers.append((pkg_path, release_prep[pkg_lang](session)))
publishers.append((pkg_path, release_prep[pkg_lang](session, pkg_info)))

for pkg_path, publish in publishers:
session.log(f"Publishing {pkg_path}...")
Expand Down Expand Up @@ -353,21 355,30 @@ def get_reactpy_script_env() -> dict[str, str]:
}


def prepare_javascript_release(session: Session) -> Callable[[bool], None]:
def prepare_javascript_release(
session: Session, package: PackageInfo
) -> Callable[[bool], None]:
node_auth_token = session.env.get("NODE_AUTH_TOKEN")
if node_auth_token is None:
session.error("NODE_AUTH_TOKEN environment variable must be set")

# TODO: Make this `ci` instead of `install` somehow. By default `npm install` at
# workspace root does not generate a lockfile which is required by `npm ci`.
session.run("npm", "install", external=True)
session.run("npm", "ci", external=True)

def publish(dry_run: bool) -> None:
if dry_run:
session.run("npm", "pack", "--dry-run", external=True)
session.run(
"npm",
"--workspace",
package.name,
"pack",
"--dry-run",
external=True,
)
return
session.run(
"npm",
"--workspace",
package.name,
"publish",
"--access",
"public",
Expand All @@ -378,7 389,9 @@ def publish(dry_run: bool) -> None:
return publish


def prepare_python_release(session: Session) -> Callable[[bool], None]:
def prepare_python_release(
session: Session, package: PackageInfo
) -> Callable[[bool], None]:
twine_username = session.env.get("PYPI_USERNAME")
twine_password = session.env.get("PYPI_PASSWORD")

Expand Down Expand Up @@ -412,7 425,9 @@ def publish(dry_run: bool):

def get_packages(session: Session) -> dict[str, PackageInfo]:
packages: dict[str, PackageInfo] = {
"reactpy": PackageInfo(ROOT_DIR, "py", get_reactpy_package_version(session))
"reactpy": PackageInfo(
"reactpy", ROOT_DIR, "py", get_reactpy_package_version(session)
)
}

# collect javascript packages
Expand Down Expand Up @@ -441,12 456,13 @@ def get_packages(session: Session) -> dict[str, PackageInfo]:
if pkg_name in packages:
session.error(f"Duplicate package name {pkg_name}")

packages[pkg_name] = PackageInfo(pkg, "js", pkg_version)
packages[pkg_name] = PackageInfo(pkg_name, CLIENT_DIR, "js", pkg_version)

return packages


class PackageInfo(NamedTuple):
name: str
path: Path
language: LanguageName
version: str
Expand Down
2 changes: 1 addition & 1 deletion src/client/packages/@reactpy/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 8,7 @@
"type": "module",
"version": "0.2.0",
"dependencies": {
"event-to-object": "^0.1.0",
"event-to-object": "^0.1.1",
"json-pointer": "^0.6.2"
},
"devDependencies": {
Expand Down
5 changes: 2 additions & 3 deletions src/client/packages/event-to-object/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 4,10 @@
"main": "dist/index.js",
"types": "dist/index.d.ts",
"name": "event-to-object",
"description": "A client for ReactPy implemented in React",
"description": "Convert native events to JSON serializable objects",
"type": "module",
"version": "0.1.0",
"version": "0.1.1",
"dependencies": {
"event-to-object": "file:packages/event-to-object",
"json-pointer": "^0.6.2"
},
"devDependencies": {
Expand Down
6 changes: 2 additions & 4 deletions src/reactpy/backend/sanic.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 161,8 @@ def _setup_single_view_dispatcher_route(
async def model_stream(
request: request.Request, socket: WebSocketConnection, path: str = ""
) -> None:
app = request.app
try:
asgi_app = app._asgi_app
except AttributeError: # pragma: no cover
asgi_app = getattr(request.app, "_asgi_app", None)
if asgi_app is None: # pragma: no cover
logger.warning("No scope. Sanic may not be running with an ASGI server")
scope: MutableMapping[str, Any] = {}
else:
Expand Down

0 comments on commit 3a009b6

Please sign in to comment.