One Paragraph of project description goes here
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
| /** | |
| * Base contract that all upgradeable contracts should use. | |
| * | |
| * Contracts implementing this interface are all called using delegatecall from | |
| * a dispatcher. As a result, the _sizes and _dest variables are shared with the | |
| * dispatcher contract, which allows the called contract to update these at will. | |
| * | |
| * _sizes is a map of function signatures to return value sizes. Due to EVM | |
| * limitations, these need to be populated by the target contract, so the | |
| * dispatcher knows how many bytes of data to return from called functions. |
| from dateutil import parser, tz | |
| from datetime import datetime, timezone | |
| MAX_TIME_RANGE = 12 * 60 # how many minutes in the future to look at forecasts | |
| BATTERY_CAPACITY = 82 # kWh - Tesla Model 3 Performance (2021) | |
| CHARGE_RATE = 11 # kWh - Gen 3 Wall Connector (3 Phase 16A) | |
| LOCAL_TZ = tz.gettz('Australia/Sydney') | |
| def get_price_forecast(): |