{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "
\n \n

An easy-to-use & supercharged open-source experiment tracker

\n Aim logs your training runs, enables a beautiful UI to compare them and an API to query them programmatically.\n
\n\n
\n\n\n\n

\n About •\n Features •\n Demos •\n Examples •\n Quick Start •\n Documentation •\n Roadmap •\n Discord Community •\n Twitter\n

\n\n
\n \n [![Platform Support](https://img.shields.io/badge/platform-Linux%20%7C%20macOS-blue)]()\n [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/aim)](https://pypi.org/project/aim/)\n [![PyPI Package](https://img.shields.io/pypi/v/aim?color=yellow)](https://pypi.org/project/aim/)\n [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg)](https://opensource.org/licenses/Apache-2.0)\n [![PyPI Downloads](https://img.shields.io/pypi/dw/aim?color=green)](https://pypi.org/project/aim/)\n [![Issues](https://img.shields.io/github/issues/aimhubio/aim)](http://github.com/aimhubio/aim/issues)\n \n
\n\n
\n Integrates seamlessly with your favorite tools\n
\n
\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n
\n\n
\n
\n \n \n \n
\n\n# About Aim\n\n| Track and version ML runs | Visualize runs via beautiful UI | Query runs metadata via SDK |\n|:--------------------:|:------------------------:|:-------------------:|\n| | | |\n\nAim is an open-source, self-hosted ML experiment tracking tool. \nIt's good at tracking lots (1000s) of training runs and it allows you to compare them with a performant and beautiful UI.\n\nYou can use not only the great Aim UI but also its SDK to query your runs' metadata programmatically. \nThat's especially useful for automations and additional analysis on a Jupyter Notebook.\n\n\nAim's mission is to democratize AI dev tools.\n\n# Why use Aim?\n\n### Compare 100s of runs in a few clicks - build models faster\n\n- Compare, group and aggregate 100s of metrics thanks to effective visualizations.\n- Analyze, learn correlations and patterns between hparams and metrics.\n- Easy pythonic search to query the runs you want to explore.\n\n### Deep dive into details of each run for easy debugging\n\n- Hyperparameters, metrics, images, distributions, audio, text - all available at hand on an intuitive UI to understand the performance of your model.\n- Easily track plots built via your favourite visualisation tools, like plotly and matplotlib.\n- Analyze system resource usage to effectively utilize computational resources.\n\n### Have all relevant information organised and accessible for easy governance\n\n- Centralized dashboard to holistically view all your runs, their hparams and results.\n- Use SDK to query/access all your runs and tracked metadata.\n- You own your data - Aim is open source and self hosted.\n\n# Demos\n\n| Machine translation | lightweight-GAN |\n|:---:|:---:|\n| | |\n| Training logs of a neural translation model(from WMT'19 competition). | Training logs of 'lightweight' GAN, proposed in ICLR 2021. |\n\n| FastSpeech 2 | Simple MNIST |\n|:---:|:---:|\n| | |\n| Training logs of Microsoft's \"FastSpeech 2: Fast and High-Quality End-to-End Text to Speech\". | Simple MNIST training logs. |\n\n# Quick Start\n\nFollow the steps below to get started with Aim.\n\n**1. Install Aim on your training environment**\n\n```shell\npip3 install aim\n```\n\n**2. Integrate Aim with your code**\n\n```python\nfrom aim import Run\n\n# Initialize a new run\nrun = Run()\n\n# Log run parameters\nrun[\"hparams\"] = {\n \"learning_rate\": 0.001,\n \"batch_size\": 32,\n}\n\n# Log metrics\nfor i in range(10):\n run.track(i, name='loss', step=i, context={ \"subset\":\"train\" })\n run.track(i, name='acc', step=i, context={ \"subset\":\"train\" })\n```\n\n_See the full list of supported trackable objects(e.g. images, text, etc) [here](https://aimstack.readthedocs.io/en/latest/quick_start/supported_types.html)._\n\n**3. Run the training as usual and start Aim UI**\n\n```shell\naim up\n```\n\n**4. Or query runs programmatically via SDK**\n\n```python\nfrom aim import Repo\n\nmy_repo = Repo('/path/to/aim/repo')\n\nquery = \"metric.name == 'loss'\" # Example query\n\n# Get collection of metrics\nfor run_metrics_collection in my_repo.query_metrics(query).iter_runs():\n for metric in run_metrics_collection:\n # Get run params\n params = metric.run[...]\n # Get metric values\n steps, metric_values = metric.values.sparse_numpy()\n```\n\n# Integrations\n\n
\n\n Integrate PyTorch Lightning\n\n\n```python\nfrom aim.pytorch_lightning import AimLogger\n\n# ...\ntrainer = pl.Trainer(logger=AimLogger(experiment='experiment_name'))\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-pytorch-lightning)._\n\n
\n\n
\n\n Integrate Hugging Face\n\n\n```python\nfrom aim.hugging_face import AimCallback\n\n# ...\naim_callback = AimCallback(repo='/path/to/logs/dir', experiment='mnli')\ntrainer = Trainer(\n model=model,\n args=training_args,\n train_dataset=train_dataset if training_args.do_train else None,\n eval_dataset=eval_dataset if training_args.do_eval else None,\n callbacks=[aim_callback],\n # ...\n)\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-hugging-face)._\n\n
\n\n
\n\n Integrate Keras & tf.keras\n\n\n```python\nimport aim\n\n# ...\nmodel.fit(x_train, y_train, epochs=epochs, callbacks=[\n aim.keras.AimCallback(repo='/path/to/logs/dir', experiment='experiment_name')\n \n # Use aim.tensorflow.AimCallback in case of tf.keras\n aim.tensorflow.AimCallback(repo='/path/to/logs/dir', experiment='experiment_name')\n])\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-keras-tf-keras)._\n\n
\n\n
\n\n Integrate KerasTuner\n\n\n```python\nfrom aim.keras_tuner import AimCallback\n\n# ...\ntuner.search(\n train_ds,\n validation_data=test_ds,\n callbacks=[AimCallback(tuner=tuner, repo='.', experiment='keras_tuner_test')],\n)\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-kerastuner)._\n\n
\n\n
\n\n Integrate XGBoost\n\n\n```python\nfrom aim.xgboost import AimCallback\n\n# ...\naim_callback = AimCallback(repo='/path/to/logs/dir', experiment='experiment_name')\nbst = xgb.train(param, xg_train, num_round, watchlist, callbacks=[aim_callback])\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-xgboost)._\n
\n\n\n
\n\n Integrate CatBoost\n\n\n```python\nfrom aim.catboost import AimLogger\n\n# ...\nmodel.fit(train_data, train_labels, log_cout=AimLogger(loss_function='Logloss'), logging_level=\"Info\")\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-catboost)._\n
\n\n\n\n
\n\n Integrate fastai\n\n\n```python\nfrom aim.fastai import AimCallback\n\n# ...\nlearn = cnn_learner(dls, resnet18, pretrained=True,\n loss_func=CrossEntropyLossFlat(),\n metrics=accuracy, model_dir=\"/tmp/model/\",\n cbs=AimCallback(repo='.', experiment='fastai_test'))\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-fastai)._\n
\n\n\n
\n\n Integrate LightGBM\n\n\n```python\nfrom aim.lightgbm import AimCallback\n\n# ...\naim_callback = AimCallback(experiment='lgb_test')\naim_callback.experiment['hparams'] = params\n\ngbm = lgb.train(params,\n lgb_train,\n num_boost_round=20,\n valid_sets=lgb_eval,\n callbacks=[aim_callback, lgb.early_stopping(stopping_rounds=5)])\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-lightgbm)._\n
\n\n\n
\n\n Integrate PyTorch Ignite\n\n\n```python\nfrom aim.pytorch_ignite import AimLogger\n\n# ...\naim_logger = AimLogger()\n\naim_logger.log_params({\n \"model\": model.__class__.__name__,\n \"pytorch_version\": str(torch.__version__),\n \"ignite_version\": str(ignite.__version__),\n})\n\naim_logger.attach_output_handler(\n trainer,\n event_name=Events.ITERATION_COMPLETED,\n tag=\"train\",\n output_transform=lambda loss: {'loss': loss}\n)\n# ...\n```\n\n_See documentation [here](https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-pytorch-ignite)._\n
\n\n# Comparisons to familiar tools\n\n### Tensorboard\n**Training run comparison**\n\nOrder of magnitude faster training run comparison with Aim\n- The tracked params are first class citizens at Aim. You can search, group, aggregate via params - deeply explore all the tracked data (metrics, params, images) on the UI.\n- With tensorboard the users are forced to record those parameters in the training run name to be able to search and compare. This causes a super-tedius comparison experience and usability issues on the UI when there are many experiments and params. **TensorBoard doesn't have features to group, aggregate the metrics**\n\n**Scalability**\n\n- Aim is built to handle 1000s of training runs - both on the backend and on the UI.\n- TensorBoard becomes really slow and hard to use when a few hundred training runs are queried / compared.\n\n**Beloved TB visualizations to be added on Aim**\n\n- Embedding projector.\n- Neural network visualization.\n\n### MLFlow\nMLFlow is an end-to-end ML Lifecycle tool.\nAim is focused on training tracking.\nThe main differences of Aim and MLflow are around the UI scalability and run comparison features.\n\n**Run comparison**\n\n- Aim treats tracked parameters as first-class citizens. Users can query runs, metrics, images and filter using the params.\n- MLFlow does have a search by tracked config, but there are no grouping, aggregation, subplotting by hyparparams and other comparison features available.\n\n**UI Scalability**\n\n- Aim UI can handle several thousands of metrics at the same time smoothly with 1000s of steps. It may get shaky when you explore 1000s of metrics with 10000s of steps each. But we are constantly optimizing!\n- MLflow UI becomes slow to use when there are a few hundreds of runs.\n\n### Weights and Biases\n\nHosted vs self-hosted\n- Weights and Biases is a hosted closed-source MLOps platform.\n- Aim is self-hosted, free and open-source experiment tracking tool.\n\n# Roadmap\n\n## Detailed Sprints\n\n:sparkle: The [Aim product roadmap](https://github.com/orgs/aimhubio/projects/3)\n\n- The `Backlog` contains the issues we are going to choose from and prioritize weekly\n- The issues are mainly prioritized by the highly-requested features\n\n## High-level roadmap\n\nThe high-level features we are going to work on the next few months\n\n### Done\n - [x] Live updates (Shipped: _Oct 18 2021_)\n - [x] Images tracking and visualization (Start: _Oct 18 2021_, Shipped: _Nov 19 2021_)\n - [x] Distributions tracking and visualization (Start: _Nov 10 2021_, Shipped: _Dec 3 2021_)\n - [x] Jupyter integration (Start: _Nov 18 2021_, Shipped: _Dec 3 2021_)\n - [x] Audio tracking and visualization (Start: _Dec 6 2021_, Shipped: _Dec 17 2021_)\n - [x] Transcripts tracking and visualization (Start: _Dec 6 2021_, Shipped: _Dec 17 2021_)\n - [x] Plotly integration (Start: _Dec 1 2021_, Shipped: _Dec 17 2021_)\n - [x] Colab integration (Start: _Nov 18 2021_, Shipped: _Dec 17 2021_)\n - [x] Centralized tracking server (Start: _Oct 18 2021_, Shipped: _Jan 22 2022_)\n - [x] Tensorboard adaptor - visualize TensorBoard logs with Aim (Start: _Dec 17 2021_, Shipped: _Feb 3 2022_)\n - [x] Track git info, env vars, CLI arguments, dependencies (Start: _Jan 17 2022_, Shipped: _Feb 3 2022_)\n - [x] MLFlow adaptor (visualize MLflow logs with Aim) (Start: _Feb 14 2022_, Shipped: _Feb 22 2022_)\n - [x] Activeloop Hub integration (Start: _Feb 14 2022_, Shipped: _Feb 22 2022_)\n - [x] PyTorch-Ignite integration (Start: _Feb 14 2022_, Shipped: _Feb 22 2022_)\n - [x] Run summary and overview info(system params, CLI args, git info, ...) (Start: _Feb 14 2022_, Shipped: _Mar 9 2022_)\n - [x] Add DVC related metadata into aim run (Start: _Mar 7 2022_, Shipped: _Mar 26 2022_)\n - [x] Ability to attach notes to Run from UI (Start: _Mar 7 2022_, Shipped: _Apr 29 2022_)\n - [x] Fairseq integration (Start: _Mar 27 2022_, Shipped: _Mar 29 2022_)\n - [x] LightGBM integration (Start: _Apr 14 2022_, Shipped: _May 17 2022_)\n - [x] CatBoost integration (Start: _Apr 20 2022_, Shipped: _May 17 2022_)\n - [x] Run execution details(display stdout/stderr logs) (Start: _Apr 25 2022_, Shipped: _May 17 2022_)\n - [x] Long sequences(up to 5M of steps) support (Start: _Apr 25 2022_, Shipped: _Jun 22 2022_)\n - [x] Figures Explorer (Start: _Mar 1 2022_, Shipped: _Aug 21 2022_)\n - [x] Notify on stuck runs (Start: _Jul 22 2022_, Shipped: _Aug 21 2022_)\n - [x] Integration with KerasTuner (Start: _Aug 10 2022_, Shipped: _Aug 21 2022_)\n - [x] Integration with WandB (Start: _Aug 15 2022_, Shipped: _Aug 21 2022_)\n - [x] Stable remote tracking server (Start: _Jun 15 2022_, Shipped: _Aug 21 2022_)\n - [x] Integration with fast.ai (Start: _Aug 22 2022_, Shipped: _Oct 6 2022_)\n - [x] Integration with MXNet (Start: _Sep 20 2022_, Shipped: _Oct 6 2022_)\n - [x] Project overview page (Start: _Sep 1 2022_, Shipped: _Oct 6 2022_)\n\n### In Progress\n - [ ] Remote tracking server scaling (Start: _Sep 1 2022_)\n - [ ] Aim SDK low-level interface (Start: _Aug 22 2022_)\n\n### To Do\n\n**Aim UI**\n\n- Runs management\n - Runs explorer \u2013 query and visualize runs data(images, audio, distributions, ...) in a central dashboard\n- Explorers\n - Audio Explorer\n - Text Explorer\n - Distributions Explorer\n- Dashboards \u2013 customizable layouts with embedded explorers\n\n**SDK and Storage**\n\n- Scalability\n - Smooth UI and SDK experience with over 10.000 runs\n- Runs management\n - CLI interfaces\n - Reporting - runs summary and run details in a CLI compatible format\n - Manipulations \u2013 copy, move, delete runs, params and sequences\n\n**Integrations**\n\n- ML Frameworks:\n - Shortlist: MONAI, SpaCy, Raytune, PaddlePaddle\n- Datasets versioning tools\n - Shortlist: HuggingFace Datasets\n- Resource management tools\n - Shortlist: Kubeflow, Slurm\n- Workflow orchestration tools\n- Others: Hydra, Google MLMD, Streamlit, ...\n\n### On hold\n\n- scikit-learn integration\n- Cloud storage support \u2013 store runs blob(e.g. images) data on the cloud (Start: _Mar 21 2022_)\n- Artifact storage \u2013 store files, model checkpoints, and beyond (Start: _Mar 21 2022_)\n\n## Community\n\n### If you have questions\n\n1. [Read the docs](https://aimstack.readthedocs.io/en/latest/)\n2. [Open a feature request or report a bug](https://github.com/aimhubio/aim/issues)\n3. [Join Discord community server](https://community.aimstack.io/)\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "aim-with-auth-support", "package_url": "https://pypi.org/project/aim-with-auth-support/", "platform": null, "project_url": "https://pypi.org/project/aim-with-auth-support/", "project_urls": null, "release_url": "https://pypi.org/project/aim-with-auth-support/3.15.2.post13/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "A super-easy way to record, search and compare AI experiments.", "version": "3.15.2.post13", "yanked": false, "yanked_reason": null }, "last_serial": 16326412, "releases": { "3.14.4": [ { "comment_text": "", "digests": { "blake2b_256": "8a858bdb00105bd9d0e8431158b4a9ea0f5aa30e0db60ea269008ab458cd15b6", "md5": "be95edf42164fc2d91cdec1a79c28316", "sha256": "b79f41e82eee6bb9fc82e32b4f7c95982c9b8dc59d3b5a8eb5c62b246c84b5a0" }, "downloads": -1, "filename": "aim-with-auth-support-3.14.4.tar.gz", "has_sig": false, "md5_digest": "be95edf42164fc2d91cdec1a79c28316", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1464671, "upload_time": "2022-11-20T07:14:34", "upload_time_iso_8601": "2022-11-20T07:14:34.376020Z", "url": "https://files.pythonhosted.org/packages/8a/85/8bdb00105bd9d0e8431158b4a9ea0f5aa30e0db60ea269008ab458cd15b6/aim-with-auth-support-3.14.4.tar.gz", "yanked": false, "yanked_reason": null } ], "3.14.4.post1": [ { "comment_text": "", "digests": { "blake2b_256": "8449ffcf0275fd1f931635e981318b260c046162c1c3a468d39eaf0603cd6b10", "md5": "98e824c66220a4e9bddb4c7094c028a8", "sha256": "cf5560241c7daac871b9d9972c95430ecc5bf54ee0124b5164b9d0d3e0cff17c" }, "downloads": -1, "filename": "aim-with-auth-support-3.14.4.post1.tar.gz", "has_sig": false, "md5_digest": "98e824c66220a4e9bddb4c7094c028a8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1465052, "upload_time": "2022-12-09T14:15:10", "upload_time_iso_8601": "2022-12-09T14:15:10.843746Z", "url": "https://files.pythonhosted.org/packages/84/49/ffcf0275fd1f931635e981318b260c046162c1c3a468d39eaf0603cd6b10/aim-with-auth-support-3.14.4.post1.tar.gz", "yanked": false, "yanked_reason": null } ], "3.14.4.post2": [ { "comment_text": "", "digests": { "blake2b_256": "eddda8e387d86f29a9468c4a01bb391dc02ef7fcdc7a809f2cf91f15166beb6c", "md5": "a6b6e2cecf4873465e071b023b00d21d", "sha256": "fe648a78f0592f381e49ff90bd30f9e3ef27e4153dab1e1890b4a61ac883f580" }, "downloads": -1, "filename": "aim-with-auth-support-3.14.4.post2.tar.gz", "has_sig": false, "md5_digest": "a6b6e2cecf4873465e071b023b00d21d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1465059, "upload_time": "2022-12-09T14:17:17", "upload_time_iso_8601": "2022-12-09T14:17:17.432732Z", "url": "https://files.pythonhosted.org/packages/ed/dd/a8e387d86f29a9468c4a01bb391dc02ef7fcdc7a809f2cf91f15166beb6c/aim-with-auth-support-3.14.4.post2.tar.gz", "yanked": false, "yanked_reason": null } ], "3.14.4.post3": [ { "comment_text": "", "digests": { "blake2b_256": "6cea2e1bf68e5bb3a6197b5be570b67a35fc8f7a78a65085dc7953d050f122de", "md5": "94a286ae3e832a7b0f4b3dbebbd5370f", "sha256": "b609875a70db48d791a1bd650ee16cd35e3b8d573be25502925d8ffa279f8b52" }, "downloads": -1, "filename": "aim-with-auth-support-3.14.4.post3.tar.gz", "has_sig": false, "md5_digest": "94a286ae3e832a7b0f4b3dbebbd5370f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1466558, "upload_time": "2022-12-26T14:58:34", "upload_time_iso_8601": "2022-12-26T14:58:34.308429Z", "url": "https://files.pythonhosted.org/packages/6c/ea/2e1bf68e5bb3a6197b5be570b67a35fc8f7a78a65085dc7953d050f122de/aim-with-auth-support-3.14.4.post3.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post1": [ { "comment_text": "", "digests": { "blake2b_256": "71a0abe4cf633d1f81b0d96ed3b51cb3bfdef030aa1e755bc643640143e9b296", "md5": "f2ab4500ab625862b43184eb4076ce8f", "sha256": "c71e3a90e5c771d7108ef346358dfb71b6dd548b8dc1aa7b65649b2e35539ce3" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post1.tar.gz", "has_sig": false, "md5_digest": "f2ab4500ab625862b43184eb4076ce8f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1508022, "upload_time": "2022-12-27T08:28:08", "upload_time_iso_8601": "2022-12-27T08:28:08.038888Z", "url": "https://files.pythonhosted.org/packages/71/a0/abe4cf633d1f81b0d96ed3b51cb3bfdef030aa1e755bc643640143e9b296/aim-with-auth-support-3.15.2.post1.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post10": [ { "comment_text": "", "digests": { "blake2b_256": "2f3a2f94d4fe244493e9dc81f0ab8b19976d3b3a83ef5a7faca0096009a7cd99", "md5": "a9858bee3e77c142e4fd25e9662db8c3", "sha256": "b02b57cccc99f3f9536e340e89de5f3c3e7af9dc01c16cf8248e8882c3037af4" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post10.tar.gz", "has_sig": false, "md5_digest": "a9858bee3e77c142e4fd25e9662db8c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1509489, "upload_time": "2023-01-04T19:19:07", "upload_time_iso_8601": "2023-01-04T19:19:07.438594Z", "url": "https://files.pythonhosted.org/packages/2f/3a/2f94d4fe244493e9dc81f0ab8b19976d3b3a83ef5a7faca0096009a7cd99/aim-with-auth-support-3.15.2.post10.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post11": [ { "comment_text": "", "digests": { "blake2b_256": "407ce7f8ecf1dee7a0553c9be3102a44c658fe75aa08716c0fd5c7a4fcc152fe", "md5": "776cae18209ada201caa524acfde4450", "sha256": "3d8afd892699d0e8f9b8d930af9689580f9671d6952f8275c50edbe4ec83d6d0" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post11.tar.gz", "has_sig": false, "md5_digest": "776cae18209ada201caa524acfde4450", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1510775, "upload_time": "2023-01-05T04:10:07", "upload_time_iso_8601": "2023-01-05T04:10:07.542983Z", "url": "https://files.pythonhosted.org/packages/40/7c/e7f8ecf1dee7a0553c9be3102a44c658fe75aa08716c0fd5c7a4fcc152fe/aim-with-auth-support-3.15.2.post11.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post12": [ { "comment_text": "", "digests": { "blake2b_256": "bb293b54f7172f962d10f0bdde8b701722e90ee91e38511ebbf25c6c8be60621", "md5": "7c9da88abe224134a67efd731fe186e3", "sha256": "dc92463171864cd46b76ad690c8a11e04339c8f2369976113d4b874af7c4df21" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post12.tar.gz", "has_sig": false, "md5_digest": "7c9da88abe224134a67efd731fe186e3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1510756, "upload_time": "2023-01-05T17:41:19", "upload_time_iso_8601": "2023-01-05T17:41:19.138097Z", "url": "https://files.pythonhosted.org/packages/bb/29/3b54f7172f962d10f0bdde8b701722e90ee91e38511ebbf25c6c8be60621/aim-with-auth-support-3.15.2.post12.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post13": [ { "comment_text": "", "digests": { "blake2b_256": "dd72e0eb128759d70daf98e5a16e8fbf9034dc07f80ef8a56e64ab1fab896def", "md5": "18d929005373a32f2d8f09ea32fe257e", "sha256": "6b9f487591c5c1239a607f9813007f20fdb67bf8ccff1bd6be5a34e98fd97be2" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post13.tar.gz", "has_sig": false, "md5_digest": "18d929005373a32f2d8f09ea32fe257e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1510736, "upload_time": "2023-01-06T02:59:16", "upload_time_iso_8601": "2023-01-06T02:59:16.326512Z", "url": "https://files.pythonhosted.org/packages/dd/72/e0eb128759d70daf98e5a16e8fbf9034dc07f80ef8a56e64ab1fab896def/aim-with-auth-support-3.15.2.post13.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post2": [ { "comment_text": "", "digests": { "blake2b_256": "4b923c06b275a62a6f94664d17a68f931cc942453950c049f0ab1cb1a686466e", "md5": "51b4d5849c36d0911e9fe5f3f8ccf58d", "sha256": "c0c1ea6b0e728dbf0e651f358d3f6ffd03751e0a34b990a197ab1406ed95aa0e" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post2.tar.gz", "has_sig": false, "md5_digest": "51b4d5849c36d0911e9fe5f3f8ccf58d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1507949, "upload_time": "2022-12-27T09:16:26", "upload_time_iso_8601": "2022-12-27T09:16:26.666408Z", "url": "https://files.pythonhosted.org/packages/4b/92/3c06b275a62a6f94664d17a68f931cc942453950c049f0ab1cb1a686466e/aim-with-auth-support-3.15.2.post2.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post3": [ { "comment_text": "", "digests": { "blake2b_256": "22f16c667a1945e015907145c788e938eb22758b9ee251eb3bb78fcd1a3e09be", "md5": "e6755b020b8a3cca4e96219b1bfd94b6", "sha256": "6b82ce69311eeba702bbec862b86a3857eebd31b7fb0c925d2d6c22452a0725e" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post3.tar.gz", "has_sig": false, "md5_digest": "e6755b020b8a3cca4e96219b1bfd94b6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1508003, "upload_time": "2022-12-28T19:12:01", "upload_time_iso_8601": "2022-12-28T19:12:01.343777Z", "url": "https://files.pythonhosted.org/packages/22/f1/6c667a1945e015907145c788e938eb22758b9ee251eb3bb78fcd1a3e09be/aim-with-auth-support-3.15.2.post3.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post4": [ { "comment_text": "", "digests": { "blake2b_256": "99a5ba213c073f69974e9b7598efde61197ac790d65135f812a288b0f77c6009", "md5": "f55d72ab36cf497de158c03817de3ee2", "sha256": "c6a55414bf4e428ddb1c8d0096ffdb619eca0cbbc66700853378201bfce3e9dd" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post4.tar.gz", "has_sig": false, "md5_digest": "f55d72ab36cf497de158c03817de3ee2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1508025, "upload_time": "2022-12-29T09:24:09", "upload_time_iso_8601": "2022-12-29T09:24:09.553998Z", "url": "https://files.pythonhosted.org/packages/99/a5/ba213c073f69974e9b7598efde61197ac790d65135f812a288b0f77c6009/aim-with-auth-support-3.15.2.post4.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post5": [ { "comment_text": "", "digests": { "blake2b_256": "95e0a619a07b0d40c8d5e87ee1dadf55f9b2cff252c93b5e50c9e9066e263ed9", "md5": "2e1586c446b4195d0137678e5054b642", "sha256": "1bbb18da0b14caca533bac52e414d8388a7efb627feffa21b539d103603af9da" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post5.tar.gz", "has_sig": false, "md5_digest": "2e1586c446b4195d0137678e5054b642", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1508430, "upload_time": "2022-12-29T18:28:56", "upload_time_iso_8601": "2022-12-29T18:28:56.346586Z", "url": "https://files.pythonhosted.org/packages/95/e0/a619a07b0d40c8d5e87ee1dadf55f9b2cff252c93b5e50c9e9066e263ed9/aim-with-auth-support-3.15.2.post5.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post6": [ { "comment_text": "", "digests": { "blake2b_256": "d442a194173d720342bae33820ffa244f16df8205cba0452af12a9b2d5fa4bed", "md5": "e1a883ccf5f2c9527dc562f4b35555c3", "sha256": "a6bf05750780edd7048556117ff91705935e83cbfa1c6d2a06964efa35985cf3" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post6.tar.gz", "has_sig": false, "md5_digest": "e1a883ccf5f2c9527dc562f4b35555c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1508393, "upload_time": "2022-12-29T18:40:40", "upload_time_iso_8601": "2022-12-29T18:40:40.152024Z", "url": "https://files.pythonhosted.org/packages/d4/42/a194173d720342bae33820ffa244f16df8205cba0452af12a9b2d5fa4bed/aim-with-auth-support-3.15.2.post6.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post7": [ { "comment_text": "", "digests": { "blake2b_256": "87ad9bc2f3449e976d58fe7b369de9bdd85dc338ca1ebece5bd12049c3a4ff0c", "md5": "a2a9ea9cd341e7b4a472c6e27bd35563", "sha256": "cfc51d03e0a258ec9a649033c01e05a974cf0e33e2771514c777881fda0edf6a" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post7.tar.gz", "has_sig": false, "md5_digest": "a2a9ea9cd341e7b4a472c6e27bd35563", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1508371, "upload_time": "2022-12-29T18:41:47", "upload_time_iso_8601": "2022-12-29T18:41:47.235527Z", "url": "https://files.pythonhosted.org/packages/87/ad/9bc2f3449e976d58fe7b369de9bdd85dc338ca1ebece5bd12049c3a4ff0c/aim-with-auth-support-3.15.2.post7.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post8": [ { "comment_text": "", "digests": { "blake2b_256": "ec396a833b71be44f0a5b5b31320ba604fb3d27ae887efa3816278eb276cf489", "md5": "3a0e95d4c20e647b42d1e3c09bd752ad", "sha256": "a5ed4bff08a8d332fb1497ce0480c2203dd5d24ac8fdfb1696d73f859cf61c67" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post8.tar.gz", "has_sig": false, "md5_digest": "3a0e95d4c20e647b42d1e3c09bd752ad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1508751, "upload_time": "2023-01-01T13:42:00", "upload_time_iso_8601": "2023-01-01T13:42:00.132656Z", "url": "https://files.pythonhosted.org/packages/ec/39/6a833b71be44f0a5b5b31320ba604fb3d27ae887efa3816278eb276cf489/aim-with-auth-support-3.15.2.post8.tar.gz", "yanked": false, "yanked_reason": null } ], "3.15.2.post9": [ { "comment_text": "", "digests": { "blake2b_256": "12dbdbaad223d8037491b5a84262c2475323dd649d5c817e62fe49bf82ee5357", "md5": "8a6b1206ef2dffb0c6feb8bd8ce8ea2d", "sha256": "31541f6b387a6f5f8579bdc81c5521f52b584ee54f5ea3dcbd399af64a3272c5" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post9.tar.gz", "has_sig": false, "md5_digest": "8a6b1206ef2dffb0c6feb8bd8ce8ea2d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1508988, "upload_time": "2023-01-01T19:26:15", "upload_time_iso_8601": "2023-01-01T19:26:15.501828Z", "url": "https://files.pythonhosted.org/packages/12/db/dbaad223d8037491b5a84262c2475323dd649d5c817e62fe49bf82ee5357/aim-with-auth-support-3.15.2.post9.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "blake2b_256": "dd72e0eb128759d70daf98e5a16e8fbf9034dc07f80ef8a56e64ab1fab896def", "md5": "18d929005373a32f2d8f09ea32fe257e", "sha256": "6b9f487591c5c1239a607f9813007f20fdb67bf8ccff1bd6be5a34e98fd97be2" }, "downloads": -1, "filename": "aim-with-auth-support-3.15.2.post13.tar.gz", "has_sig": false, "md5_digest": "18d929005373a32f2d8f09ea32fe257e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 1510736, "upload_time": "2023-01-06T02:59:16", "upload_time_iso_8601": "2023-01-06T02:59:16.326512Z", "url": "https://files.pythonhosted.org/packages/dd/72/e0eb128759d70daf98e5a16e8fbf9034dc07f80ef8a56e64ab1fab896def/aim-with-auth-support-3.15.2.post13.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }