Giter VIP home page Giter VIP logo

py3cw's Introduction

py3cw

Unofficial wrapper for the 3Commas API written in Python.


How to install

pip install py3cw

How to use

from py3cw.request import Py3CW

# request_options is optional, as all the keys from the dict
# so you can only change what you want.
#
# default options for request_options are:
# request_timeout: 30s (30 for connect, 30 for read)
# nr_of_retries: 5
# retry_status_codes: [500, 502, 503, 504]
# retry_backoff_factor (optional): It allows you to change how long the processes will sleep between failed requests.
# For example, if the backoff factor is set to:
# 1 second the successive sleeps will be 0.5, 1, 2, 4, 8, 16, 32, 64, 128, 256.
# 2 seconds - 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
# 10 seconds - 5, 10, 20, 40, 80, 160, 320, 640, 1280, 2560
# 
# NOTE: Nr of retries and retry_status_codes will also be used if we get 
# an falsy success from 3 commas (eg: { "error": { "status_code": 502 }})
p3cw = Py3CW(
    key='', 
    secret='',                                      #System generated secret key
    selfsigned='',                          #RSA generated private key
    request_options={
        'request_timeout': 10,
        'nr_of_retries': 1,
        'retry_status_codes': [502],
        'retry_backoff_factor': 0.1
    }
)

# With no action
# Destruct response to error and data
# and check first if we have an error, otherwise check the data
error, data = p3cw.request(
    entity='smart_trades_v2',
    action=''
)

# With payload data
# Destruct response to error and data
# and check first if we have an error, otherwise check the data
error, data  = p3cw.request(
    entity='smart_trades_v2', 
    action='new', 
    payload={
        "account_id": 123456,
        ......
    }
)

# With action_id replaced in URL
# Destruct response to error and data
# and check first if we have an error, otherwise check the data
error, data = p3cw.request(
    entity='smart_trades_v2', 
    action='get_by_id',
    action_id='123456'
)

An entity represents main categories. Meaning, you have accounts, bots, marketplace, deals or smart_trades

An action is represented by a ... well, an action of a specific category. There are multiple actions you can use (check 3commas API)

action_id is used to replace the necessary account_id or bot_id or deal_id (you get the picture) needed on some actions. For example the action sell_all_to_btc requires the account_id (POST /ver1/accounts/{account_id}/load_balances)

payload is the data you send.

Forced mode header could be added with the parameter additional_headers. Allowed values are 'real' or 'paper'. E.g. ... additional_headers={'Forced-Mode': 'paper'} ...


3Commas API helpers.

3Commas Docs: https://github.com/3commas-io/3commas-official-api-docs

Signed Endpoints RSA: https://github.com/3commas-io/3commas-official-api-docs/blob/master/signed_endpoints_rsa.md

Accounts: https://github.com/3commas-io/3commas-official-api-docs/blob/master/accounts_api.md

Bots: https://github.com/3commas-io/3commas-official-api-docs/blob/master/bots_api.md

Deals: https://github.com/3commas-io/3commas-official-api-docs/blob/master/deals_api.md

Marketplace: https://github.com/3commas-io/3commas-official-api-docs/blob/master/marketplace_api.md

Grid Bots: https://github.com/3commas-io/3commas-official-api-docs/blob/master/grid_bots_api.md

Smart Trades: https://github.com/3commas-io/3commas-official-api-docs/blob/master/smart_trades_v2_api.md


Best used with Binance.

buy me a beer ๐Ÿบ

ETH: 0x0c2EA600d8bECE889F998D6a22332298E879940b

py3cw's People

Contributors

bahlawi89 avatar bogdanteodoru avatar carkod avatar cj4c0b1 avatar cyberjunky avatar dmkeys12 avatar dmonllao avatar ibrahimbend avatar matsoftware avatar moutikabdessabour avatar saintpepsi avatar sgerodes 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

py3cw's Issues

Can't create grid bot on Binance Futures Coin account

Hi, I can't create grid bot on Binance Futures Coin account.
To reproduce the problem:

from py3cw.request import Py3CW
key = xxxx
secret = xxxx
client = Py3CW(key=key, secret=secret)

## Test binance spot bot (works fine)
spot_payload={
    "account_id": your_binance_spot_account_id,
    "pair": "USDT_DOGE",
    "upper_price": 0.25,
    "lower_price": 0.15,
    "quantity_per_grid": 100,
    "grids_quantity": 10,
    "is_enabled": False,
}
spot_error, data = client.request(entity="grid_bots", action="manual", payload=spot_payload, additional_headers={'Forced-Mode': "real"})

if spot_error:
    print(spot_error)
else:
    print("Spot success!")


## Test binance futures bot (works fine)
futures_payload={
    "account_id": your_binance_futures_account_id,
    "pair": "USDT_DOGEUSDT",
    "upper_price": 0.25,
    "lower_price": 0.15,
    "quantity_per_grid": 100,
    "grids_quantity": 10,
    "is_enabled": False,
    "leverage_type": "cross",
    "leverage_custom_value": "2"
}
futures_error, data = client.request(entity="grid_bots", action="manual", payload=futures_payload, additional_headers={'Forced-Mode': "real"})
if futures_error:
    print(futures_error)
else:
    print("Futures success!")

## Test binance futures_coin bot (doesn't work!)
futures_coin_payload={
    "account_id": your_binance_futures_coin_account_id,
    "pair": "DOGE_DOGEUSD_PERP",
    "upper_price": 0.25,
    "lower_price": 0.15,
    "quantity_per_grid": 5,
    "grids_quantity": 10,
    "is_enabled": False,
    "leverage_type": "cross",
    "leverage_custom_value": "2"
}
futures_coin_error, data = client.request(entity="grid_bots", action="manual", payload=futures_coin_payload, additional_headers={'Forced-Mode': "real"})
if futures_coin_error:
    print(futures_coin_error)
else:
    print("Futures-coin success!")


## Test binance futures_coin bot without leverage (doesn't work!)
futures_coin_payload={
    "account_id": your_binance_futures_coin_account_id,
    "pair": "DOGE_DOGEUSD_PERP",
    "upper_price": 0.25,
    "lower_price": 0.15,
    "quantity_per_grid": 5,
    "grids_quantity": 10,
    "is_enabled": False
}
futures_coin_error, data = client.request(entity="grid_bots", action="manual", payload=futures_coin_payload, additional_headers={'Forced-Mode': "real"})
if futures_coin_error:
    print(futures_coin_error)
else:
    print("Futures-coin success!")

The output is:

Spot success!

Futures success!

{'error': True, 'msg': 'Other error occurred: unknown_error Unknown error occurred#Exceptions::DealSilentException None.'}

{'error': True, 'msg': 'Other error occurred: unknown_error Unknown error occurred#Exceptions::DealSilentException None.'}

BTW, I have sufficient DOGE funds on my futures coin account and I don't have any DOGE positions at the moment. And I can create the binance futures coin grid bot with the same parameters on the WebUI.

Is this a bug of the py3cw or did I write the wrong code? Thanks for helping!

SSL Issue

Hey,

I'm trying to run the most basic connection as copied on the README on a mac and i get two errors, not sure if one is causing another.

  1. requests.exceptions.SSLError: HTTPSConnectionPool(host='api.3commas.io', port=443): Max retries exceeded with url: /public/api/ver1/deals (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)')))

  2. UnboundLocalError: local variable 'response_json' referenced before assignment

I saw from others that the second was fixed from removing the request_options which I did as well, but it hasn't been resolved.

I can add "verify = False" to the request to make it pass, but is this safe, or is there a better workaround?
Any insight?

Problem with smart trade creation - Missing values when passed

I get error with smart trade creation and cannot see why :

smarterror, smartdata = p3cw.request(
entity='smart_trades_v2',
action='new',
payload={
"account_id": myaccountId,
"pair": 'USDT_BNB',
"leverage[enabled]": False,
"position[type]": 'buy', # buy or sell
"position[order_type]": 'market',
"position[units][value]": 0.5,
"position[conditional][trailing][enabled]": True,
"position[conditional][trailing][percent]": 1.0,
"take_profit[enabled]": True,
"take_profit[steps][][order_type]": 'market',
"take_profit[steps][][price][type]": 'ask',
"take_profit[steps][][price][value]": 550.0,
"take_profit[steps][][trailing][enabled]": True,
"take_profit[steps][][trailing][percent]": 1.0,
"stop_loss[enabled]": True,
"stop_loss[order_type]": 'market',
"stop_loss[price][value]": 500.00,
"stop_loss[conditional][price][type]": 'bid',
"stop_loss[conditional][price][value]": 500.00,
"stop_loss[conditional][trailing][enabled]": True,
"stop_loss[timeout][enabled]": False
}
)

The error returned is :
error: Other error occurred: record_invalid Invalid parameters {'position': ['is missing'], 'position[type]': ['is missing'], 'position[order_type]': ['is missing'], 'position[units]': ['is missing'], 'position[units][value]': ['is missing'], 'take_profit': ['is missing'], 'take_profit[enabled]': ['is missing'], 'stop_loss': ['is missing'], 'stop_loss[enabled]': ['is missing']}.

Feature Request: allow for action_id to be of type int

Looking at the fact that the api returns an int for the bot_id it would be simpler if the user didn't have to do this manually each time. I know that you set the typing in the function to str. but it would be nice to have this feature. Great package btw.

accounts/market_pairs returns empty list

def market_pairs(p3cw):
    error, data = p3cw.request(
        entity='accounts',
        action='market_pairs',
        action_id=str(########)
    )
    if error == {}:
        return data
    else:
        raise(Exception(error['msg']))

market_pairs(p3cw)

This returns an empty list each time.

I tried it with several exchanges, both with "id" and "market_code." Other calls like "market_list" or "running_bots" work fine. What am I missing?

Thank you for your work!
Best regards
Yan

Smart Trade - Signature is invalid

Hey guys,

This might be something simple, I'm getting the following "Signature is invalid" error when using the Smart Trade V2.

I have got the Bot Deal calls to work, just having issues with this one. I assume its something I'm doing wrong.

image

Thanks! :)

Syntax error in request.py", line 14

I am getting a syntax error, when trying to run the script.

This is the error:
File "test.py", line 2, in
from py3cw.request import Py3CW
File "/usr/local/lib/python2.7/dist-packages/py3cw/request.py", line 14
def request(self, entity: str, action: str = '', action_id: str = None, payload: any = None):
^
SyntaxError: invalid syntax

image

This is the script:
from py3cw.request import Py3CW

p3cw = Py3CW(
key='Yร',
secret='YX',
request_options={
'request_timeout': 10,
'nr_of_retries': 1,
'retry_status_codes': [502]
}
)

account_id = 'XY'

def load_balance(p3cw, account_id):
error, data = p3cw.request(
entity='accounts',
action='load_balances',
action_id=str(account_id),
)
if error == {}:
return data
else:
raise(Exception(error['msg']))

Please help!

More detailed error feedback

When a trade fails the error msg is "invalid parameters". However, if I debug through py3cw and get the actual error feedback from 3Commas, it provides a detailed description of the parameter problems. It would be nice if the full error msg from 3Commas were floated up and provided in the py3cw error msg.

No module named 'Crypto'

on importing the latest pip version of py3cw (0.1.0):

from py3cw.request import Py3CW

I get the following error:

from Crypto.Signature import pkcs1_15

ModuleNotFoundError: No module named 'Crypto'

I have the Crypto module installed from pip - it does show up as 'crypto' (lowercase) in the list of pip modules though, despite me running install of 'Crypto' (uppercase).

I can import lowercase crypto:

import crypto
import Crypto
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'Crypto'

Smart trade v2

Hi,
Not sure what I'm missing now, but as checking code with other "entities" it seems to receive data.
Just can't place an order :/. There are no errors or anything.

image

Would appreciate any advice.

Thanks!

What happens when API Limit is reached

I took a look at the request.py file and I found out that the package doesn't handle 429 status code when the request is maxed out. I'd be happy to create PR with this implemented.

BTW great package.

PS : I already "fixed" this in my fork and added a customizable timeout for this situation.

remove smarttrades v1

I belive smart_trades (v1) doesn't work anymore. I had to use smart_trades_v2 as entity which is not mentioned in the readme. The smart_trades entity could probably be changed to match the v2 api version.
Thanks for a great wrapper :-)

Where can I get action_id and bot id and how do I create them?

I'm new to this and I want to use dca bot. I will also use the Freqtrade bot.

For a strategy in freqtrade to work in partnership with 3commas dca I need to add the following to the strategy. I don't understand how to generate the action id and bot_ids, what should I write there.

p3cw.request( # entity='bots', # action='start_new_deal', # action_id='123123', # payload={ # "bot_id": 123123, # "pair": f"{currency}_{coin}", # },

Error when loading Py3CW function

The package appears to be installed and up-to-date. However I am getting the following error when loading Py3CW.

from py3cw.request import Py3CW

Traceback (most recent call last):
File "", line 1, in
File "/home/sweetpeasimpson613/anaconda3/lib/python3.5/site-packages/py3cw/request.py", line 69
relative_url = f"{API_VERSION_V2}{path}"

Any insight would be greatly appreciated.

Historical data

Hi Guyz,
I am using this amazing tool to connect 3commasApi using python. I need some help in getting historical data. Currently its only giving my current day data by default. How can i get say last 5-6 month data?
Thanks in advance

missing "users" actions

Hi and thanks a lot for maintaining this library, very useful!

Is there any chance you could add the missing "users" actions? Especially the "permissions_info" one?

request_options error

Hi, i've taken back you wrapper and i was trying some of your examples, i got stuck with an error on the request option

`p3cw = Py3CW(
key='MYKEY',
secret='MYSECRET',
request_options={
'request_timeout': 10,
'nr_of_retries': 1,
'retry_status_codes': [502]
}

)`

`---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in
----> 1 p3cw = Py3CW(
2 key=MYKEY,
3 secret=MYSECRET,
4 request_options={
5 'request_timeout': 10,

TypeError: init() got an unexpected keyword argument 'request_options'`

If i remove the request options i have no more errors. Any hint ?

Forcing paper or real account mode using configurable header

It would be good to be able to force the API mode using the "Forced-Mode" header. Right now I am switching between the paper and real account using the user_mode on users API but it has the negative consequence of also changing the mode in the 3commas web app which can be very confusing. Thanks.

switch between real and paper trading

Hi,

I'm testing out a new strategy and would like to be able to ensure that the updates I make are only on the paper trading account. Is that possible or do I need to select paper trading in the UI and then run my script?

New endpoints not in config, proposal for more future proof

As expected, 3commas keeps adding new endpoints (e.g. events for grid bots). Your package hard codes all endpoints in config.py which makes it less future proof. I think it would be better for your request() function to allow any endpoint and have verify_request() only issue an warning for endpoint not defined in your config.py.

p.s. Hard coding api endpoints and parameters is not a good idea in general. API implementations should always allow full flexibility for obvious reasons.

str has no attribute get on new smart trade v2

I keep getting this error back, when trying to create new smart_trades_v2

{'error': True, 'msg': "Other error occurred: 'str' object has no attribute 'get'"}

Any ideas on why this is?

Here is my code:
error, data = p3cw.request( entity='smart_trades_v2', action='new', payload={ "account_id": account_id, "pair": pair, "skip_enter_step": True, "position": { "type": positionType, "order_type": positionOrderType, "units": { "value": amountToBuy }, "price": { "value": limitOrderPrice }, }, "take_profit": { "enabled": takeProfitEnabled, "steps": [ { "order_type": takeProfitOrderType, "price": { "value": takeProfitValue, "type": takeProfitPriceType }, "volume": takeProfitVolume } ] }, "stop_loss": { "enabled": stopLossEnabled, "order_type": stopLossOrderType, "conditional": { "price": { "value": stopLossPrice, "type": stopLossPriceType } } } } )

Use API error message with "other" error handling

The error msg for miscellanous errors is a bit vague. In my case, I put the wrong pair format (eg BTC-USDT), but couldn't see that was the error.

You can provide more detailed information with something such as:

        except Exception:
            return {'error': True, 'msg': 'Other error occurred: {} {}.'.format(
                response_json.get('error'), response_json.get('error_description'))}, None

Love the library otherwise!

SmartTrade : How to force market price close ?

Hi,

I managed to create Smartrades using :
smarterror, smartdata = p3cw.request(
entity='smart_trades_v2',
action='new',
payload={ ...}

==> What is the p3cw.request to send in order to force close at market price like we can do in 3commas SmartTrade page ?

Exceeded 30 redirects ERROR

I am getting sometimes the following error when querying a smart trade:
{'error': True, 'msg': 'Other error occurred: Exceeded 30 redirects.', 'status_code': None}.
I guess it is not issue with the py3cw itself, but maybe there is a workaround for this.

Creating a bot returns error for strategy list

I am trying to create a bot. I can get other information for the bot like stats.

success, out = py3cw.request(entity='bots', action='create_bot', payload=bots_def)

bots_def =
{'name': 'base_keiko', 'account_id': 105110, 'pairs': ['BNB_ADA', 'BNB_ALGO', 'BNB_ATOM', 'BNB_BAND', 'BNB_BLZ', 'BNB_CELR', 'BNB_DASH', 'BNB_ENJ', 'BNB_HBAR', 'BNB_IOST', 'BNB_IOTA', 'BNB_MATIC', 'BNB_NANO', 'BNB_ONE', 'BNB_ONT', 'BNB_REN', 'BNB_STX', 'BNB_TOMO', 'BNB_TRX', 'BNB_WABI', 'BNB_WAN'], 'max_active_deals': 21, 'base_order_volume': 0.2, 'base_order_volume_type': 'quote_currency', 'take_profit': 2.64, 'safety_order_volume': 0.1, 'safety_order_volume_type': 'quote_currency', 'martingale_volume_coefficient': 3.0, 'martingale_step_coefficient': 2.4, 'max_safety_orders': 3, 'active_safety_orders_count': 3, 'stop_loss_percentage': 0.0, 'cooldown': 0, 'trailing_enabled': False, 'trailing_deviation': 0.2, 'strategy': 'long', 'safety_order_step_percentage': 1.3, 'take_profit_type': 'total', 'strategy_list': [], 'leverage_type': 'not_specified', 'stop_loss_timeout_enabled': False, 'stop_loss_timeout_in_seconds': 0, 'min_volume_btc_24h': 0.0, 'tsl_enabled': False, 'profit_currency': 'quote_currency', 'start_order_type': 'limit', 'stop_loss_type': 'stop_loss', 'allowed_deals_on_same_pair': 1}

success returns ->
{'error': 'record_invalid', 'error_description': 'Invalid parameters', 'error_attributes': {'strategy_list': ['is missing']}}

I am happy to fix the issue, but i don't know a lot about making requests. If you could point me in the right direction, I would be greatful!

Create Bot error invalid strategy list

Thanks for your hard work on this wrapper, very usefoul.
I'm trying to create a bot with a short script (api works as i can get the full list of my bots).
With this code
error, data = p3cw.request( entity='bots', action='create_bot', payload={'name':'TEST BOT','account_id': 123456789, 'pairs':'BAT_BTC','base_order_volume':5, 'base_order_volume_type':'percent','take_profit':10, 'safety_order_volume':5,'safety_order_volume_type':'percent', 'martingale_volume_coefficient':1,'martingale_step_coefficient':5, 'max_safety_orders':5,'stop_loss_percentage':2, 'trailing_enabled':True,'trailing_deviation':1,'safety_order_step_percentage':2, 'take_profit_type':'base','active_safety_orders_count':5, 'strategy_list': [{"strategy":"manual"}] } )

I have error {'error': 'record_invalid', 'error_description': 'Invalid parameters', 'error_attributes': {'strategy_list': ['is invalid']}}

(account id if a fake number, but the real one in my test).

have tryed all the strategy list types mentioned on the 3c but i have error regardless.....
many thanks.

How to make a purchase with trailing?

Folks,
I need to make a buy, sell, trailing and stop-loss in just 1 request.
The only thing missing is trailing and I'm not getting it to work. Can someone help me please. Below is the payload I'm using:

payload={
"account_id": contaid,
"pair": coin,
"note": "pumpsniper",
"skip_enter_step": "true",
"position": {
"type": "buy",
"order_type": "market",
"units": {
"value": units
},
"price": {
"value": values
}
},
"take_profit": {
"enabled": "true",
"steps": [
{
"order_type": "limit",
"price": {
"value": values2,
"type": "bid"
},
"volume": 100,
}
]
},
"stop_loss": {
"enabled": "true",
"order_type": "market",
"conditional": {
"price": {
"value": stoploss,
"type": "bid"
}
}
}
}

Thanks!

script hang on this error

HI there
I'm having this hang problem almost every day after some time running fine.
Seems to be a connection related with 3commas but I didn't figure out to solve yet.
It happens on Python 3.6.8 and Python 3.8.3 as far as I tested only on these 2 versions.
this is the error stack after pressing Ctrl-c

2020-11-11 01:25:10,139-INFO: checking deals on account j4c0b1_3cexchange ^CTraceback (most recent call last): File "3ca-audit_deals.py", line 140, in <module> error,accounts = p3c.request(entity='accounts',action='') File "/home/opc/3ca/py3cw/py3cw/utils.py", line 26, in wrapper return func(*args, **kw) File "/home/opc/3ca/py3cw/py3cw/request.py", line 119, in request api_url_version=api_url_version File "/home/opc/3ca/py3cw/py3cw/request.py", line 82, in __make_request json=payload File "/home/opc/venv/3ca/lib64/python3.6/site-packages/requests/api.py", line 61, in request return session.request(method=method, url=url, **kwargs) File "/home/opc/venv/3ca/lib64/python3.6/site-packages/requests/sessions.py", line 530, in request resp = self.send(prep, **send_kwargs) File "/home/opc/venv/3ca/lib64/python3.6/site-packages/requests/sessions.py", line 643, in send r = adapter.send(request, **kwargs) File "/home/opc/venv/3ca/lib64/python3.6/site-packages/requests/adapters.py", line 449, in send timeout=timeout File "/home/opc/venv/3ca/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 677, in urlopen chunked=chunked, File "/home/opc/venv/3ca/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 381, in _make_request self._validate_conn(conn) File "/home/opc/venv/3ca/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 978, in _validate_conn conn.connect() File "/home/opc/venv/3ca/lib64/python3.6/site-packages/urllib3/connection.py", line 371, in connect ssl_context=context, File "/home/opc/venv/3ca/lib64/python3.6/site-packages/urllib3/util/ssl_.py", line 386, in ssl_wrap_socket return context.wrap_socket(sock, server_hostname=server_hostname) File "/usr/lib64/python3.6/ssl.py", line 365, in wrap_socket _context=self, _session=session) File "/usr/lib64/python3.6/ssl.py", line 773, in __init__ self.do_handshake() File "/usr/lib64/python3.6/ssl.py", line 1033, in do_handshake self._sslobj.do_handshake() File "/usr/lib64/python3.6/ssl.py", line 645, in do_handshake self._sslobj.do_handshake() KeyboardInterrupt Wed Nov 11 07:54:04 GMT 2020

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.