Git Product home page Git Product logo

herepy's Introduction

Senior Machine Learning Engineer with more than 10 years of experience in software and machine learning engineering with designing, developing, and implementing complex machine learning pipelines, automation and systems. Possessing a strong computer science background and expertise in various programming languages and frameworks. Committed to staying up-to-date with the latest advancements in the field and am always seeking out new and innovative ways to solve complex problems as well as leading development teams and technical discussions. I am passionate about mentoring and training junior team members on machine learning techniques and best practices. Using Github for publishing and contributing to open source projects at the same time working on open source identity verification projects using Machine Learning and Deep Learning techniques. One of the open source projects that I have contributed to was used in Mars 2020 Helicopter Mission.

herepy's People

Contributors

abdullahselek avatar antosomzi avatar aykutkilic avatar b0uh avatar cholojuanito avatar d3nii avatar dependabot[bot] avatar dimmyjing avatar eifinger avatar fabaff avatar huonw avatar james-burgess avatar jomarinb avatar mnogoruk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

herepy's Issues

Getting Error while running the API

Following is the error:
This is the same for 'address_with_detail' , 'address_with_boundingbox' etc.

Traceback (most recent call last):
File "C:\Users\Desktop\Python_Folder\test.py", line 143, in
response = geocoderApi.free_form('200 S Mathilda Sunnyvale CA')
File "C:\Users\AppData\Local\Programs\Python\Python38\lib\site-packages\herepy\geocoder_api.py", line 58, in free_form
return self.__get(data)
File "C:\Users\AppData\Local\Programs\Python\Python38\lib\site-packages\herepy\geocoder_api.py", line 40, in __get
raise HEREError(json_data.get('Details', 'Error occured on function ' + sys._getframe(1).f_code.co_name))
herepy.error.HEREError: Error occured on function free_form

Type annotations are not available for downstream code due to missing py.typed

Hi, thank you for publishing and maintaining HerePy, we're using it and it's working well!

I noticed that most of the API has type annotations, which is a great help for downstream code. We use mypy and would love to benefit from checking of HerePy's type annotations, but this requires the package to have a py.typed file which is currently missing in HerePy: see https://mypy.readthedocs.io/en/stable/installed_packages.html#creating-pep-561-compatible-packages

RoutingAPI v8 support?

Hi, I got started using the RoutingApi module recently and noticed in the code that the API version is hard set to v7.2:

URL_CALCULATE_ROUTE = "https://route.ls.hereapi.com/routing/7.2/calculateroute.json"

Not sure if there are a lot of significant changes to the API, but I was wondering if there's any easy way to bump the version up to v8?

Include all params for the Matrix Routing API

Hi Abdullah

I am trying to solve an issue with avoiding certain areas or route features when planning routes for my company. The avoid parameter for the matrix routing would be very helpful here but I cannot use this parameter in the API module you have built.

Please could you look at updating the module to include this and any other missing parameters in the matrix routing?

EVChargingStationsApi -- HEREError: Error occured on __get

Im getting started using the herepy EVCharginStationsApi and have been running into some issues that I can't troubleshoot on my own. I have obtained an API Key and have tried this so far:

evAPI = EVChargingStationsApi(API_Key)
response = evAPI.get_stations_circular_search(latitude = 37.87166, longitude = -122.2727, radius = 10000)

At this point, I run into the aforementioned HEREError: Error occured on__get (I have included a screenshot of the full error message below)

Please let me know how I can get around this (seemingly trivial) error.

Screen Shot 2021-03-12 at 3 42 07 PM

herepy.error.HEREError: Error occured on function free_form

Hi I am trying to gecode cities using HerePy

city = "London, United Kingdom"
ta = herepy.GeocoderApi(api_key="api_key", timeout=20)
step = ta.free_form(searchtext=city,lang="en-US")

But its throwing an error : "herepy.error.HEREError: Error occured on function free_form"

I am not able to figure out where I am going wrong. It would be great if you can comment

Traffic flow information within a specifed area

Hello I am trying to get real data about traffic conditions in a given area.
I am watching some code related to this in the folder of examples. The code contains the following lines:

response = traffic_api.flow_within_boundingbox( top_left=[52.5311, 13.3644], bottom_right=[52.5114, 13.4035] ) print(response.as_dict())

However, I got the following error: JSONDecodeError: Expecting value: line 1 column 1 (char 0)

I am watching the documentation of the library and the function of flow_within_boundingbox has another argument called self. I don't know if that's the error but I don't find what "self" must contain. I hope you can give me some help.

Best regards,
Orlando

urlencode seems to be breaking some API calls

I was not getting a response with the FleetTelematicsAPI function, so I tried to manually recreate it. It appears that my API call was breaking because urlencode was replacing semicolons and commas in the api call.
base_url = 'https://wse.ls.hereapi.com/2/findsequence.json'
data_test = {'apiKey':'key', 'start':'Start;43.422,-75.9201', 'destination1': 'dest1;43.46929,-75.92747', 'destination2': 'dest2;43.45939,-75.89347'}
url = herepy.Utils.build_url(base_url,extra_params=data_test)
url

Will return:
'https://wse.ls.hereapi.com/2/findsequence.json?apiKey=key&start=Start%3B43.422%2C-75.9201&destination1=dest1%3B43.46929%2C-75.92747&destination2=dest2%3B43.45939%2C-75.89347'

Departure times (and other parameters) not working for sync_matrix()

A few of the inputs to sync_matrix result in no returned value.

Here's an example that fails:

from herepy import (
    RoutingApi,
    MatrixSummaryAttribute
)

routing_api = RoutingApi(api_key=here_key)

loc1 = [41.9346561,-87.6424535]
loc2 = [41.7886119,-87.600902]

rm = routing_api.sync_matrix(
    origins=[loc1, loc2],
    destinations=[loc1, loc2],
    matrix_attributes=[
        MatrixSummaryAttribute.distances,
        MatrixSummaryAttribute.travel_times,
    ],
    departure='2020-05-21T09:00:00'
)

Which gives error HEREError: Error occured on <module>

Similarly, including matrix_type gives the same error. I tried poking around a bit to see if I could sort out why, but no luck. Any thoughts?

(Btw, thanks for the great API! Otherwise I've found it extremely helpful!)

Problem getting isoline_routing with pedestrian transport mode

Hi Abdullah,
Thanks for your work.

I'm trying to do the following but it doesn't work:

response = isoline_routing_api.time_isoline(
transport_mode=IsolineRoutingTransportMode.pedastrian,
origin=[lat, long],
ranges=[300],
)

It works for car and truck but not for pedestrian.
Maybe there is a typo pedestrian vs pedastrian...

Correct usage of places_in_circle

Hi Abdullah,

Thanks a lot for a robust and nicely document package! I tried to request a set of places within a city with a given radius with place_in_circle, but it seems that there is a limit on the radius of the circle? Or maybe there is a limit on the number of places that I can retrieve? For example, the following query with a radius of 10000 m results only in 20 places.

image

How to render one or multiple roads on the map.

Hello Abdullah,

I really appreciate your work. it's very useful library.

i have i list of start points (start cities) and a second list of arrival points (arrival cities) then i was able to run a loop to generate the car route of all combinations.

Is there any way to push these responses to a graphical map and show all the generated routes ?

Please advice about feasibility or alternative visualization method.

Thank you

Wrong type annotation async_matrix and sync_matrix methods of the RoutingApi class

async_matrix and sync_matrix methods of the RoutingApi class. The type annotation or origins and destinations paramters is not correct:

Not:

origins: Union[List[float], str], destinations: Union[List[float], str],

But actually a list of lists:

origins: Union[List[List[float]], str], destinations: Union[List[List[float]], str],

Multiple Waypoints on route_v8

Hello,

Thanks for making this library available, it is great.

I was wondering, is there a way to use route_v8 using multiple waypoints? ( via )
I checked the source code and it does not seems possible right now.

via: Optional[List[float]] = None,

data["via"] = str.format("{0},{1}", via[0], via[1])

Yet is seems possible by their rest api:

'https://router.hereapi.com/v8/routes?origin=52.51375,13.42462&transportMode=car&destination=52.52332,13.42800&via=52.517871,13.434175&via=52.52426,13.43000&return=polyline,summary&apiKey={YOUR_API_KEY}'

I will use the REST API for this, but it would be awesome to have this feature into the library sometime in the future.

Route summary not showing properly

Hello,

I've recently started using the HERE API for my own curiosity, and I'm using this library for my tests. Though there's something I don't understand.

I am trying to get the time result of a route calculation considering a specific time given. I noticed it doesn't work on the v7 of RoutingApi, so I tested the v8 on a REST Client, I saw it worked, so I decided to use the route_v8 function to get the same result. Though the JSON given by the function doesn't match the one I get in the REST Client: the summary part appears on my REST Client with the time and distance, but on python I get something else, I get a "polyline" section with tons of numbers and letters.

Is it a bug, or is there something I didn't do right ? I looked at the documentation, but didn't see anything about it. Maybe I missed something.

GeocoderAutoCompleteApi.limit_results_byaddress doesn't work

Hello,
The function : limit_results_byaddress of the module GeocoderAutoCompleteApi doesn't work.
This is due to the base_url :
self._base_url = "https://autosuggest.search.hereapi.com/v1/autosuggest"
and it should be :
self._base_url = "https://autocomplete.search.hereapi.com/v1/autocomplete"

The autosuggest should only be used for address_suggestion not for limit_results_byaddress

here is the link :
https://github.com/abdullahselek/HerePy/blob/master/herepy/geocoder_autocomplete_api.py

Best regards,
Etienne Fongue

Code Style

Hey!
I just found your repository, I don't know if you are still working on it, I just have a small comment:
For the routing calls, you copy/pasted a lot of code (data=...) which could be written much shorter, e.g:


    def _route(self, waypoint_a, waypoint_b, modes=None):
        data = {'waypoint0': str.format('{0},{1}', waypoint_a[0], waypoint_a[1]),
                'waypoint1': str.format('{0},{1}', waypoint_b[0], waypoint_b[1]),
                'mode': self.__prepare_mode_values(modes),
                'app_id': self._app_id,
                'app_code': self._app_code,
                'departure': 'now'}
        return self.__get(data)

    def car_route(self, waypoint_a, waypoint_b, modes=None):
        if modes is None:
            modes = [RouteMode.car, RouteMode.fastest]
        self._route(waypoint_a, waypoint_b, modes)
        
    def pedastrian_route(self, waypoint_a, waypoint_b, modes=None):
        if modes is None:
            modes = [RouteMode.pedestrian, RouteMode.fastest]
        self._route(waypoint_a, waypoint_b, modes)

    def truck_route(self, waypoint_a, waypoint_b, modes=None):
        if modes is None:RouteMode.truck
            modes = [RouteMode.truck, RouteMode.fastest]
        self._route(waypoint_a, waypoint_b, modes)

I think you could even expect the normal user to be able to pass RouteMode.truck as a parameter instead of having multiple functions.

Issue Using Large Matrices with Routing.api.matrix

Hello,

We are currently running a few challenges in computing the drive distance/duration for our dataset which consists of, on a whole, roughly 74,001:7,000. So we are trying to map roughly 500 million unique pairs in a time effective fashion, but came to learn that we are restricted to a 15:100 matrix per request. We learned from available HERE literature that if we were to switch the type from "flexible" to "region" or "profile" we could send matrices of 10,000:10,000 which would be of great help. We apologize if we missed this, but in reviewing the available herepy information we could not find an option/function that would allow us to specify the type in such a way. Is there a way to switch this?

If not, we have been planning on doing this manually and running many instances at once on multiple machines. Unfortunately, we are experiencing a glitch that appears to be on the JSON end that we were hoping you could shed some light on. See below for relevant kernel and resulting output. We were able to get this to work with one set up (first image below) but for some reason with this other iteration (second image below) we get the error below in the subsequent step. Any help would be greatly appreciated! Thank you!

Set up that's working:
setup_working

Set up that's not working:
setup_notworking

Error when creating a simple route

response = routing_api.route_v8(transport_mode=(herepy.RoutingTransportMode.truck), origin=origin_a, destination=destination_a) File "/usr/local/lib/python3.9/site-packages/herepy/routing_api.py", line 492, in route_v8 keys_for_manipulation=via_keys, UnboundLocalError: local variable 'via_keys' referenced before assignment

When doing a simple route.

I fixed the bug by adding to RoutingApi > route_v8 :
l.436 via_keys=None

Use HerePy behind a proxy

I could not find any information to pass the proxy information to herepy
In the code the requests are not using any proxy information
response = requests.get(url, timeout=self._timeout)
I guess to add the proxy
response = requests.get(url, timeout=self._timeout, proxies=self._proxy)
would be needed.
Or are there other options?

Issue running `TrafficAPI.flow_within_boundingbox`

Hi,

I am trying to get the Traffic flow information using the flow_within_boundingbox method but despite inputting same coordinates from an example in the official docs, I'm running into this error:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Upon further inspection, I noticed that if I run a GET request to https://traffic.ls.hereapi.com/traffic/6.2/flow.xml?apiKey&bbox=52.5233,13.4035;52.5181,13.4159&locationreferences=shp, I get the response 200, but when trying to convert into Json, I get the same error.
Just for reference, the response.text is <?xml version=\'1.0\' encoding=\'UTF-8\'?><TRAFFICML_REALTIME xmlns="http://traffic.nokia.com/trafficml-flow-3.2" CREATED_TIMESTAMP="2022-05-19T19:55:29Z" MAP_VERSION="" UNITS="metric" VERSION="3.2"><RWS TY="SHP" MAP_VERSION="202202" EBU_COUNTRY_CODE="D" EXTENDED_COUNTRY_CODE="E0" TABLE_ID="1" UNITS="metric"><RW PBT="2022-05-19T19:45:27Z" mid=""><FIS><FI><SHP FC="4" FW="SD" LE="0.03483" LID="733322206T">52.51629,13.40925 52.51626,13.40944 52.51624,13.40958 52.51622,13.40975</SHP><CF CN="-1.0" FF="-1.0" JF="10.0" SP="-1.0" TY="TR"/></FI></FIS></RW><RW PBT="2022-05-15T05:31:41Z" mid=""><FIS><FI><SHP FC="5" FW="SD" LE="0.13797" LID="53500476T">52.51724,13.4124 52.51696,13.41042</SHP><CF CN="-1.0" FF="-1.0" JF="10.0" SP="-1.0" TY="TR"/></FI></FIS></RW><RW PBT="2022-05-19T19:45:27Z" mid=""><FIS><FI><SHP FC="4" FW="SD" LE="0.06632" LID="733322205F">52.51609,13.40837 52.51622,13.40865 52.51626,13.40879 52.51629,13.40892 52.5163,13.40909 52.51629,13.40925</SHP><CF CN="-1.0" FF="-1.0" JF="10.0" SP="-1.0" TY="TR"/></FI></FIS></RW><RW PBT="2022-05-19T19:45:27Z" mid=""><FIS><FI><SHP FC="4" FW="SD" LE="0.02871" LID="733322203T">52.51622,13.40975 52.51621,13.40985 52.5162,13.40999 52.51621,13.41017</SHP><CF CN="-1.0" FF="-1.0" JF="10.0" SP="-1.0" TY="TR"/></FI></FIS></RW></RWS></TRAFFICML_REALTIME>.

Any solutions to this?

Distance API

Is there a distance api in this through which we can get the shortest road distance between two or multiple points.
I just want to find the distance by road between the points and not the route between them.

Typo error on "public_transit_api.py"

Hi! Just started using your repo and found an error while trying to use the method calculate_route for the PublicTransitApi. Scanning through the code I found that the error was while creating data variable and changed line 231 of public_transit_api.py from:
'arr': str.format('{0}.{1}', arrival[0], arrival[1]), to:
'arr': str.format('{0},{1}', arrival[0], arrival[1]) (just changed dot to comma)

Hope this will be useful :)

Can you provide HD Map coordinate encoding and decoding feature from this library

According to the following HERE documentation, HERE HD Map use special encoding method for coordinates:
https://developer.here.com/documentation/here-lanes/dev_guide/topics/hd-map-coordinate-encoding.html
Can you add the feature for encoding and decoding the HERE HD Map coordinates such as follows:

def decode_here_2d_coordinate_int(encoded):
    encoded_bin = bin(int(encoded))[2:].rjust(64, '0')
    lon_bin = encoded_bin[1::2]
    lat_bin = encoded_bin[2::2]
    lat_bin = lat_bin.rjust(32, lat_bin[0])
    lon_uint = int(lon_bin, base=2)
    lat_uint = int(lat_bin, base=2)
    lon_int = struct.unpack('i', struct.pack('I', lon_uint))[0]
    lat_int = struct.unpack('i', struct.pack('I', lat_uint))[0]
    return lat_int, lon_int


def decode_here_2d_coordinate_diffs_offset(encoded_diffs, encoded_reference):
    coords = []
    #lat_int, lon_int = 0, 0
    lat_int, lon_int = decode_here_2d_coordinate_int(encoded_reference)
    for encoded in encoded_diffs:
        diff_lat_int, diff_lon_int = decode_here_2d_coordinate_int(encoded)
        lat_int ^= diff_lat_int
        lon_int ^= diff_lon_int
        lon_deg = lon_int * (360 / 2 ** 32)
        lat_deg = lat_int * (180 / 2 ** 31)
        coords.append((lat_deg, lon_deg))
    return coords

Issue with PlacesApi module.

Hi,

I am trying to get address suggestions on a lat,long coordinate and though I have used 'address_suggestion' but it requires to add a query to search but I want some places near the coordinate without any query.
So i tried to use 'nearby_places' and 'places_at' in the PlacesApi module but I am getting an attribute error that 'PlacesApi' object has no such attribute.

I tried the following code:

places_api = PlacesApi(api_key=api_key)
response = places_api.places_at(
coordinates = [lat1,long1]
)

print(response)

Is there an api to get nearby places or famous places near a coordinate without adding a query(keyword to search).

I refered this documentation:
https://herepy.readthedocs.io/en/stable/_modules/herepy/places_api.html#PlacesApi

Also is there any api for reverse geocoding except the retrieve_addresses ??

RouteMode in Matrix request

Hello,

I am new using the Here Mobility API and i am trying to reply the routing_api.Matrix example of the docs. The example says:

from herepy import RoutingApi, RouteMode
routing_api = RoutingApi(api_key="api_key")
response = routing_api.matrix(
    start_waypoints=[[9.933231, -84.076831]],
    destination_waypoints=[[9.934574, -84.065544]],
)
print(response.as_dict())

But when i use my own api_key i got this error

Traceback (most recent call last):
  File "<input>", line 7, in <module>
  File "D:\Repositorios\operaciones-r-rounting\pyport\App\Python\lib\site-packages\herepy\routing_api.py", line 382, in matrix
    response = self.__get(self.URL_CALCULATE_MATRIX, data, RoutingMatrixResponse)
  File "D:\Repositorios\operaciones-r-rounting\pyport\App\Python\lib\site-packages\herepy\routing_api.py", line 43, in __get
    raise error_from_routing_service_error(json_data)
herepy.routing_api.InvalidInputDataError: Transport type 'unknown' is not supported.

I think the problem is in the modes or summary_attributes of the function, and the documentation says

modes (List):
List of RouteMode enums following [Type, TransportMode, TrafficMode, Feature].
summary_attributes (List):
List of MatrixSummaryAttribute enums.

So I guess i should put some kind of RouteMode elements in a List but i dont know what does type, transport mode, traffic mode and feature mean. I have tried [RouteMode.fastest, RouteMode.car, RouteMode.traffic_default, RouteMode.traffic_default] but i get the following error:

File "D:\Repositorios\operaciones-r-rounting\pyport\App\Python\lib\site-packages\herepy\routing_api.py", line 43, in __get
  raise error_from_routing_service_error(json_data)
herepy.routing_api.InvalidInputDataError: Invalid input parameter value

Can somebody suggest me how should I put the params if I want to get the od_matrix with flexible mode and a carFast profile?

Traffic api

I used traffic API to get traffic data and you can find code and error below

from herepy import (
TrafficApi,
IncidentsCriticalityStr,
IncidentsCriticalityInt,
FlowProximityAdditionalAttributes,
)

traffic_api = TrafficApi(api_key="oaLYtbv9JVbsR1gYLBwPePkcFG2n52d-86495son2GA")

fetches a traffic incident information within specified area

response = traffic_api.incidents_in_bounding_box(
top_left=[52.5311, 13.3644],
bottom_right=[52.5114, 13.4035],
criticality=[
IncidentsCriticalityStr.minor,
IncidentsCriticalityStr.major,
IncidentsCriticalityStr.critical,
],
)
print(response.as_dict())

---error-----

HEREError Traceback (most recent call last)
in ()
15 IncidentsCriticalityStr.minor,
16 IncidentsCriticalityStr.major,
---> 17 IncidentsCriticalityStr.critical,
18 ],
19 )

1 frames
/usr/local/lib/python3.7/dist-packages/herepy/traffic_api.py in __get(self, url, data)
56 else:
57 error = self.__get_error_from_response(json_data)
---> 58 raise error
59
60 def __get_error_from_response(self, json_data):

HEREError: Error occurred on __get

sync_matrix required fields

Hi Abdullah

I am trying to use the sync_matrix function to test that the avoid parameter is working for me, however I came across another issue.

It seems like 'center' and 'radius' are required parameters of the function, however this should only be the case when the specified matrix_type is "circle". I should be able to specify "world" and not have to input these parameters. Is this something you can fix? In the meantime I will try and use the circle type.

image

Old REST API deprecated

It's no longer possible to create an APP CODE, it's now either OAUTH2 or API keys. This means that anybody trying to use this for the first time now can't.

Somebody reported this today in the HA Discord, and I've verified it myself.

avoid[features] not working for routing v8

Hello there,

I struggled for a while figuring out why the parameters I was passing to avoid tollTransponders and tollRoads weren't working.
After debugging a bit and printing requests sent to Here routing API, I figured out that the avoid parameter wasn't recognized :

{"notices":[{"title":"The provided parameter 'avoid=%7B%27%5Bfeatures%5D%27%3A+%27controlledAccessHighway%2Ctunnel%27%7D' is unknown.","code":"unknownParameter","severity":"info"},{"title":"The provided parameter 'truck=%7B%27%5Bfeatures%5D%27%3A+%27controlledAccessHighway%2Ctunnel%27%7D' is unknown.","code":"unknownParameter","severity":"info"}],

For now I did some quick & dirty fixes in the library, changing this parameters to plain text to make it work and send requests formatted like this :

https://router.hereapi.com/v8/routes?transportMode=truck&origin=48.9048418,2.306274&destination=48.7985884,1.6674979&apiKey=XXXXXXXXXX&departureTime=2021-09-28T10:30:00+00:00&routingMode=short&avoid[features]=controlledAccessHighway,tunnel&units=metric&lang=fr-FR&return=summary,tolls

In the Here documentation, avoidance parameters are given like this :

&avoid[features]=tollRoad

But i'm not able to find any request example with multiple avoidance types with features/tollTransponders/segments/etc. After testing it seems that they have to appear as specific parameters like this :

&avoid[features]=controlledAccessHighway,tunnel,tollRoad&avoid[tollTransponders]=all

It would be great to have an official update on this if you have some time !

Thanks

Adding maptiles and vectortiles?

I've stumbled of this project again, which looks very interesting! I'm just missing maptiles and vectortiles. Any plans to support these?

v8 Rollout

I see there is code in the routing api for use with v8 route_v8 is there a roadmap for other functions to be deprecated and for this to change to route?

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.