Code Monkey home page Code Monkey logo

Comments (5)

Hellowlol avatar Hellowlol commented on August 24, 2024

It could be a race condition. Try removing the sensor without the template

from nordpool.

Jochey avatar Jochey commented on August 24, 2024

Thanks for your reply! The 3_10_025 is added via the Integrations in the GUI. Is there a way to delete this? I can only see that it is possible to disable the device.

The 3_095_0 is added via sensors.yaml

I need both sensors. How can I add two without ending up with this condition?

Edit: Tried to dele the 3_10_025 via the GUI, resulting in the complete integration being removed, and the 3_095_0 not being available until adding a new sensor via the GUI.

from nordpool.

Jochey avatar Jochey commented on August 24, 2024

After doing some more testing, it seems quite clear that the issue is the use of states from other sensors, not a race condition. At least not a race condition between the two Nordpool sensors.

If I include any states sensor in the declaration of "s"-variables, the 3_095_0 sensor will generate the error "No data for today, unable to set attrs". The same happens if I add any states sensor directly to the logic. If I however replace the states sensors with a number, everything seems to work perfect.

If I test the logic in the "Templates" section under "Development Tools" it works as expected, even with states sensors.

from nordpool.

Hellowlol avatar Hellowlol commented on August 24, 2024

Hm, Im still not convinced that it isn’t a race condition.

With both sensors present. Provide logs of startup and when price updates changes to unknown.

With only the template sensor. Provide logs of startup and when price updates changes to unknown.

To verify if the issue is related to the other sensor. Create a simpler template that adds a number for example 100. After the price updates due to new hour, change to 1000 and wait for a new price update. Provide the logs

Provide logs

from nordpool.

Jochey avatar Jochey commented on August 24, 2024

Thank you! I have done my best to provide logs as you request. The price changes to unkown once I restart.

Log from both sensors present:

2023-11-29 13:33:31.298 DEBUG (MainThread) [custom_components.nordpool] Added nordpool to hass.data
2023-11-29 13:33:31.400 DEBUG (MainThread) [custom_components.nordpool.sensor] Dumping config mappingproxy({'region': 'Kr.sand', 'currency': 'NOK', 'VAT': True, 'precision': 3, 'low_price_cutoff': 1.0, 'price_in_cents': False, 'price_type': 'kWh', 'additional_costs': '{{0.0|float}}'})
2023-11-29 13:33:31.400 DEBUG (MainThread) [custom_components.nordpool.sensor] timezone set in ha 'Europe/Oslo'
2023-11-29 13:33:31.400 DEBUG (MainThread) [custom_components.nordpool.sensor] Template {{0.0|float}}
2023-11-29 13:33:31.404 DEBUG (MainThread) [custom_components.nordpool.sensor] Dumping config {'platform': 'nordpool', 'VAT': False, 'currency': 'NOK', 'low_price_cutoff': 0.95, 'region': 'Kr.sand', 'precision': 3, 'price_type': 'kWh', 'additional_costs': Template<template=({% set s = { "winter_night": 0.0600, "winter_day": 0.3395, "summer_night": 0.4230, "summer_day": 0.06000, "cert": 0.01, "solar_start": (states("sensor.solar_start") | int), "solar_end": (states("sensor.solar_end") | int) } %} {% if now().month >= 4 and now().month <= 12 %} {% if (now().hour >= s.solar_start and now().hour < s.solar_end ) %} {{ s.summer_day | float }} {% elif current_price < 0.7 %} {{ s.summer_night + ( current_price * 0.25 ) |float }} {% else %} {{ s.summer_night + (( 0.7 + ((current_price - 0.7) * 0.1)) * 1.25 - current_price ) | float }} {% endif %} {% else %} {% if (now().hour >= s.solar_start and now().hour < s.solar_end ) %} {{ s.winter_day | float }} {% elif current_price < 0.7 %} {{ s.winter_night + ( current_price * 0.25 ) |float }} {% else %} {{ s.winter_night + (( 0.7 + ((current_price - 0.7) * 0.1)) * 1.25 - current_price ) | float }} {% endif %} {% endif %}) renders=0>, 'friendly_name': '', 'price_in_cents': False}
2023-11-29 13:33:31.404 DEBUG (MainThread) [custom_components.nordpool.sensor] timezone set in ha 'Europe/Oslo'
2023-11-29 13:33:31.404 DEBUG (MainThread) [custom_components.nordpool.sensor] Template Template<template=({% set s = { "winter_night": 0.0600, "winter_day": 0.3395, "summer_night": 0.4230, "summer_day": 0.06000, "cert": 0.01, "solar_start": (states("sensor.solar_start") | int), "solar_end": (states("sensor.solar_end") | int) } %} {% if now().month >= 4 and now().month <= 12 %} {% if (now().hour >= s.solar_start and now().hour < s.solar_end ) %} {{ s.summer_day | float }} {% elif current_price < 0.7 %} {{ s.summer_night + ( current_price * 0.25 ) |float }} {% else %} {{ s.summer_night + (( 0.7 + ((current_price - 0.7) * 0.1)) * 1.25 - current_price ) | float }} {% endif %} {% else %} {% if (now().hour >= s.solar_start and now().hour < s.solar_end ) %} {{ s.winter_day | float }} {% elif current_price < 0.7 %} {{ s.winter_night + ( current_price * 0.25 ) |float }} {% else %} {{ s.winter_night + (( 0.7 + ((current_price - 0.7) * 0.1)) * 1.25 - current_price ) | float }} {% endif %} {% endif %}) renders=0>
2023-11-29 13:33:31.405 DEBUG (MainThread) [custom_components.nordpool.sensor] called async_added_to_hass nordpool_kwh_krsand_nok_3_10_025
2023-11-29 13:33:31.405 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 13:33:31.405 DEBUG (MainThread) [custom_components.nordpool] Updating today's prices.
2023-11-29 13:33:31.405 DEBUG (MainThread) [custom_components.nordpool] calling _update today None
2023-11-29 13:33:31.406 DEBUG (MainThread) [custom_components.nordpool.sensor] called async_added_to_hass nordpool_kwh_krsand_nok_3_095_0
2023-11-29 13:33:31.406 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 13:33:31.407 DEBUG (MainThread) [custom_components.nordpool.sensor] No data for today, unable to set attrs
2023-11-29 13:33:31.407 DEBUG (MainThread) [custom_components.nordpool.sensor] Cant update _update_current_price because it was no data
2023-11-29 13:33:39.125 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=28-11-2023 {'currency': 'NOK', 'endDate': '28-11-2023'}
2023-11-29 13:33:39.137 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=29-11-2023 {'currency': 'NOK', 'endDate': '29-11-2023'}
2023-11-29 13:33:39.147 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=30-11-2023 {'currency': 'NOK', 'endDate': '30-11-2023'}
2023-11-29 13:33:39.502 DEBUG (MainThread) [custom_components.nordpool] Updating tomorrows prices.
2023-11-29 13:33:39.502 DEBUG (MainThread) [custom_components.nordpool] calling _update tomorrow 2023-11-30 13:33:39.502642+01:00
2023-11-29 13:33:41.635 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=29-11-2023 {'currency': 'NOK', 'endDate': '29-11-2023'}
2023-11-29 13:33:41.647 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=28-11-2023 {'currency': 'NOK', 'endDate': '28-11-2023'}
2023-11-29 13:33:41.657 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=30-11-2023 {'currency': 'NOK', 'endDate': '30-11-2023'}
2023-11-29 13:33:41.991 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_10_025 _current_price 1591.52
2023-11-29 13:33:42.026 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 13:33:42.028 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_10_025 _current_price 1591.52
2023-11-29 13:33:42.039 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr

After deleting the 3_10_025. The sensors seems to update in the logs, but the entity is unavailable:

2023-11-29 13:44:57.426 DEBUG (MainThread) [custom_components.nordpool] Added nordpool to hass.data
2023-11-29 13:44:57.913 DEBUG (MainThread) [custom_components.nordpool.sensor] Dumping config {'platform': 'nordpool', 'VAT': False, 'currency': 'NOK', 'low_price_cutoff': 0.95, 'region': 'Kr.sand', 'precision': 3, 'price_type': 'kWh', 'additional_costs': Template<template=({% set s = { "winter_night": 0.0600, "winter_day": 0.3395, "summer_night": 0.4230, "summer_day": 0.06000, "cert": 0.01, "solar_start": (states("sensor.solar_start") | int), "solar_end": (states("sensor.solar_end") | int) } %} {% if now().month >= 4 and now().month <= 12 %} {% if (now().hour >= s.solar_start and now().hour < s.solar_end ) %} {{ s.summer_day | float }} {% elif current_price < 0.7 %} {{ s.summer_night + ( current_price * 0.25 ) |float }} {% else %} {{ s.summer_night + (( 0.7 + ((current_price - 0.7) * 0.1)) * 1.25 - current_price ) | float }} {% endif %} {% else %} {% if (now().hour >= s.solar_start and now().hour < s.solar_end ) %} {{ s.winter_day | float }} {% elif current_price < 0.7 %} {{ s.winter_night + ( current_price * 0.25 ) |float }} {% else %} {{ s.winter_night + (( 0.7 + ((current_price - 0.7) * 0.1)) * 1.25 - current_price ) | float }} {% endif %} {% endif %}) renders=0>, 'friendly_name': '', 'price_in_cents': False}
2023-11-29 13:44:57.914 DEBUG (MainThread) [custom_components.nordpool.sensor] timezone set in ha 'Europe/Oslo'
2023-11-29 13:44:57.914 DEBUG (MainThread) [custom_components.nordpool.sensor] Template Template<template=({% set s = { "winter_night": 0.0600, "winter_day": 0.3395, "summer_night": 0.4230, "summer_day": 0.06000, "cert": 0.01, "solar_start": (states("sensor.solar_start") | int), "solar_end": (states("sensor.solar_end") | int) } %} {% if now().month >= 4 and now().month <= 12 %} {% if (now().hour >= s.solar_start and now().hour < s.solar_end ) %} {{ s.summer_day | float }} {% elif current_price < 0.7 %} {{ s.summer_night + ( current_price * 0.25 ) |float }} {% else %} {{ s.summer_night + (( 0.7 + ((current_price - 0.7) * 0.1)) * 1.25 - current_price ) | float }} {% endif %} {% else %} {% if (now().hour >= s.solar_start and now().hour < s.solar_end ) %} {{ s.winter_day | float }} {% elif current_price < 0.7 %} {{ s.winter_night + ( current_price * 0.25 ) |float }} {% else %} {{ s.winter_night + (( 0.7 + ((current_price - 0.7) * 0.1)) * 1.25 - current_price ) | float }} {% endif %} {% endif %}) renders=0>
2023-11-29 13:44:58.576 DEBUG (MainThread) [custom_components.nordpool.sensor] called async_added_to_hass nordpool_kwh_krsand_nok_3_095_0
2023-11-29 13:44:58.576 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 13:44:58.576 DEBUG (MainThread) [custom_components.nordpool] Updating today's prices.
2023-11-29 13:44:58.576 DEBUG (MainThread) [custom_components.nordpool] calling _update today None
2023-11-29 13:45:02.782 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=28-11-2023 {'currency': 'NOK', 'endDate': '28-11-2023'}
2023-11-29 13:45:04.104 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=30-11-2023 {'currency': 'NOK', 'endDate': '30-11-2023'}
2023-11-29 13:45:04.115 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=29-11-2023 {'currency': 'NOK', 'endDate': '29-11-2023'}
2023-11-29 13:45:05.435 DEBUG (MainThread) [custom_components.nordpool] Updating tomorrows prices.
2023-11-29 13:45:05.435 DEBUG (MainThread) [custom_components.nordpool] calling _update tomorrow 2023-11-30 13:45:05.435389+01:00
2023-11-29 13:45:11.024 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=29-11-2023 {'currency': 'NOK', 'endDate': '29-11-2023'}
2023-11-29 13:45:11.038 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=28-11-2023 {'currency': 'NOK', 'endDate': '28-11-2023'}
2023-11-29 13:45:11.049 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=30-11-2023 {'currency': 'NOK', 'endDate': '30-11-2023'}
2023-11-29 13:45:11.342 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr

Startup log and log after first change of hour after chaning the template to "{{ 100 | float }}". After this change, the 3_095_0 entity is now available, showing the price as expected, also after change of hour.

2023-11-29 13:58:12.483 DEBUG (MainThread) [custom_components.nordpool] Added nordpool to hass.data
2023-11-29 13:58:12.590 DEBUG (MainThread) [custom_components.nordpool.sensor] Dumping config {'platform': 'nordpool', 'VAT': False, 'currency': 'NOK', 'low_price_cutoff': 0.95, 'region': 'Kr.sand', 'precision': 3, 'price_type': 'kWh', 'additional_costs': Template<template=({{ 100 | float }}) renders=0>, 'price_in_cents': False, 'friendly_name': ''}
2023-11-29 13:58:12.590 DEBUG (MainThread) [custom_components.nordpool.sensor] timezone set in ha 'Europe/Oslo'
2023-11-29 13:58:12.591 DEBUG (MainThread) [custom_components.nordpool.sensor] Template Template<template=({{ 100 | float }}) renders=0>
2023-11-29 13:58:12.593 DEBUG (MainThread) [custom_components.nordpool.sensor] called async_added_to_hass nordpool_kwh_krsand_nok_3_095_0
2023-11-29 13:58:12.593 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 13:58:12.593 DEBUG (MainThread) [custom_components.nordpool] Updating today's prices.
2023-11-29 13:58:12.593 DEBUG (MainThread) [custom_components.nordpool] calling _update today None
2023-11-29 13:58:17.543 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=28-11-2023 {'currency': 'NOK', 'endDate': '28-11-2023'}
2023-11-29 13:58:18.822 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=29-11-2023 {'currency': 'NOK', 'endDate': '29-11-2023'}
2023-11-29 13:58:18.835 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=30-11-2023 {'currency': 'NOK', 'endDate': '30-11-2023'}
2023-11-29 13:58:20.300 DEBUG (MainThread) [custom_components.nordpool] Updating tomorrows prices.
2023-11-29 13:58:20.300 DEBUG (MainThread) [custom_components.nordpool] calling _update tomorrow 2023-11-30 13:58:20.300513+01:00
2023-11-29 13:58:25.193 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=29-11-2023 {'currency': 'NOK', 'endDate': '29-11-2023'}
2023-11-29 13:58:25.210 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=28-11-2023 {'currency': 'NOK', 'endDate': '28-11-2023'}
2023-11-29 13:58:25.220 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=30-11-2023 {'currency': 'NOK', 'endDate': '30-11-2023'}
2023-11-29 13:58:25.530 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_095_0 _current_price 1591.52
2023-11-29 13:58:26.645 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 13:58:26.647 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_095_0 _current_price 1591.52
2023-11-29 14:00:00.351 DEBUG (MainThread) [custom_components.nordpool] Called new_hr callback
2023-11-29 14:00:00.352 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 14:00:00.357 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_095_0 _current_price 1753.09

I changed the value of additional cost from 100 to 1000 in the sensor.yaml at 14:04, without doing any restart or reload of the yaml configuration. After change of hour from 14 to 15, the additional cost of 1000 was not used by the 3_095_0 entity, as this is still at approximately 100. This is the log from change of hour from 14 to 15:

2023-11-29 15:00:00.352 DEBUG (MainThread) [custom_components.nordpool] Called new_hr callback
2023-11-29 15:00:00.352 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 15:00:00.359 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_095_0 _current_price 1964.11

After reboot with additional cost of 1000 in sensor.yaml. The 3_095_0 entity now included the additional cost of 1000.

2023-11-29 15:05:05.233 DEBUG (MainThread) [custom_components.nordpool] Added nordpool to hass.data
2023-11-29 15:05:06.030 DEBUG (MainThread) [custom_components.nordpool.sensor] Dumping config {'platform': 'nordpool', 'VAT': False, 'currency': 'NOK', 'low_price_cutoff': 0.95, 'region': 'Kr.sand', 'precision': 3, 'price_type': 'kWh', 'additional_costs': Template<template=({{ 1000 | float }}) renders=0>, 'price_in_cents': False, 'friendly_name': ''}
2023-11-29 15:05:06.030 DEBUG (MainThread) [custom_components.nordpool.sensor] timezone set in ha 'Europe/Oslo'
2023-11-29 15:05:06.031 DEBUG (MainThread) [custom_components.nordpool.sensor] Template Template<template=({{ 1000 | float }}) renders=0>
2023-11-29 15:05:06.048 DEBUG (MainThread) [custom_components.nordpool.sensor] called async_added_to_hass nordpool_kwh_krsand_nok_3_095_0
2023-11-29 15:05:06.049 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 15:05:06.049 DEBUG (MainThread) [custom_components.nordpool] Updating today's prices.
2023-11-29 15:05:06.049 DEBUG (MainThread) [custom_components.nordpool] calling _update today None
2023-11-29 15:05:13.526 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=28-11-2023 {'currency': 'NOK', 'endDate': '28-11-2023'}
2023-11-29 15:05:13.527 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=29-11-2023 {'currency': 'NOK', 'endDate': '29-11-2023'}
2023-11-29 15:05:14.723 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=30-11-2023 {'currency': 'NOK', 'endDate': '30-11-2023'}
2023-11-29 15:05:15.449 DEBUG (MainThread) [custom_components.nordpool] Updating tomorrows prices.
2023-11-29 15:05:15.450 DEBUG (MainThread) [custom_components.nordpool] calling _update tomorrow 2023-11-30 15:05:15.450123+01:00
2023-11-29 15:05:25.365 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=29-11-2023 {'currency': 'NOK', 'endDate': '29-11-2023'}
2023-11-29 15:05:25.476 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=30-11-2023 {'currency': 'NOK', 'endDate': '30-11-2023'}
2023-11-29 15:05:26.063 DEBUG (MainThread) [custom_components.nordpool.aio_price] requested https://www.nordpoolgroup.com/api/marketdata/page/10?currency=NOK&endDate=28-11-2023 {'currency': 'NOK', 'endDate': '28-11-2023'}
2023-11-29 15:05:26.457 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_095_0 _current_price 1964.11
2023-11-29 15:05:26.495 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 15:05:26.498 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_095_0 _current_price 1964.11

Edit: Logs from hour shift with additional cost of 1000

2023-11-29 16:00:00.483 DEBUG (MainThread) [custom_components.nordpool] Called new_hr callback
2023-11-29 16:00:00.483 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 16:00:00.492 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_095_0 _current_price 2338.23
2023-11-29 17:00:00.482 DEBUG (MainThread) [custom_components.nordpool] Called new_hr callback
2023-11-29 17:00:00.483 DEBUG (MainThread) [custom_components.nordpool.sensor] handle_new_hr
2023-11-29 17:00:00.495 DEBUG (MainThread) [custom_components.nordpool.sensor] Updated nordpool_kwh_krsand_nok_3_095_0 _current_price 2922.79

from nordpool.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.