Giter Club home page Giter Club logo

rmm's Introduction

Hey 👋, I'm Michael.

I'm a software engineer. I'm passionate about creating and contributing to good software.

About Me

  • 🦀 Learning Rust.
  • 📖 Studying data structures, algorithms, and design patterns.
  • 👨‍🏭 Currently working on RimWorld Mod Manager
  • 🍲 Maintaining Arch User Repository packages.
  • 🎼 Practicing guitar and writing music.

rmm's People

Contributors

ant-v avatar bakaemon avatar dendrobiummoniliforme avatar dependabot[bot] avatar spoons 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

Watchers

 avatar  avatar  avatar

rmm's Issues

"TypeError: 'NoneType' object is not subscriptable" on all commands that list downloaded mods

Description
All commands that list downloaded mods produce the following error:

Traceback (most recent call last):
  File "/Users/~/Library/Python/3.9/bin/rmm", line 8, in <module>
    sys.exit(run())
  File "/Users/~/Library/Python/3.9/lib/python/site-packages/rmm/cli.py", line 548, in run
    globals()[command](sys.argv, manager)
  File "/Users/~/Library/Python/3.9/lib/python/site-packages/rmm/cli.py", line 96, in wrapper_func
    func(*args, **kwargs)
  File "/Users/~/Library/Python/3.9/lib/python/site-packages/rmm/cli.py", line 413, in order
    tabulate_mod_or_wr(
  File "/Users/~/Library/Python/3.9/lib/python/site-packages/rmm/cli.py", line 188, in tabulate_mod_or_wr
    mod_list = [[n.packageid, n.name, n.author[:20], n.enabled] for n in mods]
  File "/Users/~/Library/Python/3.9/lib/python/site-packages/rmm/cli.py", line 188, in <listcomp>
    mod_list = [[n.packageid, n.name, n.author[:20], n.enabled] for n in mods]
TypeError: 'NoneType' object is not subscriptable

I have tested the following commands: list, enable, query, disable, order and they all produce the same error.
I have tested the following commands and they do work: config, sync, sort

It used to work fine...
It could be due to an update in python, but I think that somehow some mods is lacking one of the parameters you are looping over

Info
OS: MacOS 12.6
RMM: 1.0.14
RimWorld: 1.3.3387 rev674

Doesn't run any commands due to xml error

Description
None of the commands work.
Logs below:

cpai@archlinux-cpai ~/Games/Games-hdd/rwmm $ rmm config
Ignoring /hdd/cpai/Steam/steamapps/common/RimWorld/Mods/Harmony
Ignoring /hdd/cpai/Steam/steamapps/common/RimWorld/Mods/Place mods here.txt
multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/multiprocessing/pool.py", line 48, in mapstar
    return list(map(*args))
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/site-packages/rmm/mod.py", line 75, in create_from_path
    tree = ET.parse(path / "About/About.xml")
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/xml/etree/ElementTree.py", line 1229, in parse
    tree.parse(source, parser)
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/xml/etree/ElementTree.py", line 580, in parse
    self._root = parser._parse_whole(source)
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 8, column 30
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/cpai/.pyenv/versions/3.10.4/bin/rmm", line 10, in <module>
    sys.exit(run())
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/site-packages/rmm/cli.py", line 548, in run
    globals()[command](sys.argv, manager)
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/site-packages/rmm/cli.py", line 96, in wrapper_func
    func(*args, **kwargs)
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/site-packages/rmm/cli.py", line 329, in config
    data = manager.order_all_mods()
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/site-packages/rmm/manager.py", line 174, in order_all_mods
    installed_mods = self.installed_mods()
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/site-packages/rmm/manager.py", line 110, in installed_mods
    mods = ModFolder.read_dict(self.config.mod_path)
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/site-packages/rmm/mod.py", line 183, in read_dict
    return Mod.list_to_dict(ModFolder.read(path))
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/site-packages/rmm/mod.py", line 171, in read
    p.map(
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/multiprocessing/pool.py", line 364, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/home/cpai/.pyenv/versions/3.10.4/lib/python3.10/multiprocessing/pool.py", line 771, in get
    raise self._value
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 8, column 30

Was installed via the AUR. Needed to manually install dependencies with pip due to use of pyenv instead of system Python.

All 3 environment variables were set to their respective directories, and the ModsConfig.xml was set to the default no mods version by RimWorld.

Reproduction
Run any command, above was rmm list.

Info
OS: Arch Linux
RimWorld version: 1.3.3326 rev564

$ rmm -v
1.0.14.dev2

TypeError: expected str, bytes or os.PathLike object, not list

Description
rmm crashes with error:

 TypeError: expected str, bytes or os.PathLike object, not list

Reproduction
Tried using list:

  1. run 'python3 -m rmm list' <- Crashes

And also tried with query:

  1. run 'python3 -m rmm query' <- Crashes

Info
OS: macOS Monterey 12.0.1
Python: 3.10.1
RMM: 0.1.0

Full error:

alejandro@Mac ~ % python3 -m rmm query -p /Applications/RimWorld.app
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/Users/alejandro/Library/Python/3.10/lib/python/site-packages/rmm/__main__.py", line 5, in <module>
    t = CLI()
  File "/Users/alejandro/Library/Python/3.10/lib/python/site-packages/rmm/core.py", line 491, in __init__
    self.path = find_game(self.path)
  File "/Users/alejandro/Library/Python/3.10/lib/python/site-packages/rmm/core.py", line 483, in find_game
    if not os.path.basename(path) == "Mods":
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/posixpath.py", line 142, in basename
    p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not list

By the way, I'm starting a similar project, inspired by yours, but developed from scratch with Rust named rwm available here.

Please specify your RimWorld config directory with -u

Probably not an issue with the tool but with the manual/help.

So i have the game itself in an extra folder, so i export RMM_PATH=<path-to-game>/Mods. Then when i run rmm, i get the message in the title. So i run rmm -u '\<prefix-c\>/AppData/LocalLow/Ludeon Studios/RimWorld by Ludeon Studios/Config/' list but still same message. Same with '...Ludeon Studios/Config/ModsConfig.xml'. Game was already started.

The -u --user DIR User config path. of --help doesn't really help either. What am i supposed to run with -u?

edit: Ah, from RMM_USER_PATH "Folder containing saves and config". But still same result ...by Ludeon Studios/.

editedit: rmm -u ...by Ludeon Studios/ \<action\> on the other hand works.

Input on weird steam errors

Description
Weird Steam py error not fixed by last commit.
I'm getting the following lines and it enters the python debugger:

Downloaded item 2868392160 to "/var/folders/3z/7qtx91l9737bzsmnxkrxphmm0000gn/T/rmm-fmwd9v2j/Library/Application Support/Steam/steamapps/workshop/content/294100/2868392160" (2310657 bytes) > /opt/homebrew/lib/python3.10/site-packages/rmm/steam.py(107)download()
-> if util.platform() == "linux" and not mod_path.exists():
(Pdb) 

And waits for input.
Mod in question is: Research Reinvented

Reproduction
Sync or update Research Reinvented

Info
MacOS: 13.1 (22C65)
RMM: 1.0.15 (although shows up as 0.0.0, after update from 1.0.14, via pip3)
Rimworld: 1.4.3613

FileNotFoundError on Ubuntu on sync or update

Trying to install (or update) mod and get error

FileNotFoundError: [Errno 2] No such file or directory: '/tmp/rmm-y4q05ss4/Steam/SteamApps/workshop/content/294100'

According to the console output, the file was successfully downloaded to /tmp/rmm-y4q05ss4/Steam/steamapps/workshop/content/294100/1356838246
RimWorld is bought on gog.com, not steam, but other steam games are present at ~/.steam/root/steamapps/workshop/...
Here is the full console output:

$ rmm sync uugggg.sharetheload
  no  name            author
----  --------------  --------
   1  Share The Load  Uuugggg
Packages to install (eg: 2 or 1-3)
1
Package(s): 
Share The Load by Uuugggg 

will be installed.
ln: failed to create symbolic link '/tmp/rmm-y4q05ss4/.steam/root': No such file or directory
ln: failed to create symbolic link '/tmp/rmm-y4q05ss4/.steam/steam': No such file or directory
Redirecting stderr to '/tmp/rmm-y4q05ss4/Steam/logs/stderr.txt'
Logging directory: '/tmp/rmm-y4q05ss4/Steam/logs'
[  0%] Checking for available updates...
[----] Verifying installation...
Steam Console Client (c) Valve Corporation - version 1702079268
-- type 'quit' to exit --
Loading Steam API...dlmopen steamservice.so failed: steamservice.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога
OK

Connecting anonymously to Steam Public...OK
Waiting for client config...OK
Waiting for user info...OK
Downloading item 1356838246 ...
Success. Downloaded item 1356838246 to "/tmp/rmm-y4q05ss4/Steam/steamapps/workshop/content/294100/1356838246" (656922 bytes) Traceback (most recent call last):
  File "/home/alcatraz/.local/bin/rmm", line 8, in <module>
    sys.exit(run())
  File "/home/alcatraz/.local/lib/python3.10/site-packages/rmm/cli.py", line 569, in run
    globals()[command](sys.argv, manager)
  File "/home/alcatraz/.local/lib/python3.10/site-packages/rmm/cli.py", line 98, in wrapper_func
    func(*args, **kwargs)
  File "/home/alcatraz/.local/lib/python3.10/site-packages/rmm/cli.py", line 321, in sync
    manager.sync_mods(queue)
  File "/home/alcatraz/.local/lib/python3.10/site-packages/rmm/manager.py", line 72, in sync_mods
    steam_mods, steam_cache_path = SteamDownloader.download(
  File "/home/alcatraz/.local/lib/python3.10/site-packages/rmm/steam.py", line 111, in download
    return (ModFolder.read(mod_path), mod_path)
  File "/home/alcatraz/.local/lib/python3.10/site-packages/rmm/mod.py", line 157, in read
    p.map(
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 367, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 478, in _map_async
    iterable = list(iterable)
  File "/usr/lib/python3.10/pathlib.py", line 1017, in iterdir
    for name in self._accessor.listdir(self):
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/rmm-y4q05ss4/Steam/SteamApps/workshop/content/294100'

Failed to recognize mod

Description
I synced the mod "Fridges Are Hoppers". But when using update it says that it's ignoring it.

I suspect the issue is the authors name, because usually when you sync mods the folder gets renamed to author.mod, which in this case it didn't, it just staid as 2894860548.

Reproduction
List the steps to reproduce the issue. Ex:

  1. rmm sync "Fridges Are Hoppers"
  2. rmm update

Info
OS: Manjaro XFCE
RMM: 1.0.16.dev3
RimWorld: 1.4.3704 rev896

Mod is downloaded to the wrong path

Description
This is a duplicate of #6, which is supposedly solved

Reproduction

  1. Try downloading any mod with rmm sync
  2. After a successful download, get an error that the path is invalid
    Success. Downloaded item 2950258180 to "/tmp/rmm-njy308k3/.steam/SteamApps/workshop/content/294100/2950258180" (1199699 bytes)
    a bunch of errors
    FileNotFoundError: [Errno 2] No such file or directory: '/tmp/rmm-njy308k3/Steam/steamapps/workshop/content/294100'

Info
OS: Linux CachyOS
RMM version: 1.0.16.dev3 (downloaded from AUR rmm-git)
RimWorld version: 1.4.3704

Not running on MacOS

Description
Rmm does not start on macOS

Reproduction
Installation seems to be working, steamcmd is installed, python3 is running, but running python3 -m rmm returns the following:
File "/opt/homebrew/Cellar/[email protected]/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "/opt/homebrew/Cellar/[email protected]/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code exec(code, run_globals) File "/Users/~/Library/Python/3.9/lib/python/site-packages/rmm/__main__.py", line 3, in <module> from rmm.cli import run ModuleNotFoundError: No module named 'rmm.cli'

Info
MacOS 12.2 (21D49) (M1)
Rmm version: 1.0.4
Rimworld Version: 1.3.3200

`name 'manager' is not defined`

This happens when I use rmm sort.

╰─ rmm sort
Downloading rules file

Traceback (most recent call last):
  File "/usr/bin/rmm", line 8, in <module>
    sys.exit(run())
             ^^^^^
  File "/usr/lib/python3.11/site-packages/rmm/cli.py", line 569, in run
    globals()[command](sys.argv, manager)
  File "/usr/lib/python3.11/site-packages/rmm/cli.py", line 98, in wrapper_func
    func(*args, **kwargs)
  File "/usr/lib/python3.11/site-packages/rmm/cli.py", line 367, in sort
    manager.modsconfig.autosort(manager.installed_mods(), manager.config)
  File "/usr/lib/python3.11/site-packages/rmm/modsconfig.py", line 113, in autosort
    manager.Manager(config).sync_mods([Mod(steamid=1847679158)])
    ^^^^^^^
NameError: name 'manager' is not defined

File Not Found after update

After i got it working with rmm -u path-to/Rimworld by Ludeon Studios/ update i got

FileNotFoundError: [Errno 2] No such file or directory: '/run/user/1000/rmm-4jm05kd4/Steam/SteamApps/workshop/content/294100'

It should be steamapps, not SteamApps.

`rmm sync` doesn't work after some use : `AttributeError: 'NoneType' object has no attribute 'lower'`

I have downloaded a bunch of mods, and now every rmm sync results in this:

Log
Steam Console Client (c) Valve Corporation - version 1702079268
-- type 'quit' to exit --
Loading Steam API...dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
OK

Connecting anonymously to Steam Public...OK
Waiting for client config...OK
Waiting for user info...OK
Downloading item 2801102127 ...
Success. Downloaded item 2801102127 to "/tmp/rmm-ktaoq_c5/.steam/SteamApps/workshop/content/294100/2801102127" (1230364 bytes) Downloading item 2898000489 ...
Success. Downloaded item 2898000489 to "/tmp/rmm-ktaoq_c5/.steam/SteamApps/workshop/content/294100/2898000489" (303223 bytes) Downloading item 1279012058 ...
Success. Downloaded item 1279012058 to "/tmp/rmm-ktaoq_c5/.steam/SteamApps/workshop/content/294100/1279012058" (1530838 bytes) multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/usr/lib/python3.11/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
                    ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/multiprocessing/pool.py", line 48, in mapstar
    return list(map(*args))
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/rmm/mod.py", line 129, in create_from_path
    return Mod(
           ^^^^
  File "<string>", line 16, in __init__
  File "/usr/lib/python3.11/site-packages/rmm/mod.py", line 43, in __post_init__
    self.after = [item.lower() for item in self.after]
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/rmm/mod.py", line 43, in <listcomp>
    self.after = [item.lower() for item in self.after]
                  ^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'lower'
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/bin/rmm", line 8, in <module>
    sys.exit(run())
             ^^^^^
  File "/usr/lib/python3.11/site-packages/rmm/cli.py", line 569, in run
    globals()[command](sys.argv, manager)
  File "/usr/lib/python3.11/site-packages/rmm/cli.py", line 98, in wrapper_func
    func(*args, **kwargs)
  File "/usr/lib/python3.11/site-packages/rmm/cli.py", line 321, in sync
    manager.sync_mods(queue)
  File "/usr/lib/python3.11/site-packages/rmm/manager.py", line 72, in sync_mods
    steam_mods, steam_cache_path = SteamDownloader.download(
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/rmm/steam.py", line 111, in download
    return (ModFolder.read(mod_path), mod_path)
            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/rmm/mod.py", line 157, in read
    p.map(
  File "/usr/lib/python3.11/multiprocessing/pool.py", line 367, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/multiprocessing/pool.py", line 774, in get
    raise self._value
AttributeError: 'NoneType' object has no attribute 'lower'

How do I install a mod list

Do I just paste the links in? Could you provide more detailed instructions, like we just paste steam workshop links?

AUR package fails to install. "No module named pip"?

Description
When installing the AUR package it fails with the following message:

Error log
/usr/lib/python3.10/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
  warnings.warn(msg, warning_class)
/usr/lib/python3.10/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer.
  warnings.warn(
/usr/bin/python: No module named pip
Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/setuptools/installer.py", line 82, in fetch_build_egg
    subprocess.check_call(cmd)
  File "/usr/lib/python3.10/subprocess.py", line 369, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/usr/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpgrhh0hkb', '--quiet', 'pbr']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/sylvester/.cache/paru/clone/rmm-git/src/rmm-git/setup.py", line 3, in <module>
    setup(setup_requires=["pbr"], pbr=True)
  File "/usr/lib/python3.10/site-packages/setuptools/__init__.py", line 86, in setup
    _install_setup_requires(attrs)
  File "/usr/lib/python3.10/site-packages/setuptools/__init__.py", line 80, in _install_setup_requires
    dist.fetch_build_eggs(dist.setup_requires)
  File "/usr/lib/python3.10/site-packages/setuptools/dist.py", line 874, in fetch_build_eggs
    resolved_dists = pkg_resources.working_set.resolve(
  File "/usr/lib/python3.10/site-packages/pkg_resources/__init__.py", line 789, in resolve
    dist = best[req.key] = env.best_match(
  File "/usr/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1075, in best_match
    return self.obtain(req, installer)
  File "/usr/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1087, in obtain
    return installer(requirement)
  File "/usr/lib/python3.10/site-packages/setuptools/dist.py", line 944, in fetch_build_egg
    return fetch_build_egg(self, req)
  File "/usr/lib/python3.10/site-packages/setuptools/installer.py", line 84, in fetch_build_egg
    raise DistutilsError(str(e)) from e
distutils.errors.DistutilsError: Command '['/usr/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpgrhh0hkb', '--quiet', 'pbr']' returned non-zero exit status 1.
==> ERROR: A failure occurred in build().
    Aborting...
error: failed to build 'rmm-git-1.0.11-1': 
error: packages failed to build: rmm-git-1.0.11-1

Reproduction

  1. run paru -S rmm-git
  2. go through the installation and wait for the error to occur

Info
OS: Garuda Linux

[Linux] [Workaround aviable] Downloading a mod fails, the path is wrong

When downloading a mod from the workshop with RMM, when trying to move it to the game folder it crashes because the path is wrong

`Connecting anonymously to Steam Public...OK

Waiting for client config...OK

Waiting for user info...OK

Downloading item 2202185773 ...

Success. Downloaded item 2202185773 to "/tmp/rmm-7hc2cik5/Steam/steamapps/workshop/content/294100/2202185773" (791381 bytes) Traceback (most recent call last):

File "/home/honzo/.local/bin/rmm", line 8, in
sys.exit(run())

...[several more errors]...
FileNotFoundError: [Errno 2] No such file or directory: '/tmp**/rmm-7hc2cik5/.steam/steamapps/workshop/content**/294100'
`
Notice the correct path of the download is .../Steam/steamapps/workshop/... and not .../.steam/steamapps/workshop/...

Anyway, you can manually copy the downloaded mod to the Mods folder of the game

Crash at empty "author" tag

Description
When trying to execute any command, python crashes with the stack trace and message "TypeError: can only join an iterable"

Reproduction

  1. Install this mod or any other where the "author" tag in About.xml looks like this: <author></author>
  2. Run rmm.

Info
OS: Devuan Ceres
RMM: 1.0.15

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.