Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring code for Issue src/meta/config.js #89

Open
wants to merge 7 commits into
base: f24
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,275 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "13933ab3",
"metadata": {},
"source": [
"#Part 3 Demo of a RESTful access of the AccuWeather website with an API key\n",
"Step 1. Register on accuweather.com\n",
"Step2: Go to https://developer.accuweather.com/packages and get a free key (remember not to make too many calls - there is a limit)\n",
"Step 3: Use the key for working on Lab 2.3 (set the key in the file api_key.txt and read it into your code). "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "f48627a3-1f6d-42c6-aa20-a317b2843f28",
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"from pathlib import Path"
]
},
{
"cell_type": "markdown",
"id": "68a4114c-0e63-4339-b259-e7baa6453299",
"metadata": {},
"source": [
"# Get a free key from AccuWeather site (has limited services and limited number of trys in a day)\n",
"\n",
"Insert the file named api_key.txt with the key value and place the file in the same folder as this notebook"
]
},
{
"cell_type": "markdown",
"id": "dae2a1c5-86fa-450f-9372-ba2c45af9e56",
"metadata": {},
"source": [
"Q1. What does the following function return?\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "7cc88e49",
"metadata": {},
"source": [
"This function returns the contents of a file as a text without any trailing spaces or white spaces. It basically cleans the file."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "f46330f6-acd5-4d1c-84c5-9cb2f26bc424",
"metadata": {},
"outputs": [],
"source": [
"def read_api_key(filepath):\n",
" # Feel free to modify this function if you are storing the API Key differently\n",
" return Path(filepath).read_text().strip()"
]
},
{
"cell_type": "markdown",
"id": "2767380a-06de-4d96-b6ae-fa86d177185e",
"metadata": {},
"source": [
"Q2. What does the following function return?\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "6de86387",
"metadata": {},
"source": [
"This function returns the city code for a specified city by querying the AccuWeather API. However, if the API does not work it prints an error message and returns 0."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "cf895b5c-42df-4aa9-a2c1-d9dd69c34ebf",
"metadata": {},
"outputs": [],
"source": [
"def get_citycode(citystring, api_key):\n",
" url=f\"http://dataservice.accuweather.com/locations/v1/cities/search?apikey={api_key}&q={citystring}\"\n",
" response = requests.get(url)\n",
" if response.status_code == 200:\n",
" data = response.json()\n",
" print(data)\n",
" return data[0]['Key']#271669\n",
" else:\n",
" print(\"Failed to retrieve data from: \"+ url+ \"\\n\"+ str(response))\n",
" return 0\n"
]
},
{
"cell_type": "markdown",
"id": "af302688-c771-46df-a303-ce92c7967701",
"metadata": {},
"source": [
"Q3. What does the following function return?\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "44276518",
"metadata": {},
"source": [
"The following function returns the weather forecast for a specific city using the AccuWeather API. However, if the API does not work then it prints an error message."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "ebba52c6-752a-4e30-8c34-065f31f0e9d4",
"metadata": {},
"outputs": [],
"source": [
"def get_weather(api_key, city_code):\n",
" url = f\"http://dataservice.accuweather.com/forecasts/v1/daily/1day/{city_code}?apikey={api_key}&details=true&metric=true\"\n",
" response = requests.get(url)\n",
" if response.status_code == 200:\n",
" data = response.json()\n",
" print(data)\n",
" return data\n",
" else:\n",
" print(\"Failed to retrieve data\")\n",
" print(url)\n",
" print(response)"
]
},
{
"cell_type": "markdown",
"id": "ee7bc35b-cfa7-40a0-8782-2561a4a890a7",
"metadata": {},
"source": [
"Q4. Explain the code in the following cell\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "d4e9dc8c",
"metadata": {},
"source": [
"The code in the cell uses the functions that we previously defined to read an API key from a file that we input. Then it uses it to get the city code of a specified city."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "57e14ff2-29bf-43fa-9dfd-a8f9622dca05",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[{'Version': 1, 'Key': '1310', 'Type': 'City', 'Rank': 35, 'LocalizedName': 'Pittsburgh', 'EnglishName': 'Pittsburgh', 'PrimaryPostalCode': '15219', 'Region': {'ID': 'NAM', 'LocalizedName': 'North America', 'EnglishName': 'North America'}, 'Country': {'ID': 'US', 'LocalizedName': 'United States', 'EnglishName': 'United States'}, 'AdministrativeArea': {'ID': 'PA', 'LocalizedName': 'Pennsylvania', 'EnglishName': 'Pennsylvania', 'Level': 1, 'LocalizedType': 'State', 'EnglishType': 'State', 'CountryID': 'US'}, 'TimeZone': {'Code': 'EDT', 'Name': 'America/New_York', 'GmtOffset': -4.0, 'IsDaylightSaving': True, 'NextOffsetChange': '2024-11-03T06:00:00Z'}, 'GeoPosition': {'Latitude': 40.441, 'Longitude': -79.996, 'Elevation': {'Metric': {'Value': 219.0, 'Unit': 'm', 'UnitType': 5}, 'Imperial': {'Value': 718.0, 'Unit': 'ft', 'UnitType': 0}}}, 'IsAlias': False, 'SupplementalAdminAreas': [{'Level': 2, 'LocalizedName': 'Allegheny', 'EnglishName': 'Allegheny'}], 'DataSets': ['AirQualityCurrentConditions', 'AirQualityForecasts', 'Alerts', 'DailyAirQualityForecast', 'DailyPollenForecast', 'ForecastConfidence', 'FutureRadar', 'MinuteCast', 'ProximityNotification-Lightning', 'Radar']}]\n",
"City code: 1310\n"
]
}
],
"source": [
"api_key = read_api_key(filepath='''/Users/reemkonsowa/Desktop/api/api-key.txt''') # Replace the file with your actual API key\n",
"city_string=\"Pittsburgh, PA\"\n",
"city_code = get_citycode(city_string, api_key)\n",
"print(f\"City code: {city_code}\")"
]
},
{
"cell_type": "markdown",
"id": "c67d3a1e-cd18-43be-be6d-132c81c6f50a",
"metadata": {},
"source": [
"Q5. Explain the code in the following cell\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "8a225ec2",
"metadata": {},
"source": [
"The code in the following cell prints the weather information of a specific city. It stores different information that is being retrieved from other functions and then prints it. "
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "f8e616f3-c37f-4865-a3e8-f60324763a9f",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'Headline': {'EffectiveDate': '2024-09-07T08:00:00-04:00', 'EffectiveEpochDate': 1725710400, 'Severity': 4, 'Text': 'Noticeably cooler Saturday', 'Category': 'cooler', 'EndDate': '2024-09-07T20:00:00-04:00', 'EndEpochDate': 1725753600, 'MobileLink': 'http://www.accuweather.com/en/us/pittsburgh-pa/15219/daily-weather-forecast/1310?unit=c&lang=en-us', 'Link': 'http://www.accuweather.com/en/us/pittsburgh-pa/15219/daily-weather-forecast/1310?unit=c&lang=en-us'}, 'DailyForecasts': [{'Date': '2024-09-05T07:00:00-04:00', 'EpochDate': 1725534000, 'Sun': {'Rise': '2024-09-05T06:52:00-04:00', 'EpochRise': 1725533520, 'Set': '2024-09-05T19:44:00-04:00', 'EpochSet': 1725579840}, 'Moon': {'Rise': '2024-09-05T09:13:00-04:00', 'EpochRise': 1725541980, 'Set': '2024-09-05T20:50:00-04:00', 'EpochSet': 1725583800, 'Phase': 'WaxingCrescent', 'Age': 3}, 'Temperature': {'Minimum': {'Value': 14.3, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 28.3, 'Unit': 'C', 'UnitType': 17}}, 'RealFeelTemperature': {'Minimum': {'Value': 14.0, 'Unit': 'C', 'UnitType': 17, 'Phrase': 'Cool'}, 'Maximum': {'Value': 30.4, 'Unit': 'C', 'UnitType': 17, 'Phrase': 'Very Warm'}}, 'RealFeelTemperatureShade': {'Minimum': {'Value': 14.0, 'Unit': 'C', 'UnitType': 17, 'Phrase': 'Cool'}, 'Maximum': {'Value': 27.0, 'Unit': 'C', 'UnitType': 17, 'Phrase': 'Very Warm'}}, 'HoursOfSun': 12.7, 'DegreeDaySummary': {'Heating': {'Value': 0.0, 'Unit': 'C', 'UnitType': 17}, 'Cooling': {'Value': 3.0, 'Unit': 'C', 'UnitType': 17}}, 'AirAndPollen': [{'Name': 'AirQuality', 'Value': 46, 'Category': 'Good', 'CategoryValue': 1, 'Type': 'Nitrogen Dioxide'}, {'Name': 'Grass', 'Value': 12, 'Category': 'Moderate', 'CategoryValue': 2}, {'Name': 'Mold', 'Value': 0, 'Category': 'Low', 'CategoryValue': 1}, {'Name': 'Ragweed', 'Value': 30, 'Category': 'Moderate', 'CategoryValue': 2}, {'Name': 'Tree', 'Value': 0, 'Category': 'Low', 'CategoryValue': 1}, {'Name': 'UVIndex', 'Value': 6, 'Category': 'High', 'CategoryValue': 3}], 'Day': {'Icon': 1, 'IconPhrase': 'Sunny', 'HasPrecipitation': False, 'ShortPhrase': 'Plenty of sunshine', 'LongPhrase': 'Plenty of sunshine', 'PrecipitationProbability': 0, 'ThunderstormProbability': 0, 'RainProbability': 0, 'SnowProbability': 0, 'IceProbability': 0, 'Wind': {'Speed': {'Value': 9.3, 'Unit': 'km/h', 'UnitType': 7}, 'Direction': {'Degrees': 128, 'Localized': 'SE', 'English': 'SE'}}, 'WindGust': {'Speed': {'Value': 20.4, 'Unit': 'km/h', 'UnitType': 7}, 'Direction': {'Degrees': 116, 'Localized': 'ESE', 'English': 'ESE'}}, 'TotalLiquid': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'Rain': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'Snow': {'Value': 0.0, 'Unit': 'cm', 'UnitType': 4}, 'Ice': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'HoursOfPrecipitation': 0.0, 'HoursOfRain': 0.0, 'HoursOfSnow': 0.0, 'HoursOfIce': 0.0, 'CloudCover': 1, 'Evapotranspiration': {'Value': 4.6, 'Unit': 'mm', 'UnitType': 3}, 'SolarIrradiance': {'Value': 7194.5, 'Unit': 'W/m²', 'UnitType': 33}, 'RelativeHumidity': {'Minimum': 31, 'Maximum': 75, 'Average': 45}, 'WetBulbTemperature': {'Minimum': {'Value': 12.2, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 17.0, 'Unit': 'C', 'UnitType': 17}, 'Average': {'Value': 15.9, 'Unit': 'C', 'UnitType': 17}}, 'WetBulbGlobeTemperature': {'Minimum': {'Value': 14.4, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 23.2, 'Unit': 'C', 'UnitType': 17}, 'Average': {'Value': 20.6, 'Unit': 'C', 'UnitType': 17}}}, 'Night': {'Icon': 33, 'IconPhrase': 'Clear', 'HasPrecipitation': False, 'ShortPhrase': 'Clear', 'LongPhrase': 'Clear', 'PrecipitationProbability': 2, 'ThunderstormProbability': 0, 'RainProbability': 2, 'SnowProbability': 0, 'IceProbability': 0, 'Wind': {'Speed': {'Value': 9.3, 'Unit': 'km/h', 'UnitType': 7}, 'Direction': {'Degrees': 129, 'Localized': 'SE', 'English': 'SE'}}, 'WindGust': {'Speed': {'Value': 14.8, 'Unit': 'km/h', 'UnitType': 7}, 'Direction': {'Degrees': 113, 'Localized': 'ESE', 'English': 'ESE'}}, 'TotalLiquid': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'Rain': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'Snow': {'Value': 0.0, 'Unit': 'cm', 'UnitType': 4}, 'Ice': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'HoursOfPrecipitation': 0.0, 'HoursOfRain': 0.0, 'HoursOfSnow': 0.0, 'HoursOfIce': 0.0, 'CloudCover': 0, 'Evapotranspiration': {'Value': 0.5, 'Unit': 'mm', 'UnitType': 3}, 'SolarIrradiance': {'Value': 71.4, 'Unit': 'W/m²', 'UnitType': 33}, 'RelativeHumidity': {'Minimum': 43, 'Maximum': 89, 'Average': 69}, 'WetBulbTemperature': {'Minimum': {'Value': 13.5, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 16.3, 'Unit': 'C', 'UnitType': 17}, 'Average': {'Value': 14.9, 'Unit': 'C', 'UnitType': 17}}, 'WetBulbGlobeTemperature': {'Minimum': {'Value': 15.2, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 21.0, 'Unit': 'C', 'UnitType': 17}, 'Average': {'Value': 17.6, 'Unit': 'C', 'UnitType': 17}}}, 'Sources': ['AccuWeather'], 'MobileLink': 'http://www.accuweather.com/en/us/pittsburgh-pa/15219/daily-weather-forecast/1310?day=1&unit=c&lang=en-us', 'Link': 'http://www.accuweather.com/en/us/pittsburgh-pa/15219/daily-weather-forecast/1310?day=1&unit=c&lang=en-us'}]}\n",
"{'Headline': {'EffectiveDate': '2024-09-07T08:00:00-04:00', 'EffectiveEpochDate': 1725710400, 'Severity': 4, 'Text': 'Noticeably cooler Saturday', 'Category': 'cooler', 'EndDate': '2024-09-07T20:00:00-04:00', 'EndEpochDate': 1725753600, 'MobileLink': 'http://www.accuweather.com/en/us/pittsburgh-pa/15219/daily-weather-forecast/1310?unit=c&lang=en-us', 'Link': 'http://www.accuweather.com/en/us/pittsburgh-pa/15219/daily-weather-forecast/1310?unit=c&lang=en-us'}, 'DailyForecasts': [{'Date': '2024-09-05T07:00:00-04:00', 'EpochDate': 1725534000, 'Sun': {'Rise': '2024-09-05T06:52:00-04:00', 'EpochRise': 1725533520, 'Set': '2024-09-05T19:44:00-04:00', 'EpochSet': 1725579840}, 'Moon': {'Rise': '2024-09-05T09:13:00-04:00', 'EpochRise': 1725541980, 'Set': '2024-09-05T20:50:00-04:00', 'EpochSet': 1725583800, 'Phase': 'WaxingCrescent', 'Age': 3}, 'Temperature': {'Minimum': {'Value': 14.3, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 28.3, 'Unit': 'C', 'UnitType': 17}}, 'RealFeelTemperature': {'Minimum': {'Value': 14.0, 'Unit': 'C', 'UnitType': 17, 'Phrase': 'Cool'}, 'Maximum': {'Value': 30.4, 'Unit': 'C', 'UnitType': 17, 'Phrase': 'Very Warm'}}, 'RealFeelTemperatureShade': {'Minimum': {'Value': 14.0, 'Unit': 'C', 'UnitType': 17, 'Phrase': 'Cool'}, 'Maximum': {'Value': 27.0, 'Unit': 'C', 'UnitType': 17, 'Phrase': 'Very Warm'}}, 'HoursOfSun': 12.7, 'DegreeDaySummary': {'Heating': {'Value': 0.0, 'Unit': 'C', 'UnitType': 17}, 'Cooling': {'Value': 3.0, 'Unit': 'C', 'UnitType': 17}}, 'AirAndPollen': [{'Name': 'AirQuality', 'Value': 46, 'Category': 'Good', 'CategoryValue': 1, 'Type': 'Nitrogen Dioxide'}, {'Name': 'Grass', 'Value': 12, 'Category': 'Moderate', 'CategoryValue': 2}, {'Name': 'Mold', 'Value': 0, 'Category': 'Low', 'CategoryValue': 1}, {'Name': 'Ragweed', 'Value': 30, 'Category': 'Moderate', 'CategoryValue': 2}, {'Name': 'Tree', 'Value': 0, 'Category': 'Low', 'CategoryValue': 1}, {'Name': 'UVIndex', 'Value': 6, 'Category': 'High', 'CategoryValue': 3}], 'Day': {'Icon': 1, 'IconPhrase': 'Sunny', 'HasPrecipitation': False, 'ShortPhrase': 'Plenty of sunshine', 'LongPhrase': 'Plenty of sunshine', 'PrecipitationProbability': 0, 'ThunderstormProbability': 0, 'RainProbability': 0, 'SnowProbability': 0, 'IceProbability': 0, 'Wind': {'Speed': {'Value': 9.3, 'Unit': 'km/h', 'UnitType': 7}, 'Direction': {'Degrees': 128, 'Localized': 'SE', 'English': 'SE'}}, 'WindGust': {'Speed': {'Value': 20.4, 'Unit': 'km/h', 'UnitType': 7}, 'Direction': {'Degrees': 116, 'Localized': 'ESE', 'English': 'ESE'}}, 'TotalLiquid': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'Rain': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'Snow': {'Value': 0.0, 'Unit': 'cm', 'UnitType': 4}, 'Ice': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'HoursOfPrecipitation': 0.0, 'HoursOfRain': 0.0, 'HoursOfSnow': 0.0, 'HoursOfIce': 0.0, 'CloudCover': 1, 'Evapotranspiration': {'Value': 4.6, 'Unit': 'mm', 'UnitType': 3}, 'SolarIrradiance': {'Value': 7194.5, 'Unit': 'W/m²', 'UnitType': 33}, 'RelativeHumidity': {'Minimum': 31, 'Maximum': 75, 'Average': 45}, 'WetBulbTemperature': {'Minimum': {'Value': 12.2, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 17.0, 'Unit': 'C', 'UnitType': 17}, 'Average': {'Value': 15.9, 'Unit': 'C', 'UnitType': 17}}, 'WetBulbGlobeTemperature': {'Minimum': {'Value': 14.4, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 23.2, 'Unit': 'C', 'UnitType': 17}, 'Average': {'Value': 20.6, 'Unit': 'C', 'UnitType': 17}}}, 'Night': {'Icon': 33, 'IconPhrase': 'Clear', 'HasPrecipitation': False, 'ShortPhrase': 'Clear', 'LongPhrase': 'Clear', 'PrecipitationProbability': 2, 'ThunderstormProbability': 0, 'RainProbability': 2, 'SnowProbability': 0, 'IceProbability': 0, 'Wind': {'Speed': {'Value': 9.3, 'Unit': 'km/h', 'UnitType': 7}, 'Direction': {'Degrees': 129, 'Localized': 'SE', 'English': 'SE'}}, 'WindGust': {'Speed': {'Value': 14.8, 'Unit': 'km/h', 'UnitType': 7}, 'Direction': {'Degrees': 113, 'Localized': 'ESE', 'English': 'ESE'}}, 'TotalLiquid': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'Rain': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'Snow': {'Value': 0.0, 'Unit': 'cm', 'UnitType': 4}, 'Ice': {'Value': 0.0, 'Unit': 'mm', 'UnitType': 3}, 'HoursOfPrecipitation': 0.0, 'HoursOfRain': 0.0, 'HoursOfSnow': 0.0, 'HoursOfIce': 0.0, 'CloudCover': 0, 'Evapotranspiration': {'Value': 0.5, 'Unit': 'mm', 'UnitType': 3}, 'SolarIrradiance': {'Value': 71.4, 'Unit': 'W/m²', 'UnitType': 33}, 'RelativeHumidity': {'Minimum': 43, 'Maximum': 89, 'Average': 69}, 'WetBulbTemperature': {'Minimum': {'Value': 13.5, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 16.3, 'Unit': 'C', 'UnitType': 17}, 'Average': {'Value': 14.9, 'Unit': 'C', 'UnitType': 17}}, 'WetBulbGlobeTemperature': {'Minimum': {'Value': 15.2, 'Unit': 'C', 'UnitType': 17}, 'Maximum': {'Value': 21.0, 'Unit': 'C', 'UnitType': 17}, 'Average': {'Value': 17.6, 'Unit': 'C', 'UnitType': 17}}}, 'Sources': ['AccuWeather'], 'MobileLink': 'http://www.accuweather.com/en/us/pittsburgh-pa/15219/daily-weather-forecast/1310?day=1&unit=c&lang=en-us', 'Link': 'http://www.accuweather.com/en/us/pittsburgh-pa/15219/daily-weather-forecast/1310?day=1&unit=c&lang=en-us'}]}\n",
"Pittsburgh, PA\n",
"Headline Text: Noticeably cooler Saturday\n",
"Temperature Minimum Value: 14.3\n"
]
}
],
"source": [
"if (city_code!=0):\n",
" weather_data=get_weather(api_key, city_code)\n",
" print(weather_data)\n",
"# Extract 'Text' from 'Headline'\n",
" headline_text = weather_data['Headline']['Text']\n",
"# Extract 'Temperature Minimum' value\n",
" temperature_minimum = weather_data['DailyForecasts'][0]['Temperature']['Minimum']['Value']\n",
" print(city_string)\n",
" print(\"Headline Text:\", headline_text)\n",
" print(\"Temperature Minimum Value:\", temperature_minimum)\n",
"else: \n",
" print(\"Invalid search term\")"
]
},
{
"cell_type": "markdown",
"id": "29a8a8e9-102c-46e0-ad76-87c11f3002fd",
"metadata": {},
"source": [
"# Run all the cells and find the minimum temperature in Tucson, Arizona today \n",
"Write the minimum temperature here: \n",
"# Submit both .ipynb and .html files "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3f2cf97c",
"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.11.4"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading