tbp-nightly


Nametbp-nightly JSON
Version 2.22.1a20251114 PyPI version JSON
download
home_pagehttps://github.com/openxla/xprof-nightly
SummaryXProf Profiler Plugin
upload_time2025-11-14 10:27:57
maintainerNone
docs_urlNone
authorGoogle Inc.
requires_python!=3.0.*,!=3.1.*,>=2.7
licenseApache 2.0
keywords jax pytorch xla tensorflow tensorboard xprof-nightly profile plugin
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # XProf (+ Tensorboard Profiler Plugin)

XProf offers a number of tools to analyse and visualize the
performance of your model across multiple devices. Some of the tools include:

*   **Overview**: A high-level overview of the performance of your model. This
    is an aggregated overview for your host and all devices. It includes:
    *   Performance summary and breakdown of step times.
    *   A graph of individual step times.
    *   High level details of the run environment.
*   **Trace Viewer**: Displays a timeline of the execution of your model that shows:
    *   The duration of each op.
    *   Which part of the system (host or device) executed an op.
    *   The communication between devices.
*   **Memory Profile Viewer**: Monitors the memory usage of your model.
*   **Graph Viewer**: A visualization of the graph structure of HLOs of your model.

To learn more about the various XProf tools, check out the [XProf documentation](https://openxla.org/xprof)

## Demo
First time user? Come and check out this [Colab Demo](https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html).

## Quick Start

### Prerequisites

* xprof >= 2.20.0
* (optional) TensorBoard >= 2.20.0

Note: XProf requires access to the Internet to load the [Google Chart library](https://developers.google.com/chart/interactive/docs/basic_load_libs#basic-library-loading).
Some charts and tables may be missing if you run XProf entirely offline on
your local machine, behind a corporate firewall, or in a datacenter.

If you use Google Cloud to run your workloads, we recommend the
[xprofiler tool](https://github.com/AI-Hypercomputer/cloud-diagnostics-xprof).
It provides a streamlined profile collection and viewing experience using VMs
running XProf.

### Installation

To get the most recent release version of XProf, install it via pip:

```
$ pip install xprof
```

## Running XProf

XProf can be launched as a standalone server or used as a plugin within
TensorBoard. For large-scale use, it can be deployed in a distributed mode with
separate aggregator and worker instances ([more details on it later in the
doc](#distributed-profiling)).

### Command-Line Arguments

When launching XProf from the command line, you can use the following arguments:

*   **`logdir`** (optional): The directory containing XProf profile data (files
    ending in `.xplane.pb`). This can be provided as a positional argument or
    with `-l` or `--logdir`. If provided, XProf will load and display profiles
    from this directory. If omitted, XProf will start without loading any
    profiles, and you can dynamically load profiles using `session_path` or
    `run_path` URL parameters, as described in the [Log Directory
    Structure](#log-directory-structure) section.
*   **`-p <port>`**, **`--port <port>`**: The port for the XProf web server.
    Defaults to `8791`.
*   **`-gp <grpc_port>`**, **`--grpc_port <grpc_port>`**: The port for the gRPC
    server used for distributed processing. Defaults to `50051`. This must be
    different from `--port`.
*   **`-wsa <addresses>`**, **`--worker_service_address <addresses>`**: A
    comma-separated list of worker addresses (e.g., `host1:50051,host2:50051`)
    for distributed processing. Defaults to to `0.0.0.0:<grpc_port>`.
*   **`-hcpb`**, **`--hide_capture_profile_button`**: If set, hides the 'Capture
    Profile' button in the UI.

### Standalone

If you have profile data in a directory (e.g., `profiler/demo`), you can view it
by running:

```
$ xprof profiler/demo --port=6006
```

Or with the optional flag:

```
$ xprof --logdir=profiler/demo --port=6006
```

### With TensorBoard

If you have TensorBoard installed, you can run:

```
$ tensorboard --logdir=profiler/demo
```

If you are behind a corporate firewall, you may need to include the `--bind_all`
tensorboard flag.

Go to `localhost:6006/#profile` of your browser, you should now see the demo
overview page show up.
Congratulations! You're now ready to capture a profile.

### Log Directory Structure

When using XProf, profile data must be placed in a specific directory structure.
XProf expects `.xplane.pb` files to be in the following path:

```
<log_dir>/plugins/profile/<session_name>/
```

*   `<log_dir>`: This is the root directory that you supply to `tensorboard
    --logdir`.
*   `plugins/profile/`: This is a required subdirectory.
*   `<session_name>/`: Each subdirectory inside `plugins/profile/` represents a
    single profiling session. The name of this directory will appear in the
    TensorBoard UI dropdown to select the session.

**Example:**

If your log directory is structured like this:

```
/path/to/your/log_dir/
└── plugins/
    └── profile/
        ├── my_experiment_run_1/
        │   └── host0.xplane.pb
        └── benchmark_20251107/
            └── host1.xplane.pb
```

You would launch TensorBoard with:

```bash
tensorboard --logdir /path/to/your/log_dir/
```

The runs `my_experiment_run_1` and `benchmark_20251107` will be available in the
"Sessions" tab of the UI.

You can also dynamically load sessions from a GCS bucket or local filesystem by
passing URL parameters when loading XProf in your browser. This method works
whether or not you provided a `logdir` at startup and is useful for viewing
profiles from various locations without restarting XProf.

For example, if you start XProf with no log directory:

```bash
xprof
```

You can load sessions using the following URL parameters.

Assume you have profile data stored on GCS or locally, structured like this:

```
gs://your-bucket/profile_runs/
├── my_experiment_run_1/
│   ├── host0.xplane.pb
│   └── host1.xplane.pb
└── benchmark_20251107/
    └── host0.xplane.pb
```

There are two URL parameters you can use:

*   **`session_path`**: Use this to load a *single* session directly. The path
    should point to a directory containing `.xplane.pb` files for one session.

    *   GCS Example:
        `http://localhost:8791/?session_path=gs://your-bucket/profile_runs/my_experiment_run_1`
    *   Local Path Example:
                `http://localhost:8791/?session_path=/path/to/profile_runs/my_experiment_run_1`
    *   Result: XProf will load the `my_experiment_run_1`
                        session, and you will see its data in the UI.

*   **`run_path`**: Use this to point to a directory that contains *multiple*
    session directories.

    *   GCS Example:
        `http://localhost:8791/?run_path=gs://your-bucket/profile_runs/`
    *   Local Path Example:
        `http://localhost:8791/?run_path=/path/to/profile_runs/`
    *   Result: XProf will list all session directories found under `run_path`
        (i.e., `my_experiment_run_1` and `benchmark_20251107`) in the "Sessions"
    dropdown in the UI, allowing you to switch between them.

**Loading Precedence**

If multiple sources are provided, XProf uses the following order of precedence
to determine which profiles to load:

1.  **`session_path`** URL parameter
2.  **`run_path`** URL parameter
3.  **`logdir`** command-line argument

### Distributed Profiling

XProf supports distributed profile processing by using an aggregator that
distributes work to multiple XProf workers. This is useful for processing large
profiles or handling multiple users.

**Note**: Currently, distributed processing only benefits the following tools:
`overview_page`, `framework_op_stats`, `input_pipeline`, and `pod_viewer`.

**Note**: The ports used in these examples (`6006` for the aggregator HTTP
server, `9999` for the worker HTTP server, and `50051` for the worker gRPC
server) are suggestions and can be customized.

**Worker Node**

Each worker node should run XProf with a gRPC port exposed so it can receive
processing requests. You should also hide the capture button as workers are not
meant to be interacted with directly.

```
$ xprof --grpc_port=50051 --port=9999 --hide_capture_profile_button
```

**Aggregator Node**

The aggregator node runs XProf with the `--worker_service_address` flag pointing
to all available workers. Users will interact with aggregator node's UI.

```
$ xprof --worker_service_address=<worker1_ip>:50051,<worker2_ip>:50051 --port=6006 --logdir=profiler/demo
```

Replace `<worker1_ip>, <worker2_ip>` with the addresses of your worker machines.
Requests sent to the aggregator on port 6006 will be distributed among the
workers for processing.

For deploying a distributed XProf setup in a Kubernetes environment, see
[Kubernetes Deployment Guide](docs/kubernetes_deployment.md).

## Nightlies

Every night, a nightly version of the package is released under the name of
`xprof-nightly`. This package contains the latest changes made by the XProf
developers.

To install the nightly version of profiler:

```
$ pip uninstall xprof tensorboard-plugin-profile
$ pip install xprof-nightly
```

## Next Steps

* [JAX Profiling Guide](https://jax.readthedocs.io/en/latest/profiling.html#xprof-tensorboard-profiling)
* [PyTorch/XLA Profiling Guide](https://cloud.google.com/tpu/docs/pytorch-xla-performance-profiling-tpu-vm)
* [TensorFlow Profiling Guide](https://tensorflow.org/guide/profiler)
* [Cloud TPU Profiling Guide](https://cloud.google.com/tpu/docs/cloud-tpu-tools)
* [Colab Tutorial](https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras)
* [Tensorflow Colab](https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/openxla/xprof-nightly",
    "name": "tbp-nightly",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "!=3.0.*,!=3.1.*,>=2.7",
    "maintainer_email": null,
    "keywords": "jax pytorch xla tensorflow tensorboard xprof-nightly profile plugin",
    "author": "Google Inc.",
    "author_email": "packages@tensorflow.org",
    "download_url": null,
    "platform": null,
    "description": "# XProf (+ Tensorboard Profiler Plugin)\n\nXProf offers a number of tools to analyse and visualize the\nperformance of your model across multiple devices. Some of the tools include:\n\n*   **Overview**: A high-level overview of the performance of your model. This\n    is an aggregated overview for your host and all devices. It includes:\n    *   Performance summary and breakdown of step times.\n    *   A graph of individual step times.\n    *   High level details of the run environment.\n*   **Trace Viewer**: Displays a timeline of the execution of your model that shows:\n    *   The duration of each op.\n    *   Which part of the system (host or device) executed an op.\n    *   The communication between devices.\n*   **Memory Profile Viewer**: Monitors the memory usage of your model.\n*   **Graph Viewer**: A visualization of the graph structure of HLOs of your model.\n\nTo learn more about the various XProf tools, check out the [XProf documentation](https://openxla.org/xprof)\n\n## Demo\nFirst time user? Come and check out this [Colab Demo](https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html).\n\n## Quick Start\n\n### Prerequisites\n\n* xprof >= 2.20.0\n* (optional) TensorBoard >= 2.20.0\n\nNote: XProf requires access to the Internet to load the [Google Chart library](https://developers.google.com/chart/interactive/docs/basic_load_libs#basic-library-loading).\nSome charts and tables may be missing if you run XProf entirely offline on\nyour local machine, behind a corporate firewall, or in a datacenter.\n\nIf you use Google Cloud to run your workloads, we recommend the\n[xprofiler tool](https://github.com/AI-Hypercomputer/cloud-diagnostics-xprof).\nIt provides a streamlined profile collection and viewing experience using VMs\nrunning XProf.\n\n### Installation\n\nTo get the most recent release version of XProf, install it via pip:\n\n```\n$ pip install xprof\n```\n\n## Running XProf\n\nXProf can be launched as a standalone server or used as a plugin within\nTensorBoard. For large-scale use, it can be deployed in a distributed mode with\nseparate aggregator and worker instances ([more details on it later in the\ndoc](#distributed-profiling)).\n\n### Command-Line Arguments\n\nWhen launching XProf from the command line, you can use the following arguments:\n\n*   **`logdir`** (optional): The directory containing XProf profile data (files\n    ending in `.xplane.pb`). This can be provided as a positional argument or\n    with `-l` or `--logdir`. If provided, XProf will load and display profiles\n    from this directory. If omitted, XProf will start without loading any\n    profiles, and you can dynamically load profiles using `session_path` or\n    `run_path` URL parameters, as described in the [Log Directory\n    Structure](#log-directory-structure) section.\n*   **`-p <port>`**, **`--port <port>`**: The port for the XProf web server.\n    Defaults to `8791`.\n*   **`-gp <grpc_port>`**, **`--grpc_port <grpc_port>`**: The port for the gRPC\n    server used for distributed processing. Defaults to `50051`. This must be\n    different from `--port`.\n*   **`-wsa <addresses>`**, **`--worker_service_address <addresses>`**: A\n    comma-separated list of worker addresses (e.g., `host1:50051,host2:50051`)\n    for distributed processing. Defaults to to `0.0.0.0:<grpc_port>`.\n*   **`-hcpb`**, **`--hide_capture_profile_button`**: If set, hides the 'Capture\n    Profile' button in the UI.\n\n### Standalone\n\nIf you have profile data in a directory (e.g., `profiler/demo`), you can view it\nby running:\n\n```\n$ xprof profiler/demo --port=6006\n```\n\nOr with the optional flag:\n\n```\n$ xprof --logdir=profiler/demo --port=6006\n```\n\n### With TensorBoard\n\nIf you have TensorBoard installed, you can run:\n\n```\n$ tensorboard --logdir=profiler/demo\n```\n\nIf you are behind a corporate firewall, you may need to include the `--bind_all`\ntensorboard flag.\n\nGo to `localhost:6006/#profile` of your browser, you should now see the demo\noverview page show up.\nCongratulations! You're now ready to capture a profile.\n\n### Log Directory Structure\n\nWhen using XProf, profile data must be placed in a specific directory structure.\nXProf expects `.xplane.pb` files to be in the following path:\n\n```\n<log_dir>/plugins/profile/<session_name>/\n```\n\n*   `<log_dir>`: This is the root directory that you supply to `tensorboard\n    --logdir`.\n*   `plugins/profile/`: This is a required subdirectory.\n*   `<session_name>/`: Each subdirectory inside `plugins/profile/` represents a\n    single profiling session. The name of this directory will appear in the\n    TensorBoard UI dropdown to select the session.\n\n**Example:**\n\nIf your log directory is structured like this:\n\n```\n/path/to/your/log_dir/\n\u2514\u2500\u2500 plugins/\n    \u2514\u2500\u2500 profile/\n        \u251c\u2500\u2500 my_experiment_run_1/\n        \u2502   \u2514\u2500\u2500 host0.xplane.pb\n        \u2514\u2500\u2500 benchmark_20251107/\n            \u2514\u2500\u2500 host1.xplane.pb\n```\n\nYou would launch TensorBoard with:\n\n```bash\ntensorboard --logdir /path/to/your/log_dir/\n```\n\nThe runs `my_experiment_run_1` and `benchmark_20251107` will be available in the\n\"Sessions\" tab of the UI.\n\nYou can also dynamically load sessions from a GCS bucket or local filesystem by\npassing URL parameters when loading XProf in your browser. This method works\nwhether or not you provided a `logdir` at startup and is useful for viewing\nprofiles from various locations without restarting XProf.\n\nFor example, if you start XProf with no log directory:\n\n```bash\nxprof\n```\n\nYou can load sessions using the following URL parameters.\n\nAssume you have profile data stored on GCS or locally, structured like this:\n\n```\ngs://your-bucket/profile_runs/\n\u251c\u2500\u2500 my_experiment_run_1/\n\u2502   \u251c\u2500\u2500 host0.xplane.pb\n\u2502   \u2514\u2500\u2500 host1.xplane.pb\n\u2514\u2500\u2500 benchmark_20251107/\n    \u2514\u2500\u2500 host0.xplane.pb\n```\n\nThere are two URL parameters you can use:\n\n*   **`session_path`**: Use this to load a *single* session directly. The path\n    should point to a directory containing `.xplane.pb` files for one session.\n\n    *   GCS Example:\n        `http://localhost:8791/?session_path=gs://your-bucket/profile_runs/my_experiment_run_1`\n    *   Local Path Example:\n                `http://localhost:8791/?session_path=/path/to/profile_runs/my_experiment_run_1`\n    *   Result: XProf will load the `my_experiment_run_1`\n                        session, and you will see its data in the UI.\n\n*   **`run_path`**: Use this to point to a directory that contains *multiple*\n    session directories.\n\n    *   GCS Example:\n        `http://localhost:8791/?run_path=gs://your-bucket/profile_runs/`\n    *   Local Path Example:\n        `http://localhost:8791/?run_path=/path/to/profile_runs/`\n    *   Result: XProf will list all session directories found under `run_path`\n        (i.e., `my_experiment_run_1` and `benchmark_20251107`) in the \"Sessions\"\n    dropdown in the UI, allowing you to switch between them.\n\n**Loading Precedence**\n\nIf multiple sources are provided, XProf uses the following order of precedence\nto determine which profiles to load:\n\n1.  **`session_path`** URL parameter\n2.  **`run_path`** URL parameter\n3.  **`logdir`** command-line argument\n\n### Distributed Profiling\n\nXProf supports distributed profile processing by using an aggregator that\ndistributes work to multiple XProf workers. This is useful for processing large\nprofiles or handling multiple users.\n\n**Note**: Currently, distributed processing only benefits the following tools:\n`overview_page`, `framework_op_stats`, `input_pipeline`, and `pod_viewer`.\n\n**Note**: The ports used in these examples (`6006` for the aggregator HTTP\nserver, `9999` for the worker HTTP server, and `50051` for the worker gRPC\nserver) are suggestions and can be customized.\n\n**Worker Node**\n\nEach worker node should run XProf with a gRPC port exposed so it can receive\nprocessing requests. You should also hide the capture button as workers are not\nmeant to be interacted with directly.\n\n```\n$ xprof --grpc_port=50051 --port=9999 --hide_capture_profile_button\n```\n\n**Aggregator Node**\n\nThe aggregator node runs XProf with the `--worker_service_address` flag pointing\nto all available workers. Users will interact with aggregator node's UI.\n\n```\n$ xprof --worker_service_address=<worker1_ip>:50051,<worker2_ip>:50051 --port=6006 --logdir=profiler/demo\n```\n\nReplace `<worker1_ip>, <worker2_ip>` with the addresses of your worker machines.\nRequests sent to the aggregator on port 6006 will be distributed among the\nworkers for processing.\n\nFor deploying a distributed XProf setup in a Kubernetes environment, see\n[Kubernetes Deployment Guide](docs/kubernetes_deployment.md).\n\n## Nightlies\n\nEvery night, a nightly version of the package is released under the name of\n`xprof-nightly`. This package contains the latest changes made by the XProf\ndevelopers.\n\nTo install the nightly version of profiler:\n\n```\n$ pip uninstall xprof tensorboard-plugin-profile\n$ pip install xprof-nightly\n```\n\n## Next Steps\n\n* [JAX Profiling Guide](https://jax.readthedocs.io/en/latest/profiling.html#xprof-tensorboard-profiling)\n* [PyTorch/XLA Profiling Guide](https://cloud.google.com/tpu/docs/pytorch-xla-performance-profiling-tpu-vm)\n* [TensorFlow Profiling Guide](https://tensorflow.org/guide/profiler)\n* [Cloud TPU Profiling Guide](https://cloud.google.com/tpu/docs/cloud-tpu-tools)\n* [Colab Tutorial](https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras)\n* [Tensorflow Colab](https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras)\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "XProf Profiler Plugin",
    "version": "2.22.1a20251114",
    "project_urls": {
        "Homepage": "https://github.com/openxla/xprof-nightly"
    },
    "split_keywords": [
        "jax",
        "pytorch",
        "xla",
        "tensorflow",
        "tensorboard",
        "xprof-nightly",
        "profile",
        "plugin"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e8ee530bb6c0752ce0d1906ef952ad66a0bdd2d59672e0cd74409ef48ac52e91",
                "md5": "1ae3908a84ba21e68144a2568e20c385",
                "sha256": "7925f0ceaa6771f05b63a11854d670cb68a4ab37f00ce92c3fff890c9de9d351"
            },
            "downloads": -1,
            "filename": "tbp_nightly-2.22.1a20251114-cp310-none-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1ae3908a84ba21e68144a2568e20c385",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "!=3.0.*,!=3.1.*,>=2.7",
            "size": 5765,
            "upload_time": "2025-11-14T10:27:57",
            "upload_time_iso_8601": "2025-11-14T10:27:57.667050Z",
            "url": "https://files.pythonhosted.org/packages/e8/ee/530bb6c0752ce0d1906ef952ad66a0bdd2d59672e0cd74409ef48ac52e91/tbp_nightly-2.22.1a20251114-cp310-none-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7ffdbc07d203ffd5a7a1639b1385cd0fba23588eee763fc67d07eb12f0237a8e",
                "md5": "bf6517fea0228f1053805abc648c0f15",
                "sha256": "842b304422807c049c10c7745fb9a2ecdf2064f0b86babb5c464a0fcddd23dd2"
            },
            "downloads": -1,
            "filename": "tbp_nightly-2.22.1a20251114-cp311-none-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "bf6517fea0228f1053805abc648c0f15",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "!=3.0.*,!=3.1.*,>=2.7",
            "size": 5765,
            "upload_time": "2025-11-14T10:23:55",
            "upload_time_iso_8601": "2025-11-14T10:23:55.913780Z",
            "url": "https://files.pythonhosted.org/packages/7f/fd/bc07d203ffd5a7a1639b1385cd0fba23588eee763fc67d07eb12f0237a8e/tbp_nightly-2.22.1a20251114-cp311-none-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ee881434322a5db03ac40d2c5c931438a1cee8eabf814544dc344e15e71ed444",
                "md5": "e509033c4668ba760a98b933a270fe4b",
                "sha256": "97f8bbb3a2a38f4ecea9f85f7c2eed1282c65fdb94510da87ec49ce467d4b07b"
            },
            "downloads": -1,
            "filename": "tbp_nightly-2.22.1a20251114-cp312-none-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e509033c4668ba760a98b933a270fe4b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "!=3.0.*,!=3.1.*,>=2.7",
            "size": 5765,
            "upload_time": "2025-11-14T10:30:08",
            "upload_time_iso_8601": "2025-11-14T10:30:08.686117Z",
            "url": "https://files.pythonhosted.org/packages/ee/88/1434322a5db03ac40d2c5c931438a1cee8eabf814544dc344e15e71ed444/tbp_nightly-2.22.1a20251114-cp312-none-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "155a49ebd443f7d0ace9cc91946266363fa083f1436e28e0e62d2f1afca94e68",
                "md5": "6b4a4852951e3e642148370226880761",
                "sha256": "27aa4d6255ffc60520c0c4f7ff7e0133b655af8e7ef799e9436d3aed0893e6df"
            },
            "downloads": -1,
            "filename": "tbp_nightly-2.22.1a20251114-cp313-none-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "6b4a4852951e3e642148370226880761",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": "!=3.0.*,!=3.1.*,>=2.7",
            "size": 5765,
            "upload_time": "2025-11-14T10:27:38",
            "upload_time_iso_8601": "2025-11-14T10:27:38.882438Z",
            "url": "https://files.pythonhosted.org/packages/15/5a/49ebd443f7d0ace9cc91946266363fa083f1436e28e0e62d2f1afca94e68/tbp_nightly-2.22.1a20251114-cp313-none-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f658e9be6b09fa81f21bc7dd15622a5540a46470cf4c02679716a49e74637286",
                "md5": "794a097b97bb4e230cdb5d57977f48ea",
                "sha256": "1d00cb1058cbe1bd5479b229496daecfc4a160760a222231455571b27819ce6c"
            },
            "downloads": -1,
            "filename": "tbp_nightly-2.22.1a20251114-cp39-none-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "794a097b97bb4e230cdb5d57977f48ea",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "!=3.0.*,!=3.1.*,>=2.7",
            "size": 5765,
            "upload_time": "2025-11-14T10:22:49",
            "upload_time_iso_8601": "2025-11-14T10:22:49.712218Z",
            "url": "https://files.pythonhosted.org/packages/f6/58/e9be6b09fa81f21bc7dd15622a5540a46470cf4c02679716a49e74637286/tbp_nightly-2.22.1a20251114-cp39-none-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-14 10:27:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "openxla",
    "github_project": "xprof-nightly",
    "github_not_found": true,
    "lcname": "tbp-nightly"
}
        
Elapsed time: 0.73760s