{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "e6ee49c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# You will need the ISISDATA area in your environment to get the appropriate kernel paths\n",
    "import os\n",
    "os.environ[\"ISISDATA\"] = \"/Users/ahibl/working/astro/local_isis_data/\"\n",
    "os.environ[\"ISISTESTDATA\"] = \"/Users/ahibl/astro_efs/isis_testData/\"\n",
    "os.environ[\"ISISROOT\"] = \"/Users/ahibl/working/astro/ISIS3/build/\"\n",
    "os.environ[\"ALESPICEROOT\"] = \"/Users/ahibl/astro_efs/usgs_data/\"\n",
    "\n",
    "import spiceypy as spice\n",
    "import json\n",
    "import numpy as np\n",
    "import pvl\n",
    "\n",
    "import ale\n",
    "from ale.base import Driver\n",
    "from ale.base.label_isis import IsisLabel\n",
    "from ale.base.data_naif import NaifSpice\n",
    "from ale.base.type_distortion import RadialDistortion, NoDistortion\n",
    "from ale.base.type_sensor import Framer, LineScanner\n",
    "from ale.util import generate_kernels_from_cube\n",
    "from ale.base.type_sensor import Framer\n",
    "from ale.base.type_distortion import NoDistortion\n",
    "from ale.drivers.msl_drivers import MslMastcamPds3NaifSpiceDriver\n",
    "from ale.formatters.usgscsm_formatter import to_usgscsm\n",
    "\n",
    "from ale import util\n",
    "from ale.util import generate_kernels_from_cube\n",
    "from ale.drivers import AleJsonEncoder, load, loads\n",
    "from ale.formatters.formatter import to_isd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "6ef22a77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['/Users/ahibl/working/astro/local_isis_data//base/kernels/spk/de405.bsp',\n",
       " '/Users/ahibl/working/astro/local_isis_data//near/kernels/tspk/erosephem_1999004_2002181.bsp',\n",
       " '/Users/ahibl/working/astro/local_isis_data//near/kernels/spk/near_erosorbit_nav_v1.bsp',\n",
       " '/Users/ahibl/working/astro/local_isis_data//near/kernels/ck/near_2000056_v01.bc',\n",
       " '/Users/ahibl/working/astro/local_isis_data//near/kernels/fk/eros_fixed.tf',\n",
       " '/Users/ahibl/working/astro/local_isis_data//base/kernels/pck/pck00009.tpc',\n",
       " '/Users/ahibl/working/astro/local_isis_data//near/kernels/ik/msi15.ti',\n",
       " '/Users/ahibl/working/astro/local_isis_data//base/kernels/lsk/naif0012.tls',\n",
       " '/Users/ahibl/working/astro/local_isis_data//near/kernels/sclk/near_171.tsc',\n",
       " '/Users/ahibl/working/astro/local_isis_data//near/kernels/iak/msiAddendum002.ti']"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Generate kernels from an ISIS spiceinit'd label\n",
    "cube = \"/Users/ahibl/working/astro/img_data/MSI/cubes/ale/ale_spice01.cub\"\n",
    "kernels = generate_kernels_from_cube(cube, expand=True, format_as='list')\n",
    "kernels\n",
    "a\n",
    "# change to desired PDS3 image path\n",
    "#file_name = '/Users/ahibl/working/astro/img_data/0269ML0011790000106115E01_DRCX.lbl'\n",
    "\n",
    "# metakernels are furnished when entering the context (with block) with a driver instance\n",
    "# most driver constructors simply accept an image path \n",
    "#with MslMastcamPds3NaifSpiceDriver(file_name, props={'kernels': [\"/Users/ahibl/working/astro/rand/msl_2017_v01.tm\"]}) as driver:\n",
    "    # pass driver instance into formatter function\n",
    "    #usgscsmString = to_usgscsm(driver)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0721b82d",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'isis_isd' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn [4], line 2\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/Users/ahibl/working/astro/ISDs/msl_2.json\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mw\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m fp:\n\u001b[0;32m----> 2\u001b[0m     json\u001b[38;5;241m.\u001b[39mdump(\u001b[43misis_isd\u001b[49m, fp, \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m=\u001b[39mAleJsonEncoder, indent\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m)\n",
      "\u001b[0;31mNameError\u001b[0m: name 'isis_isd' is not defined"
     ]
    }
   ],
   "source": [
    "with open(\"/Users/ahibl/working/astro/ISDs/msl_2.json\", 'w') as fp:\n",
    "    json.dump(ale_isd, fp, cls=AleJsonEncoder, indent=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "2d21b857",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Build new driver in this cell\n",
    "\n",
    "class MsiIsisLabelNaifSpiceDriver(Framer, IsisLabel, NaifSpice, NoDistortion, Driver):\n",
    "    \n",
    "    @property\n",
    "    def instrument_id(self):\n",
    "        \"\"\"\n",
    "        Returns an instrument id for uniquely identifying the instrument,\n",
    "        but often also used to be piped into Spice Kernels to acquire\n",
    "        IKIDS. Therefor they are the same ID that Spice expects in bods2c\n",
    "        calls. Expect instrument_id to be defined in the IsisLabel mixin.\n",
    "        This should be a string of the form NEAR EARTH ASTEROID RENDEZVOUS\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        : str\n",
    "          instrument id\n",
    "        \"\"\"\n",
    "        lookup_table = {\n",
    "        \"MSI\": \"NEAR EARTH ASTEROID RENDEZVOUS\"\n",
    "        }\n",
    "        print(lookup_table[super().instrument_id])\n",
    "        return lookup_table[super().instrument_id]\n",
    "\n",
    "    @property\n",
    "    def sensor_name(self):\n",
    "        \"\"\"\n",
    "        Returns the name of the instrument\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        : str\n",
    "          instrument name\n",
    "        \"\"\"\n",
    "        return \"MULTI-SPECTRAL IMAGER\"\n",
    "\n",
    "    @property\n",
    "    def sensor_model_version(self):\n",
    "        \"\"\"\n",
    "        Returns ISIS sensor model version\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        : int\n",
    "          ISIS sensor model version\n",
    "        \"\"\"\n",
    "        return 1\n",
    "    \n",
    "    # Overridden to remove decimal and 2multiply by a factor of 100 helps remove 2 fields issue cleanly\n",
    "    @property\n",
    "    def spacecraft_clock_start_count(self):\n",
    "        \"\"\"\n",
    "        The spacecraft clock start count, frequently used to determine the start time\n",
    "        of the image.\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        : str\n",
    "          spacecraft clock start count\n",
    "        \"\"\"\n",
    "        if 'SpacecraftClockStartCount' in self.label['IsisCube']['Instrument']:\n",
    "            \n",
    "            return str(self.label['IsisCube']['Instrument']['SpacecraftClockStartCount'])\n",
    "        else:\n",
    "            return None\n",
    "\n",
    "    # Overridden to remove decimal and 2multiply by a factor of 100 helps remove 2 fields issue cleanly\n",
    "    @property\n",
    "    def spacecraft_clock_stop_count(self):\n",
    "        \"\"\"\n",
    "        The spacecraft clock stop count, frequently used to determine the stop time\n",
    "        of the image.\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        : str\n",
    "          spacecraft clock stop count\n",
    "        \"\"\"\n",
    "        if 'SpacecraftClockStopCount' in self.label['IsisCube']['Instrument']:\n",
    "            return str(self.label['IsisCube']['Instrument']['SpacecraftClockStopCount'] * 100).replace(\".\",\"\")\n",
    "        else:\n",
    "            return None\n",
    "\n",
    "    @property\n",
    "    def ephemeris_stop_time(self):\n",
    "        \"\"\"\n",
    "        Returns the sum of the starting ephemeris time and the exposure duration.\n",
    "        Expects ephemeris start time and exposure duration to be defined. These\n",
    "        should be double precision numbers containing the ephemeris start and\n",
    "        exposure duration of the image.\n",
    "        Returns\n",
    "        -------\n",
    "        : double\n",
    "          Ephemeris stop time for an image\n",
    "        \"\"\"\n",
    "        return self.ephemeris_start_time + self.exposure_duration\n",
    "    \n",
    "    @property\n",
    "    def ikid(self):\n",
    "        \"\"\"\n",
    "        Overridden to grab the ikid from the Isis Cube since there is no way to\n",
    "        obtain this value with a spice bods2c call. Isis sets this value during\n",
    "        ingestion, based on the original fits file.\n",
    "        \n",
    "        Returns\n",
    "        -------\n",
    "        : int\n",
    "          Naif ID used to for identifying the instrument in Spice kernels\n",
    "        \"\"\"\n",
    "        return self.label['IsisCube']['Kernels']['NaifFrameCode']\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "27ed1125",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pprint\n",
    "\n",
    "# Create ISD from ISIS label\n",
    "ale_file = \"/Users/ahibl/working/astro/img_data/MSI/cubes/ale/ale_spice01.cub\"\n",
    "#unspiced_file = \"/Users/ahibl/working/astro/img_data/MSI/ad_1.cub\"\n",
    "#isis_file = \"/Users/ahibl/working/astro/img_data/MSI/spicy_ad_1.cub\"\n",
    "\n",
    "with MsiIsisLabelNaifSpiceDriver(ale_file, props = {\"kernels\" : kernels}) as driver:\n",
    "    ale_isd = to_isd(driver)\n",
    "\n",
    "#with MsiIsisLabelNaifSpiceDriver(isis_file, props = {\"kernels\" : kernels}) as driver:\n",
    "    #isis_isd = to_isd(driver)\n",
    "\n",
    "#with MsiIsisLabelNaifSpiceDriver(unspiced_file, props = {\"kernels\" : kernels}) as driver:\n",
    "    #unspicy_isd = to_isd(driver)\n",
    "    \n",
    "#isds = [ale_isd, isis_isd, unspicy_isd]\n",
    "\n",
    "#pprint.pprint(isds[0])\n",
    "\n",
    "#print(\"\\n\\n\")\n",
    "\n",
    "#pprint.pprint(isds[1])\n",
    "\n",
    "#print(\"\\n\\n\")\n",
    "\n",
    "#pprint.pprint(isds[2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "24390fc9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# with open(\"/Users/ahibl/working/astro/ISDs/msl_1.json\", 'w') as fp:\n",
    "#     json.dump(usgscsmString, fp, cls=AleJsonEncoder, indent=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5c091e62",
   "metadata": {},
   "outputs": [],
   "source": [
    "file = \"/Users/ahibl/working/astro/ISIS3/isis/tests/data/near/msi2isis/test.cub\"\n",
    "\n",
    "with MsiIsisLabelNaifSpiceDriver(file, props = {\"kernels\" : kernels}) as driver:\n",
    "    #test area"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "71e5d6cb",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Write ISD to file\n",
    "with open(\"/Users/ahibl/working/astro/ISDs/msi_aled.json\", 'w') as fp:\n",
    "    json.dump(ale_isd, fp, cls=AleJsonEncoder, indent=2)\n",
    "#with open(\"/Users/ahibl/working/astro/ISDs/msi_isis.json\", 'w') as fp:\n",
    "#    json.dump(isis_isd, fp, cls=AleJsonEncoder, indent=2)\n",
    "#with open(\"/Users/ahibl/working/astro/ISDs/msi_unspiced.json\", 'w') as fp:\n",
    "#    json.dump(unspicy_isd, fp, cls=AleJsonEncoder, indent=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "85d6606d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Banana False False\n",
      "[<class 'ale.drivers.msi_drivers.MsiIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.osirisrex_drivers.OsirisRexCameraIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.galileo_drivers.GalileoSsiIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.clipper_drivers.ClipperEISNACFCIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.clipper_drivers.ClipperEISNACPBIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.clipper_drivers.ClipperEISWACFCIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.clipper_drivers.ClipperEISWACPBIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.dawn_drivers.DawnFcPds3NaifSpiceDriver'>, <class 'ale.drivers.co_drivers.CassiniIssIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.co_drivers.CassiniIssPds3LabelNaifSpiceDriver'>, <class 'ale.drivers.msl_drivers.MslMastcamPds3NaifSpiceDriver'>, <class 'ale.drivers.lro_drivers.LroLrocNacIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.lro_drivers.LroLrocNacPds3LabelNaifSpiceDriver'>, <class 'ale.drivers.lro_drivers.LroLrocWacIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.lro_drivers.LroMiniRfIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.mex_drivers.MexHrscIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver'>, <class 'ale.drivers.mex_drivers.MexSrcPds3NaifSpiceDriver'>, <class 'ale.drivers.viking_drivers.VikingIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.chandrayaan_drivers.Chandrayaan1M3IsisLabelNaifSpiceDriver'>, <class 'ale.drivers.mro_drivers.MroCrismIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.mro_drivers.MroCtxIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.mro_drivers.MroCtxPds3LabelNaifSpiceDriver'>, <class 'ale.drivers.mro_drivers.MroHiRiseIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.mro_drivers.MroMarciIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.nh_drivers.NewHorizonsLeisaIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.nh_drivers.NewHorizonsLorriIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.nh_drivers.NewHorizonsMvicIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.nh_drivers.NewHorizonsMvicTdiIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.selene_drivers.KaguyaMiIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.selene_drivers.KaguyaMiPds3NaifSpiceDriver'>, <class 'ale.drivers.selene_drivers.KaguyaTcPds3NaifSpiceDriver'>, <class 'ale.drivers.mess_drivers.MessengerMdisIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.mess_drivers.MessengerMdisPds3NaifSpiceDriver'>, <class 'ale.drivers.voyager_drivers.VoyagerCameraIsisLabelNaifSpiceDriver'>, <class 'ale.drivers.co_drivers.CassiniIssIsisLabelIsisSpiceDriver'>, <class 'ale.drivers.lro_drivers.LroLrocNacIsisLabelIsisSpiceDriver'>, <class 'ale.drivers.lro_drivers.LroLrocWacIsisLabelIsisSpiceDriver'>, <class 'ale.drivers.viking_drivers.VikingIsisLabelIsisSpiceDriver'>, <class 'ale.drivers.mro_drivers.MroCtxIsisLabelIsisSpiceDriver'>, <class 'ale.drivers.isis_ideal_drivers.IdealLsIsisLabelIsisSpiceDriver'>, <class 'ale.drivers.selene_drivers.KaguyaTcIsisLabelIsisSpiceDriver'>, <class 'ale.drivers.mess_drivers.MessengerMdisIsisLabelIsisSpiceDriver'>]\n",
      "Attempting to pre-parse label file\n",
      "First parse attempt failed with\n",
      "(LexerError(...), 'Expecting an Aggregation Block, an Assignment Statement, or an End Statement, but found \"+\" : line 366 column 42 (char 8915) near \"    = LT+S\\n \"')\n",
      "Successfully pre-parsed label file\n",
      "Trying <class 'ale.drivers.msi_drivers.MsiIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.osirisrex_drivers.OsirisRexCameraIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.galileo_drivers.GalileoSsiIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.clipper_drivers.ClipperEISNACFCIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.clipper_drivers.ClipperEISNACPBIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.clipper_drivers.ClipperEISWACFCIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.clipper_drivers.ClipperEISWACPBIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.dawn_drivers.DawnFcPds3NaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.co_drivers.CassiniIssIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.co_drivers.CassiniIssPds3LabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.msl_drivers.MslMastcamPds3NaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.lro_drivers.LroLrocNacIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.lro_drivers.LroLrocNacPds3LabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.lro_drivers.LroLrocWacIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.lro_drivers.LroMiniRfIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mex_drivers.MexHrscIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mex_drivers.MexHrscPds3NaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mex_drivers.MexSrcPds3NaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.viking_drivers.VikingIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.chandrayaan_drivers.Chandrayaan1M3IsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mro_drivers.MroCrismIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mro_drivers.MroCtxIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mro_drivers.MroCtxPds3LabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mro_drivers.MroHiRiseIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mro_drivers.MroMarciIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.nh_drivers.NewHorizonsLeisaIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.nh_drivers.NewHorizonsLorriIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.nh_drivers.NewHorizonsMvicIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.nh_drivers.NewHorizonsMvicTdiIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.selene_drivers.KaguyaMiIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.selene_drivers.KaguyaMiPds3NaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.selene_drivers.KaguyaTcPds3NaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mess_drivers.MessengerMdisIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mess_drivers.MessengerMdisPds3NaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.voyager_drivers.VoyagerCameraIsisLabelNaifSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.co_drivers.CassiniIssIsisLabelIsisSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.lro_drivers.LroLrocNacIsisLabelIsisSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.lro_drivers.LroLrocWacIsisLabelIsisSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.viking_drivers.VikingIsisLabelIsisSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mro_drivers.MroCtxIsisLabelIsisSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.isis_ideal_drivers.IdealLsIsisLabelIsisSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.selene_drivers.KaguyaTcIsisLabelIsisSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n",
      "Trying <class 'ale.drivers.mess_drivers.MessengerMdisIsisLabelIsisSpiceDriver'>\n",
      "Failed: Expecting value: line 1 column 1 (char 0)\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
      "Traceback (most recent call last):\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/drivers/__init__.py\", line 153, in load\n",
      "    res = driver(label, props=props, parsed_label=parsed_label)\n",
      "  File \"/Users/ahibl/working/astro/ale/ale/base/base.py\", line 26, in __init__\n",
      "    self._props = json.loads(props)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/__init__.py\", line 346, in loads\n",
      "    return _default_decoder.decode(s)\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 337, in decode\n",
      "    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n",
      "  File \"/Users/ahibl/homebrew/Caskroom/miniconda/base/envs/ale-dvlp/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n",
      "    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\n",
      "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n"
     ]
    },
    {
     "ename": "Exception",
     "evalue": "No Such Driver for Label",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mException\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn [3], line 2\u001b[0m\n\u001b[1;32m      1\u001b[0m file \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/Users/ahibl/working/astro/img_data/MSI/labels/ale_spice01.lbl\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m----> 2\u001b[0m \u001b[43male\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43male\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/working/astro/ale/ale/drivers/__init__.py:166\u001b[0m, in \u001b[0;36mload\u001b[0;34m(label, props, formatter, verbose, only_isis_spice, only_naif_spice)\u001b[0m\n\u001b[1;32m    164\u001b[0m             \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFailed: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m    165\u001b[0m             traceback\u001b[38;5;241m.\u001b[39mprint_exc()\n\u001b[0;32m--> 166\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mNo Such Driver for Label\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
      "\u001b[0;31mException\u001b[0m: No Such Driver for Label"
     ]
    }
   ],
   "source": [
    "file = '/Users/ahibl/working/astro/img_data/MSI/labels/ale_spice01.lbl'\n",
    "ale.load(file, \"ale\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "a1d84d0e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Object = IsisCube\n",
      "  Object = Core\n",
      "    StartByte   = 65537\n",
      "    Format      = Tile\n",
      "    TileSamples = 179\n",
      "    TileLines   = 412\n",
      "\n",
      "    Group = Dimensions\n",
      "      Samples = 537\n",
      "      Lines   = 412\n",
      "      Bands   = 1\n",
      "    End_Group\n",
      "\n",
      "    Group = Pixels\n",
      "      Type       = Real\n",
      "      ByteOrder  = Lsb\n",
      "      Base       = 0.0\n",
      "      Multiplier = 1.0\n",
      "    End_Group\n",
      "  End_Object\n",
      "\n",
      "  Group = Instrument\n",
      "    SpacecraftName                    = \"NEAR EARTH ASTEROID RENDEZVOUS\"\n",
      "    InstrumentId                      = MSI\n",
      "    TargetName                        = EROS\n",
      "    StartTime                         = 2000-02-25T05:16:12.656\n",
      "    StopTime                          = 2000-02-25T05:16:12.745\n",
      "    SpacecraftClockStartCount         = 126865998830\n",
      "    SpacecraftClockStopCount          = 126865998919\n",
      "    ExposureDuration                  = 89.00 <ms>\n",
      "    OriginalSpacecraftClockStartCount = 126865998.830\n",
      "    OriginalSpacecraftClockStopCount  = 126865998.919\n",
      "    DpuDeckTemperature                = 286.50 <K>\n",
      "  End_Group\n",
      "\n",
      "  Group = Archive\n",
      "    DataSetId          = NEAR-A-MSI-3-EDR-EROS/ORBIT-V1.0\n",
      "    ProducerFullName   = \"Scott L. Murchie\"\n",
      "    ProductId          = M0126865998F4_2P_IOF.FIT\n",
      "    ProductVersionId   = 1.0\n",
      "    InstrumentHostName = \"NEAR EARTH ASTEROID RENDEZVOUS\"\n",
      "    InstrumentName     = \"MULTI-SPECTRAL IMAGER\"\n",
      "    InstrumentId       = MSI\n",
      "    TargetName         = EROS\n",
      "  End_Group\n",
      "\n",
      "  Group = BandBin\n",
      "    FilterNumber = 4\n",
      "    Center       = 950 <nm>\n",
      "  End_Group\n",
      "\n",
      "  Group = Kernels\n",
      "    NaifFrameCode             = -93001\n",
      "    LeapSecond                = $base/kernels/lsk/naif0012.tls\n",
      "    TargetAttitudeShape       = $base/kernels/pck/pck00009.tpc\n",
      "    TargetPosition            = (Table, $base/kernels/spk/de405.bsp,\n",
      "                                 $near/kernels/tspk/erosephem_1999004_2002181.-\n",
      "                                 bsp)\n",
      "    InstrumentPointing        = (Table, $near/kernels/ck/near_2000056_v01.bc,\n",
      "                                 $near/kernels/fk/eros_fixed.tf)\n",
      "    Instrument                = $near/kernels/ik/msi15.ti\n",
      "    SpacecraftClock           = $near/kernels/sclk/near_171.tsc\n",
      "    InstrumentPosition        = (Table,\n",
      "                                 $near/kernels/spk/near_erosorbit_nav_v1.bsp)\n",
      "    InstrumentAddendum        = $near/kernels/iak/msiAddendum002.ti\n",
      "    ShapeModel                = Null\n",
      "    InstrumentPositionQuality = Reconstructed\n",
      "    InstrumentPointingQuality = Reconstructed\n",
      "    CameraVersion             = 2\n",
      "    Source                    = ale\n",
      "  End_Group\n",
      "End_Object\n",
      "\n",
      "Object = Label\n",
      "  Bytes = 65536\n",
      "End_Object\n",
      "\n",
      "Object = Table\n",
      "  Name                = InstrumentPointing\n",
      "  StartByte           = 955907\n",
      "  Bytes               = 128\n",
      "  Records             = 2\n",
      "  ByteOrder           = Lsb\n",
      "  TimeDependentFrames = (-93000, 1)\n",
      "  ConstantFrames      = (-93001, -93000)\n",
      "  ConstantRotation    = (-0.0014422521585656, 6.97819591591179e-07,\n",
      "                         0.99999895995357, -4.83840156360023e-04,\n",
      "                         -0.99999988294934, 0.0, 0.99999884290304,\n",
      "                         -4.83839653143797e-04, 0.0014422523273822)\n",
      "  CkTableStartTime    = 4727836.2200713\n",
      "  CkTableEndTime      = 4727837.220071\n",
      "  CkTableOriginalSize = 2\n",
      "  FrameTypeCode       = 3\n",
      "  Description         = \"Created by spiceinit\"\n",
      "  Kernels             = ($near/kernels/ck/near_2000056_v01.bc,\n",
      "                         $near/kernels/fk/eros_fixed.tf)\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Q0\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Q1\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Q2\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Q3\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = AV1\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = AV2\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = AV3\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = ET\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "End_Object\n",
      "\n",
      "Object = Table\n",
      "  Name                 = InstrumentPosition\n",
      "  StartByte            = 956035\n",
      "  Bytes                = 56\n",
      "  Records              = 1\n",
      "  ByteOrder            = Lsb\n",
      "  CacheType            = Linear\n",
      "  SpkTableStartTime    = 4727836.8855711\n",
      "  SpkTableEndTime      = 4727836.8855711\n",
      "  SpkTableOriginalSize = 1.0\n",
      "  Description          = \"Created by spiceinit\"\n",
      "  Kernels              = $near/kernels/spk/near_erosorbit_nav_v1.bsp\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000X\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Y\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Z\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000XV\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000YV\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000ZV\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = ET\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "End_Object\n",
      "\n",
      "Object = Table\n",
      "  Name                = BodyRotation\n",
      "  StartByte           = 956091\n",
      "  Bytes               = 64\n",
      "  Records             = 1\n",
      "  ByteOrder           = Lsb\n",
      "  TimeDependentFrames = (2000433, 1)\n",
      "  CkTableStartTime    = 4727836.8855711\n",
      "  CkTableEndTime      = 4727836.8855711\n",
      "  CkTableOriginalSize = 1\n",
      "  FrameTypeCode       = 3\n",
      "  Description         = \"Created by spiceinit\"\n",
      "  Kernels             = ($base/kernels/spk/de405.bsp,\n",
      "                         $near/kernels/tspk/erosephem_1999004_2002181.bsp,\n",
      "                         $base/kernels/pck/pck00009.tpc)\n",
      "  SolarLongitude      = 128.72797999357\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Q0\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Q1\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Q2\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Q3\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = AV1\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = AV2\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = AV3\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = ET\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "End_Object\n",
      "\n",
      "Object = Table\n",
      "  Name                 = SunPosition\n",
      "  StartByte            = 956155\n",
      "  Bytes                = 56\n",
      "  Records              = 1\n",
      "  ByteOrder            = Lsb\n",
      "  CacheType            = Linear\n",
      "  SpkTableStartTime    = 4727836.8855711\n",
      "  SpkTableEndTime      = 4727836.8855711\n",
      "  SpkTableOriginalSize = 1.0\n",
      "  Description          = \"Created by spiceinit\"\n",
      "  Kernels              = ($base/kernels/spk/de405.bsp,\n",
      "                          $near/kernels/tspk/erosephem_1999004_2002181.bsp)\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000X\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Y\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000Z\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000XV\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000YV\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = J2000ZV\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "\n",
      "  Group = Field\n",
      "    Name = ET\n",
      "    Type = Double\n",
      "    Size = 1\n",
      "  End_Group\n",
      "End_Object\n",
      "\n",
      "Object = History\n",
      "  Name      = IsisCube\n",
      "  StartByte = 956211\n",
      "  Bytes     = 2503\n",
      "End_Object\n",
      "\n",
      "Object = OriginalLabel\n",
      "  Name      = IsisCube\n",
      "  StartByte = 950513\n",
      "  Bytes     = 3820\n",
      "End_Object\n",
      "\n",
      "Object = NaifKeywords\n",
      "  BODY2000433_LONG_AXIS              = 0\n",
      "  BODY2000433_PM                     = (326.07, 1639.38864745, 0)\n",
      "  BODY2000433_POLE_DEC               = (17.22, 0, 0)\n",
      "  BODY2000433_POLE_RA                = (11.35, 0, 0)\n",
      "  BODY2000433_RADII                  = (17, 5.5, 5.5)\n",
      "  BODY_CODE                          = 2000433\n",
      "  BODY_FRAME_CODE                    = 2.00043e+06\n",
      "  FRAME_-93001_CENTER                = -93\n",
      "  FRAME_-93001_CLASS                 = 4\n",
      "  FRAME_-93001_CLASS_ID              = -93001\n",
      "  FRAME_-93001_NAME                  = NEAR_MSI\n",
      "  FRAME_2000433_CENTER               = 2.00043e+06\n",
      "  FRAME_2000433_CLASS                = 2\n",
      "  FRAME_2000433_CLASS_ID             = 2.00043e+06\n",
      "  FRAME_2000433_NAME                 = EROS_FIXED\n",
      "  INS-93001_BORESIGHT                = (1, 0, 0)\n",
      "  INS-93001_BORESIGHT_LINE           = 206.5\n",
      "  INS-93001_BORESIGHT_SAMPLE         = 269\n",
      "  INS-93001_FOCAL_LENGTH             = 166.85\n",
      "  INS-93001_FOV_BOUNDARY_CORNERS     = (1, 0.01974485714, 0.02575366124, 1,\n",
      "                                        -0.01974485714, 0.02575366124, 1,\n",
      "                                        -0.01974485714, -0.02575366124, 1)\n",
      "  INS-93001_FOV_FRAME                = NEAR_MSI\n",
      "  INS-93001_FOV_SHAPE                = POLYGON\n",
      "  INS-93001_FRAME_ID                 = -93001\n",
      "  INS-93001_ITRANSL                  = (0, 0, -62.5)\n",
      "  INS-93001_ITRANSS                  = (0, 62.5, 0)\n",
      "  INS-93001_K1                       = -7e-05\n",
      "  INS-93001_LIGHTTIME_CORRECTION     = LT+S\n",
      "  INS-93001_LT_SURFACE_CORRECT       = FALSE\n",
      "  INS-93001_PIXEL_PITCH              = 0.016\n",
      "  INS-93001_PLATFORM_ID              = -93000\n",
      "  INS-93001_SWAP_OBSERVER_TARGET     = TRUE\n",
      "  INS-93001_TRANSX                   = (0, 0.016, 0)\n",
      "  INS-93001_TRANSY                   = (0, 0, -0.016)\n",
      "  OBJECT_2000433_FRAME               = EROS_FIXED\n",
      "  TKFRAME_-93001_ANGLES              = (90, -179.972278, -0.082635)\n",
      "  TKFRAME_-93001_AXES                = (2, 1, 2)\n",
      "  TKFRAME_-93001_RELATIVE            = NEAR_SC_BUS_PRIME\n",
      "  TKFRAME_-93001_SPEC                = ANGLES\n",
      "  TKFRAME_-93001_UNITS               = DEGREES\n",
      "  CLOCK_ET_-93_126865998830_COMPUTED = eb1bd43507095241\n",
      "End_Object\n",
      "End\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open(file) as f:\n",
    "    print(f.read())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4e8eae81",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
