Coder Social home page Coder Social logo

virtualfish's Introduction

VirtualFish

Build Status PyPI Version Downloads

VirtualFish is a Python virtual environment manager for the Fish shell.

You can get started by reading the documentation. (It’s quite short… Promise!)

You can also get help on #virtualfish on OFTC (ircs://irc.oftc.net:6697/#virtualfish), the same network as the Fish IRC channel.

VirtualFish is maintained by Justin Mayer, and was originally created by Daisy Leigh Brenecki.

A quickstart, for the impatient

👉 Fish version 3.1 or higher is required. 👈

  1. python -m pip install virtualfish
  2. vf install
  3. Add VirtualFish to your prompt
  4. vf new myvirtualenv; which python

Read the documentation to find out more about project management, environment variable automation, auto-activation, and other plugins, as well as extending VirtualFish with events, virtualenvwrapper emulation, and more.

virtualfish's People

Contributors

abderrahim avatar airwoodix avatar alazaro avatar ammgws avatar botpub avatar branchvincent avatar cecep2 avatar chandsie avatar cybojanek avatar cycomanic avatar daisylb avatar dreid avatar dwt avatar fenekku avatar gechr avatar hakancelikdev avatar joar avatar justinmayer avatar mandarvaze avatar matan129 avatar mbr avatar mjstevens777 avatar nickburlett avatar raelmax avatar robsonpeixoto avatar scorphus avatar trungly avatar zanchey avatar zerok avatar zsommers 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

virtualfish's Issues

[RFE] Add support for setvirtualenvproject command

virtualenvwrapper has a command called setvirtualenvproject. If you cd to a dev checkout of your code and run this command, the virtualenv will store that location and anytime you activate the virtualenv in the future the shell will automatically cd to the location you were in when you ran setvirtualenvproject.

I might be able to find some time to work on this, but I wanted to document the RFE first. Would you accept a pull request for this feature?

P.S. I'm new to fish (and thus virtualfish), so I was quite happy to find this awesomeness that you have made. It's been great so far!

vf connect broken

fish: Expected redirection specification, got token of type '$VIRTUALFISH_ACTIVATION_FILE'
/Users/daenney/Development/github/virtualfish/virtual.fish (line 189):      basename $VIRTUAL_ENV > $VIRTUALFISH_ACTIVATION_FILE
                                                                                                               ^
in function '__vf_connect',
    called on line 52 of file '/Users/daenney/Development/github/virtualfish/virtual.fish',

in . (source) call of file '-',
    called on line 85 of file '/Users/daenney/Development/github/virtualfish/virtual.fish',

in function 'vf',
    called on standard input,
    with parameter list 'connect'

Fish is not showing the currently activated virtualenv

Not sure if this is a fish issue or one with virtualfish, but it seems that virtualfish is installed correctly and works, but it doesn't the currently activated virtualenv.

vf new application creates a virtualenv successfully. vf activate application is also definitely activating as when I run which python it gives me the virtualenv's python. It doesn't add the virtualenv name to the beginning of the command line as expected though. This started happening to me on OS X 10.9 Mavericks, it has been working fine for me on OS X 10.8 Mountain Lion.

Can't create a Python3 env

Host OS: Fedora 21, up to date.
Fish version: 2.1.1
virtualfish version: 1.0.0 (from pip)

~> vf new -p /usr/bin/python3 nikola3
Running virtualenv with interpreter /usr/bin/python3
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/virtualenv.py", line 37, in <module>
    import ConfigParser
ImportError: No module named 'ConfigParser'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/virtualenv.py", line 39, in <module>
    import configparser as ConfigParser
  File "/usr/lib/python2.7/site-packages/configparser.py", line 397
    _KEYCRE = re.compile(ur"%\(([^)]+)\)s")
                                         ^
SyntaxError: invalid syntax
Error: The virtualenv wasn't created properly.
virtualenv returned status 1.

ConfigParser library seems installed as well:

configparser                - This library brings the updated configparser from Python 3.5 to Python 2.6-3.5.
  INSTALLED: 3.3.0.post2
  LATEST:    3.5.0b2

Setting virtualenv and pip executable names

With Python 3.4 using pyvenv/pip and—at least on my (Arch) system—Python 2.x using virtualenv2/pip2, I'd like to be able to choose the name of the executables. I sometimes write code for Python 2 and, if the circumstances allow it, for Python 3 as well. Being able to choose the executables on the fly without having to change the script would help immensely.

As far as I'm aware, virtualenv is only used once in the __vf_new function, and pip is used only in the global_requirements.fish file.

Cannot set python version

When I try to set a custom python version (e.g. 3.5), virtualfish looks for it in /Users/Matt3o12/.virtualenvs/ instead of using the correct path.

When I enter vf new foo -p python3.5, I get:

The executable /Users/Matt3o12/.virtualenvs/python3.5 (from --python=/Users/Matt3o12/.virtualenvs/python3.5) does not exist
Error: The virtualenv wasn't created properly.
virtualenv returned status 3.

When I use an absolute path (vf new bar -p (which python3.5)), I get

The executable /Users/Matt3o12/.virtualenvs//usr/local/bin/python3.5 (from --python=/Users/Matt3o12/.virtualenvs//usr/local/bin/python3.5) does not exist
Error: The virtualenv wasn't created properly.
virtualenv returned status 3.

This also affects other commands such as vf tmp.

I use the latest development version and Mac OS X 10.11.3 (El Capitan). Virtualenvwrapper and all
its dependencies are up-to-date.


Workaround

Just use bash for a second:

bash -c "source \"/usr/local/bin/virtualenvwrapper.sh\" && mkvirtualenv -p python3.5 name"; and vf activate name

'vf ls' output error message '.virtualenvs' does not exist' when first install virtualfish

I just install virtualfish step-by-step from the doc, then 'vf ls' got the error message:

⋊> ~ vf ls                                                                                                                                                                                       
cd: The directory '/Users/xxx/.virtualenvs' does not exist
/usr/local/Cellar/fish/2.2.0/share/fish/functions/cd.fish (line 25):    builtin cd $argv[1]
                                                                        ^
in function 'cd'
    called on line 14 of file /usr/local/Cellar/fish/2.2.0/share/fish/functions/pushd.fish
    with parameter list '/Users/xxx/.virtualenvs'

in function 'pushd'
    called on line 153 of file /Library/Python/2.7/site-packages/virtualfish/virtual.fish
    with parameter list '/Users/xxx/.virtualenvs'

in function '__vf_ls'
    called on line 1 of file -

from sourcing file -
    called on line 60 of file /usr/local/Cellar/fish/2.2.0/share/fish/functions/eval.fish

in function 'eval'
    called on line 27 of file /Library/Python/2.7/site-packages/virtualfish/virtual.fish

in function 'vf'
    called on standard input
    with parameter list 'ls'

maybe should add command 'mkdir ~/.virtualenvs' in 'virtual.fish'...

`vf cdpackages` description problem

When I tell fish to autocomplete the vf command, the description of vf cdpackages seems to have some problems.

I do:

  vf <tab>

What I get

cdpackages  (function __vf_cdpackages --description Change\ directory\ to\ the\ active\ virtualenv\'s\ site-packages)

Expected:

  cdpackages  (Change directory to the active virtualenv's site-packages)

It seems a fish problem (Using fish 2.1 on Mac 10.6 installed using macports). Does this work for you?

Minor issue -- how do I get pycharm to recognize my virtualfish environments?

Hi Folks. I'm developing with PyCharm -- it's a great IDE. But when I'm at terminal and I've got my python environment active, when I type "whereis python" -- I still get /usr/bin/python .. So I'm not exactly sure where my python virtual environment is. I think I'm missing something fundamental about how virtualfish works.

Fails to create python 3 virtualenv

$ vf new --python=/usr/local/bin/python3 finance-scraper3
Running virtualenv with interpreter /usr/local/bin/python3
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 14, in <module>
    import shutil
  File "/usr/local/Cellar/python3/3.4.0/Frameworks/Python.framework/Versions/3.4/lib/python3.4/shutil.py", line 11, in <module>
    import fnmatch
  File "/usr/local/Cellar/python3/3.4.0/Frameworks/Python.framework/Versions/3.4/lib/python3.4/fnmatch.py", line 15, in <module>
    import functools
  File "/usr/local/Cellar/python3/3.4.0/Frameworks/Python.framework/Versions/3.4/lib/python3.4/functools.py", line 21, in <module>
    from collections import namedtuple
  File "/usr/local/Cellar/python3/3.4.0/Frameworks/Python.framework/Versions/3.4/lib/python3.4/collections/__init__.py", line 17, in <module>
    from reprlib import recursive_repr as _recursive_repr
  File "/usr/local/lib/python2.7/site-packages/reprlib.py", line 3, in <module>
    from repr import *
ImportError: No module named 'repr'
Error: The virtualenv wasn't created properly.
virtualenv returned status 1.

Separate 'vf connect' into a plugin

Some people don't like magic happening when they cd, and it's not really part of virtualfish's core functionality. It can probably go in a plugin.

Deactivate global requirements

I had the case where I needed a clean tmp env but the global requirements got installed. I deactivated for this problem the global requirements

It would be cool if vf new or vf tmp hat some parameter like --global-requirements=False

Auto activation breaks if the cat command doesn't run /bin/cat

I created an alias recently, named cat, that uses hicat instead.
The problem is that hicat formats its output for easier reading, but it makes this line crash: https://github.com/adambrenecki/virtualfish/blob/master/virtualfish/auto_activation.fish#L14

The error message you get is:

Unexpected end of string, square brackets do not match
- (line 1): begin; __vf_activate home 
 ;end <&3 3<&-
                                 ^
from sourcing file -
    called on line 60 of file /usr/share/fish/functions/eval.fish

in function “eval”
    called on line 56 of file ~/.config/fish/loads/virtualenv.fish

in function “vf”
    called on line 292 of file ~/.config/fish/loads/virtualenv.fish
    with parameter list “activate home”

in function “__vfsupport_auto_activate”
    called on line 7 of file /usr/share/fish/functions/cd.fish
    with parameter list “VARIABLE SET PWD”

in event handler: handler for variable “PWD”

source: Error while reading file “-”

As a fix, I replaced cat with command cat in ~/.config/fish/loads/virtualenv.fish and now it works fine.

Not sure if that's something that should be fixed in the code (in which case, other similar commands should probably be fixed too: echo, sed, ...) or not, but I wanted to share the information in case someone else runs into this.

Source tarball needed and debian package

I'm trying to build a debian package out of this but for that a source tarball is needed. You only uploaded a wheel to pypi which I can't use. I'm not a packaging pro so maybe someone knows a way to do this for virtualfish.
Fact is, I will not invoke sudo pip install .... That's absolutely not a good idea.

Could you ether provide a debian package yourself or upload a source tarball to pypi so that I can build it myself? Would be awesome.

Auto-activation not working when fish is launched inside the directory

Hi, thanks for maintaining such a great project, this helps me a lot. I love the auto-activation feature in particular but it seems that it does not work when launching fish inside the directory (and also, when opening a new Terminal tab in the same directory), wish you could take a look at it :P

How to re-produce this problem:

  1. bash
  2. cd /some/path/with/venv/auto/activation
  3. fish

Expected: type python returns ~/.virtualenvs/xxx/bin/python

Instead: type python returns /usr/local/bin/python

Fish events for virtualenv creation

In addition to the existing post-activation events, it would be great to have events for vf new so that arbitrary actions could be taken upon new virtualenv creation. This would of course be analogous to the postmkvirtualenv hook in virtualenvwrapper.

While there are many potential use cases, the one I have in mind is running pip install wheel every time a new virtualenv is created. Once installed, Wheel can be used to reduce subsequent package install time from minutes to seconds.

Use hook scripts instead of events

Hello,

For virtualenv activation/deactivation etc hooks, I'm wondering if it's really proper to use Fish events instead of a simple hook script? Using hook files

  1. makes the system more "lazy," i.e. if I don't touch virtualenvs in a shell session my shell won't have all these event handlers loaded
  2. make it easy to organize/find the scripts. With event handlers I have to use grep or otherwise hunt down where I actually decided to place the event handler if I need to change it.

I'm quite new to Fish still but these are my initial thoughts.

VIRTUALFISH_HOME support multiple directory

I'm using different location to store my virtualenvs:

  1. ~/.virtualenvs ;
  2. ~/.env ;
  3. ./env relative to a project directory (I'm migrating to this to have self contains projects).

I tried the following:

set -gx VIRTUALFISH_HOME $HOME/.env $HOME/.virtualenvs env

But got the error:

cd: The directory “/home/user/.env” does not exist
/usr/share/fish/functions/cd.fish (line 25):    builtin cd $argv[1]
                                                ^
in function “cd”
        called on line 14 of file /usr/share/fish/functions/pushd.fish
        with parameter list “/home/user/.env”

in function “pushd”
        called on line 134 of file /usr/local/lib/python2.7/dist-packages/virtualfish/virtual.fish
        with parameter list “/home/user/.env /home/user/.virtualenvs env”

in function “__vf_ls”
        called on line 1 of file -

from sourcing file -
        called on line 60 of file /usr/share/fish/functions/eval.fish

in function “eval”
        called on line 25 of file /usr/local/lib/python2.7/dist-packages/virtualfish/virtual.fish

in function “vf”
        called on standard input
        with parameter list “ls”

Question

  • Any thoughts on that?

Add more help into vf

I expected

vf --help

or

vf help

to work.

Also I would like to know which parameters can I use there:

vf new [<options>] <envname>

Python 3 support?

Hi,

I'm just wondering if it's possible to get this working with Python 3?

For example, if I go into a virtualenv using virtualfish, all of the Python 2 binaries point to inside the virtualenv:

victorhooi@oswin-rmbp ~> (jiramail) which pip
/Users/victorhooi/.virtualenvs/jiramail/bin/pip
victorhooi@oswin-rmbp ~> (jiramail) which python
/Users/victorhooi/.virtualenvs/jiramail/bin/python

However, the Python 3 commands still point to the system ones:

victorhooi@oswin-rmbp ~> (jiramail) which python 3
/Users/victorhooi/.virtualenvs/jiramail/bin/python
victorhooi@oswin-rmbp ~> (jiramail) which pip3
/usr/local/bin/pip3

virtualfish loader error: plugin compat_aliases does not exist!

Hi,
I installed virtualfish via pip as root:
~> eval (python -m virtualfish compat_aliases)
virtualfish loader error: plugin compat_aliases does not exist!

Additional information:
virtualfish - A virtualenv wrapper for the Fish shell
INSTALLED: 1.0.0a1 (latest)

OS: Fedora 21 up-to-date

Cheers

Allow existing virtualenv directories to work with virtualfish

I installed virtualfish and auto_activate, but auto_activate isn't working. I assume this is because virtualfish doesnt detect the virtualenv folder I have. So the request is to have a way to port an existing directory so virtualfish can use it later

Fix for command expansion annoyance

Just an FYI:

The default version of the fish shell that can be installed through homebrew (2.1.0) throws a status code of 1 into my prompt (and $status) while using "workon" if VIRTUALFISH_COMPAT_ALIASES is set. The "error" - though I even hesitate to call it that - was being thrown on line 70 in virtual.fish. I think that somehow the result of "(count $argv)" was getting pushed into $status. It was just a cosmetic glitch but it still bugged the hell out of me.

Installing fish via brew install fish --HEAD or upgrading via brew upgrade fish --HEAD takes care of this annoyance. The cosmetic error is gone and everything else still works. I'm not sure when they fixed this since I'm too lazy to read through the commits but I'm glad they did.

How can I enable compat_aliases

I came across the same problem in #51

And figure it by removing compat_aliases, but how can I bring back those commands in virtualenvwrapper?

fish: Unknown command 'mkvirtualenv'

Name: virtualfish
Version: 1.0.0a1

Error when using connect subcommand

Trying to move from zsh to fish, and very happy to find vitualfish, so I nuked my old virtualenvwrapper virtualenvs and started again. But got this error:

ben@Bens-MacBook-Pro ~/project> rm -rf ~/.virtualenvs/
ben@Bens-MacBook-Pro ~/project> vf new project
ben@Bens-MacBook-Pro ~/project> which python
/Users/ben/.virtualenvs/project/bin/python
ben@Bens-MacBook-Pro ~/project> pip install -r requirements/dev.txt
 ... compilation barf ...
ben@Bens-MacBook-Pro ~/project> vf connect 
fish: Expected redirection specification, got token of type '$VIRTUALFISH_ACTIVATION_FILE'
/Users/ben/dotfiles/virtualfish/virtual.fish (line 186):                basename $VIRTUAL_ENV > $VIRTUALFISH_ACTIVATION_FILE
                                                                                                 ^
in function '__vf_connect',
        called on line 52 of file '/Users/ben/dotfiles/virtualfish/virtual.fish',

in . (source) call of file '-',
        called on line 85 of file '/Users/ben/dotfiles/virtualfish/virtual.fish',

in function 'vf',
        called on standard input,
        with parameter list 'connect'

Oh dear.

ben@Bens-MacBook-Pro ~/w/d/autoclone> fish --version
fish, version 2.1.0
ben@Bens-MacBook-Pro ~/w/d/autoclone> virtualenv --version
1.10.1

Is OSX supported at this time?

Add support for `.venv`

From a comment by @justinmayer on #4:

Probably not the best place to ask this question, but why did you decide to use .vfenv instead of the more common .venv? Is there something special or different that VirtualFish is doing in order to warrant using a different identifier? For folks who either (a) migrate from virtualenvwrapper or (b) routinely switch between fish and bash, wouldn't it make more sense to retain consistency with the .venv nomenclature instead of creating a new identifier?

I actually wasn't aware of Justin Abrahm's virtualenv-wrapper-helper when I wrote that functionality. I chose virtualfish-specific names for everything that didn't have a virtualenvwrapper equivalent, to avoid stomping on something with the same name but otherwise unrelated.

Now that I know about it, I'll add support for it :)

Add missing compatible aliases

This issue exists to remind us of the missing compatible aliases and help us decide whether we should code them or not.

Feasible

Not so easy

  • cpvirtualenv

    Copying virtual environments is not well supported. Each virtualenv has path information hard-coded into it, and there may be cases where the copy code does not know to update a particular file. Use with caution.

Incompatible? / Useless?

Already in \o/

Path .virtualenvs is hardcoded

I have all my virtual environments under .venvs
So while vf ls did list my virtual environments, workon did not work.

Here is a partial stack trace (sort of)

mandar@MacBook-Pro ~/.venvs> vf ls
cd: The directory '/Users/mandar/.virtualenvs' does not exist
/usr/local/Cellar/fish/2.2.0/share/fish/functions/cd.fish (line 25):    builtin cd $argv[1]
                                                                    ^
in function 'cd'
    called on line 14 of file /usr/local/Cellar/fish/2.2.0/share/fish/functions/pushd.fish
    with parameter list '/Users/mandar/.virtualenvs'

in function 'pushd'
    called on line 134 of file /usr/local/lib/python3.4/site-packages/virtualfish/virtual.fish
    with parameter list '/Users/mandar/.virtualenvs'

in function '__vf_ls'
    called on line 1 of file -

from sourcing file -
    called on line 60 of file /usr/local/Cellar/fish/2.2.0/share/fish/functions/eval.fish

in function 'eval'
    called on line 25 of file /usr/local/lib/python3.4/site-packages/virtualfish/virtual.fish

in function 'vf'
    called on standard input
    with parameter list 'ls'

py2nikola
py3nikola
py3testupgrade

python -m virtualfish shows wrong (relative) path on python27

On python2, the module ends up using a path relative to the current directory, but python3.5 works:

nick@cumulus /> python2.7 -m virtualfish
. /build/bdist.macosx-10.11-x86_64/egg/virtualfish/virtual.fish;emit virtualfish_did_setup_plugins
nick@cumulus /private/tmp> python2.7 -m virtualfish
. /private/tmp/build/bdist.macosx-10.11-x86_64/egg/virtualfish/virtual.fish;emit virtualfish_did_setup_plugins
nick@cumulus /> python3.5  -m virtualfish
. /usr/local/lib/python3.5/site-packages/virtualfish-1.0.0-py3.5.egg/virtualfish/virtual.fish;emit virtualfish_did_setup_plugins

Support for postactivate

Hi,
I've started to use your virtualfish and I like it. Would it be possible to add support for postactivate actions? With virtualenvwrapper I can put this into bin/postactivate:

!/bin/bash

This hook is run after this virtualenv is activated.

PROJECT_PATH=/path/to/project
export DJANGO_SETTINGS_MODULE=project.settings
export PYTHONPATH=$PROJECT_PATH/src
cd $PROJECT_PATH

Also, aliases from acvirtualenv to workon might be handy.

Provide a way to set the preferred Python interpreter as default

Hi,
I started learning Python and I chosed version 3.
However my OS (Fedora) ships with Python 2 as the default interpreter so every time I create a new project I have to add the -p python3 parameter.
I would really appreciate if I can set Python 3 as the default interpreter for all my new projects.
Thanks!

fish: unknown command 'vf'

Followed the instructions to the letter and had everything install properly. Keep encountering the above mentioned error though.

mkvirtualenv works fine on bash but can't get virtualfish to start. Any help/recommendations? Thanks!

Error with theme omf pure: test: Missing argument at index 2

When customizing my fish_prompt as shown in the documentation with my omf theme pure I got error

test: Missing argument at index 2

I tried with another theme (flash) and got event more error.

steps

I edited the fish_prompt as follow:

funced fish_prompt
# add lines, then save and quit vim
funcsave fish_prompt
# Ctrl+D to quit tmux tab
# open new tab, get the error

Question

How can I solve this issue?

See also

Roll our own argument parsing for 'vf new'

Instead of calling virtualenv directly from our Fish script, it might be a good idea to pass the args to vf new in to some Python code in the virtualenv package, and do some argument parsing in there.

This would let us work around the virtualenv bug in #35 by reading out any --python arguments and acting appropriately, as well as making it easy to implement #16.

error activating virtualenv

hi adam,

thanks for your work first! I really like fish and I feel thankful for people who are writing code for it!

I ran into a problem when I activated my first environment:

christoph@christoph ~/k/dev> vf activate myenv
activate myenv
fish: Could not expand string '$argv[0..1]'
/usr/local/bin/virtual.fish (line 49):  echo $argv[0..1]
                                                    ^
in function 'vf',
    called on standard input,
    with parameter list 'activate myenv'

I consulted the fish documentation (I don't know too much about it) and understood your code, but honestly I have no idea why it does not work.

Finally I made a fast but not elegant fix:

        set scargs $argv[2]
        #set scargs $argv[2..-1]

Maybe other people might be affected too? Do you know why the error is popping up?

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.