Skip to main content

Monaco Editor Assets

A Python package that provides easy access to Monaco Editor assets. Assets are automatically downloaded on first use, eliminating the need to bundle large files with the package. Optionally, the assets can be served by a local webserver on a custom port (MonacoServer); the required fastapi and uvicorn packages are installed together with monaco-assets.

Installation

python3 -m pip install monaco-assets
# or
uv pip install monaco-assets

Quick Start

import monaco_assets
server = monaco_assets.MonacoServer(port=8000)

Now, you can use http://localhost:8000/min/vs/loader.js in a webbrowser to see, e.g., loader.js. Please note that there are no directory listings, one has to directly address the file(s).

Cache Management

import monaco_assets

# Clear cache to free space before uninstalling the package
monaco_assets.clear_cache()

# Check whether the assets are already cached (no download needed)
if monaco_assets.has_cached_assets():
    ...
else:
    # a download will take place; e.g. show a progress indicator
    assets_path = monaco_assets.get_path(progress_callback=show_progress)

Download Progress

On a cold cache, get_path() downloads the Monaco Editor assets (~100 MB extracted). You can report the download progress in real time by passing a progress_callback that receives (bytes_downloaded, total_bytes):

import monaco_assets


def show_progress(done: int, total: int | None) -> None:
    if total is not None:
        print(f"\r{done / total:.0%} of {total / 2**20:.1f} MiB", end="", flush=True)
    else:
        print(f"\r{done / 2**20:.1f} MiB", end="", flush=True)


assets_path = monaco_assets.get_path(progress_callback=show_progress)

Notes:

  • The callback is only invoked if a download actually takes place; on a warm cache get_path() returns immediately without calling it. If you build progress UI around the call, check has_cached_assets() first to avoid showing it unnecessarily.
  • total_bytes is None if the server does not send a Content-Length header. The first chunk is always reported; further calls are throttled to at most one per 0.5 seconds, plus a final call when the download completes.
  • If you call get_path() from a background thread yourself, make the callback thread-safe accordingly.

Cache Locations

Assets are cached in platform-appropriate directories using the platformdirs library

How It Works

  1. First Use: When get_path() is called for the first time, the package:

    • Downloads Monaco Editor from npmjs.org
    • Verifies the download integrity with SHA1 hash
    • Extracts assets to the user cache directory
    • Returns the path to the assets
  2. Subsequent Uses: The package checks the cache and returns the existing assets path immediately.

Download Issues

If asset download fails:

  1. Check internet connectivity
  2. Verify firewall settings allow access to registry.npmjs.org
  3. Check disk space in cache directory

Cache Issues

Clear and re-download if corrupted.

monaco_assets.clear_cache()
assets_path = monaco_assets.get_path()

Version Correspondence

Version correspondence will be ensured after initial bugfixes.

Package Version Monaco Editor Version
0.5.1 0.54.0
0.7.0 0.54.0

Requirements

  • Python 3.10+
  • Internet connection (only for initial asset download)
  • ~100MB disk space for Monaco Editor assets

License

MIT License - see LICENSE file for details.

Monaco Editor is licensed under the MIT License by Microsoft Corporation.

Metadata

Release files for monaco-assets 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for monaco-assets 0.7.1
File Size Uploaded Provenance Actions
monaco_assets-0.7.1.tar.gz 6.0 kB Without provenance Details for monaco_assets-0.7.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for monaco-assets 0.7.1
File Interpreter ABI Platform Actions
monaco_assets-0.7.1-py3-none-any.whl Python 3 none any Details for monaco_assets-0.7.1-py3-none-any.whl

Total release size: 12.1 kB

Release files / monaco_assets-0.7.1.tar.gz

Download URL monaco_assets-0.7.1.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d6339b17888a12f32c9a86a81a2830c2426ddf5b11b05d5f04b99a8d73d3ad72
BLAKE2b-256 checksum
How to use checksums
99795f08c2c1bde800de255b5ddbfeeb00947a2003071e914b62946a31cbd20e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.8 {"installer":{"name":"uv","version":"0.12.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / monaco_assets-0.7.1-py3-none-any.whl

Download URL monaco_assets-0.7.1-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
243ee1513d62c0d93a5f859d21e6eb86ac8abdf7c93e19d0e19d0a0b696afd5f
BLAKE2b-256 checksum
How to use checksums
da8020e76cd7b20c4b9cecf2e064cb4aad3448d99bb3ae48a4f8f97f29c81634
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.8 {"installer":{"name":"uv","version":"0.12.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for monaco-assets 0.7.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.7.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page