{"id":7155,"library":"developer-disk-image","title":"Developer Disk Image Downloader","description":"The 'developer-disk-image' Python library automates the download of Apple Developer Disk Images and Personalized Images. These images are essential for iOS development and debugging, allowing tools like Xcode to connect to devices running specific iOS versions. The library fetches these files directly from GitHub repositories. The current version is 0.2.0, with updates typically aligning with new iOS releases or Xcode versions.","status":"active","version":"0.2.0","language":"en","source_language":"en","source_url":"https://github.com/doronz88/DeveloperDiskImage","tags":["iOS","Xcode","DeveloperDiskImage","Apple","automation","github"],"install":[{"cmd":"pip install developer-disk-image","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"Used for making HTTP requests to download the actual disk image files.","package":"requests","optional":false},{"reason":"Used to interact with the GitHub API for listing releases and assets.","package":"PyGithub","optional":false}],"imports":[{"note":"Main function to download standard Developer Disk Images.","symbol":"download_latest_developer_disk_image_for_ios_version","correct":"from developer_disk_image import download_latest_developer_disk_image_for_ios_version"},{"note":"Main function to download Personalized Disk Images.","symbol":"download_latest_personalized_disk_image_for_ios_version","correct":"from developer_disk_image import download_latest_personalized_disk_image_for_ios_version"},{"note":"Custom exception for GitHub API rate limit issues.","symbol":"GithubRateLimitExceededError","correct":"from developer_disk_image.exceptions import GithubRateLimitExceededError"}],"quickstart":{"code":"import os\nfrom developer_disk_image import (\n    download_latest_developer_disk_image_for_ios_version,\n    download_latest_personalized_disk_image_for_ios_version,\n    GithubRateLimitExceededError\n)\n\n# It's highly recommended to use a GitHub token to avoid API rate limits.\n# You can generate one at https://github.com/settings/tokens\nGITHUB_TOKEN = os.environ.get('GITHUB_TOKEN', '')\n\noutput_directory = \".\"\nos.makedirs(output_directory, exist_ok=True)\n\ntry:\n    # Download a Developer Disk Image (e.g., for iOS 17.0)\n    print(\"Downloading Developer Disk Image for iOS 17.0...\")\n    dev_image_path = download_latest_developer_disk_image_for_ios_version(\n        version=\"17.0\",\n        github_token=GITHUB_TOKEN,\n        output_dir=output_directory,\n        verbose=True\n    )\n    print(f\"Developer Disk Image downloaded to: {dev_image_path}\")\n\n    # Download a Personalized Disk Image (e.g., for iOS 16.0)\n    print(\"\\nDownloading Personalized Disk Image for iOS 16.0...\")\n    pers_image_path = download_latest_personalized_disk_image_for_ios_version(\n        version=\"16.0\",\n        github_token=GITHUB_TOKEN,\n        output_dir=output_directory,\n        verbose=True\n    )\n    print(f\"Personalized Disk Image downloaded to: {pers_image_path}\")\n\nexcept GithubRateLimitExceededError:\n    print(\"GitHub API rate limit exceeded. Please provide a GitHub token in the GITHUB_TOKEN environment variable or as a parameter.\")\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n","lang":"python","description":"This quickstart demonstrates how to download both a Developer Disk Image and a Personalized Disk Image for specific iOS versions. It includes error handling for GitHub API rate limits and encourages the use of a `GITHUB_TOKEN` for robust operation."},"warnings":[{"fix":"Always provide a GitHub Personal Access Token (PAT) via the `github_token` parameter in download functions or by setting the `GITHUB_TOKEN` environment variable. Generate a PAT at `github.com/settings/tokens`.","message":"Frequent use without authentication will quickly hit GitHub's API rate limits, leading to `GithubRateLimitExceededError` and preventing further downloads.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure your version string (e.g., '17.0') is accurate. If a download fails, check the GitHub repository directly for the latest available versions and asset names. Implement robust error handling (e.g., for `GithubAssetNotFound`) in your scripts.","message":"The specific Developer Disk Image or Personalized Image files for an iOS version on GitHub may be updated, replaced, or removed. For instance, `v0.1.0` replaced the 15.8 image with 15.5 due to issues.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure you have sufficient disk space before initiating downloads. Use the `verbose=True` argument in the download functions to monitor the download progress and avoid assuming the script is stuck.","message":"Developer Disk Images are large files (often several gigabytes). Downloads can consume significant bandwidth and disk space, and may take a considerable amount of time depending on your network speed.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-16T00:00:00.000Z","next_check":"2026-07-15T00:00:00.000Z","problems":[{"fix":"Generate a GitHub Personal Access Token (PAT) from `github.com/settings/tokens` and provide it to the `github_token` parameter in the download functions or set it as the `GITHUB_TOKEN` environment variable.","cause":"You have exceeded GitHub's API rate limit for unauthenticated requests, often after a few dozen requests.","error":"developer_disk_image.exceptions.GithubRateLimitExceededError: Github API rate limit exceeded. Please provide a github_token."},{"fix":"Install the package using pip: `pip install developer-disk-image`.","cause":"The 'developer-disk-image' library is not installed in your current Python environment.","error":"ModuleNotFoundError: No module named 'developer_disk_image'"},{"fix":"Double-check the exact version string (e.g., '17.0' vs '17.0.0'). Verify the asset's existence and name directly on the GitHub repository page (https://github.com/doronz88/DeveloperDiskImage/releases).","cause":"The specified iOS version's Developer Disk Image or Personalized Image could not be located in the configured GitHub repository. This might be due to an incorrect version string or the asset being removed/renamed.","error":"developer_disk_image.exceptions.GithubAssetNotFound: Asset for version 'X.X' not found."}]}