Giter Site home page Giter Site logo

submit50's Introduction

Usage

English

submit50 problem

Spanish

LANGUAGE=es submit50 problem

Internationalizing

Adding a new language

  1. First, ensure that babel is installed and that submit50 is installed in development mode:

     pip install babel
     pip install -e .
    
  2. Generate the translation template:

     python setup.py extract_messages
    
  3. Generate the .po file for the desired language:

     python setup.py init_catalog -l <LANG>
    

    where <LANG> is the code of the language you want to translate (e.g., es for Spanish, en for English, etc.)

  4. Then, add the translations to the newly created submit50/locale/<LANG>/LC_MESSAGES/submit50.po

  5. Finally, compile the new translations:

     python setup.py compile_catalog
    

    and test them:

     LANGUAGE=<LANG> submit50 <PROBLEM>
    

Updating an existing language

Follow the steps described in the above section, but instead of running python setup.py init_catalog -l <LANG>, run python setup.py update_catalog -l <LANG>.

submit50's People

Contributors

brianyu28 avatar cmlsharp avatar coltonoscopy avatar dmalan avatar glennhart avatar glennholloway avatar jelleas avatar kzidane avatar rongxin-liu 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  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

submit50's Issues

support python 2

Right now, this package requires getch, which is for Python 3+, and the submit50script uses Python-3-specific features like raise ... from. There's getch-1.0-python2.tar.gz, which is getch for Python 2. So if we can get this to install on systems running Python 2, and getch to install on systems running Python 3+, any idea whether it'd be feasible to get submit50 to support Python 2 as well, @brianyu28?

cc @dmalan

columns is 0 when redirecting output

Looks like columns is 0 if you redirect output, which causes an exception per https://travis-ci.org/cs50/submit50/jobs/238360420#L479

$ submit50 --help > foo
Error in sys.excepthook:
Traceback (most recent call last):
  File "/home/kareem/github/cs50/submit50/submit50", line 266, in excepthook
    cprint("Sorry, something's wrong! Let [email protected] know!", "yellow")
  File "/home/kareem/github/cs50/submit50/submit50", line 254, in cprint
    termcolor.cprint(textwrap.fill(text, columns), color=color, on_color=on_color, attrs=attrs, **kwargs)
  File "/usr/lib/python3.4/textwrap.py", line 377, in fill
    return w.fill(text)
  File "/usr/lib/python3.4/textwrap.py", line 349, in fill
    return "\n".join(self.wrap(text))
  File "/usr/lib/python3.4/textwrap.py", line 340, in wrap
    return self._wrap_chunks(chunks)
  File "/usr/lib/python3.4/textwrap.py", line 234, in _wrap_chunks
    raise ValueError("invalid width %r (must be > 0)" % self.width)
ValueError: invalid width 0 (must be > 0)

Original exception was:
Traceback (most recent call last):
  File "/home/kareem/.virtualenvs/submit50/bin/submit50", line 6, in <module>
    exec(compile(open(__file__).read(), __file__, 'exec'))
  File "/home/kareem/github/cs50/submit50/submit50", line 524, in <module>
    main()
  File "/home/kareem/github/cs50/submit50/submit50", line 90, in main
    usage()
  File "/home/kareem/github/cs50/submit50/submit50", line 485, in usage
    cprint("Usage: submit50 problem")
  File "/home/kareem/github/cs50/submit50/submit50", line 254, in cprint
    termcolor.cprint(textwrap.fill(text, columns), color=color, on_color=on_color, attrs=attrs, **kwargs)
  File "/usr/lib/python3.4/textwrap.py", line 377, in fill
    return w.fill(text)
  File "/usr/lib/python3.4/textwrap.py", line 349, in fill
    return "\n".join(self.wrap(text))
  File "/usr/lib/python3.4/textwrap.py", line 340, in wrap
    return self._wrap_chunks(chunks)
  File "/usr/lib/python3.4/textwrap.py", line 234, in _wrap_chunks
    raise ValueError("invalid width %r (must be > 0)" % self.width)
ValueError: invalid width 0 (must be > 0)

Perhaps we shouldn't rely on get_terminal_size's fallback value and just hard-code column or 80?

catch requests.exceptions.ConnectionError

E.g., when no internet:

$ submit50 develop -v
Traceback (most recent call last):
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 386, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 382, in _make_request
    httplib_response = conn.getresponse()
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/http/client.py", line 1331, in getresponse
    response.begin()
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/http/client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/http/client.py", line 266, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests/adapters.py", line 440, in send
    timeout=timeout
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 649, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/util/retry.py", line 357, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/packages/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 386, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 382, in _make_request
    httplib_response = conn.getresponse()
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/http/client.py", line 1331, in getresponse
    response.begin()
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/http/client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/http/client.py", line 266, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "../submit50", line 514, in <module>
    main()
  File "../submit50", line 120, in main
    submit("submit50", args["problem"])
  File "../submit50", line 355, in submit
    headers = requests.get("https://api.github.com/").headers
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests/sessions.py", line 513, in request
    resp = self.send(prep, **send_kwargs)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests/sessions.py", line 623, in send
    r = adapter.send(request, **kwargs)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests/adapters.py", line 490, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
Sorry, something's wrong! Let [email protected] know!
Submission cancelled.

add support for SSH authentication

  • Require user to store username in ~/.gitconfig.
  • Require user to add SSH key to GitHub account.
  • When authenticate() is called, try an authenticated git command using repo's ssh:// URL first. If failure, fall back on password.

Not a git repository

When I resubmit multiple times, every other time I get

git clone --bare https://github.com/submit50/kzidane
spawn git clone --bare https://[email protected]/submit50/kzidane /tmp/tmp.QXoW0jiDQB
Cloning into bare repository '/tmp/tmp.QXoW0jiDQB'...
error: could not lock config file /tmp/tmp.QXoW0jiDQB/config: No such file or directory
error: could not lock config file /tmp/tmp.QXoW0jiDQB/config: No such file or directory
fatal: Not a git repository: '/tmp/tmp.QXoW0jiDQB'
error: could not lock config file /tmp/tmp.QXoW0jiDQB/config: No such file or directory
error: could not lock config file /tmp/tmp.QXoW0jiDQB/config: No such file or directory
git add --all
fatal: Not a git repository: '/tmp/tmp.QXoW0jiDQB'
fatal: Not a git repository: '/tmp/tmp.QXoW0jiDQB'
None of the files in this directory are expected for submission.
Submission cancelled.

So for example, first try succeeds, second try fails with a log similar to the one above, third try succeeds (even if I don't touch anything โ€” just e.g., submit50 mario again), and so on.

create VERSION file in submit50/submit50

Am thinking we should have a VERSION file in submit50/submit50 that specifies the minimum version number that a user must be using at the command line, in case we change server-side options.

Or this can become part of cs50.me.

when ctrl-c hit during spinning, handler doesn't catch exception

# submit50 -v 2017/x/hello
GitHub username: student50
GitHub password: *********
Authentication code: 982775
git clone --bare https://[email protected]/submit50/student50 /tmp/tmpzp7mh3_1
^C
Submission cancelled.
    File "../submit50.py", line 464, in <module>
    main()
  File "../submit50.py", line 89, in main
    submit(args["args"][0])
  File "../submit50.py", line 213, in submit
    password=password)
  File "../submit50.py", line 395, in run
    raise Error()
Sorry, something's wrong! Let [email protected] know!
Submission cancelled.

Minor line break issue

Super minor but if you type in the wrong username/password, the program tries to print a two line error message, but the \n gets interpreted literally:

Sorry, something's wrong!\nLet [email protected] know!

I think this is just an echo issue. I'm pretty sure echo doesn't really like line breaks, so maybe use printf instead to fix this?

Fails, then succeeds on same input

In release 96 of ide50, I ran submit50 twice in rapid succession, changing nothing between the two runs. The first failed, but the second succeeded.

~/workspace/pset1/ $ submit50 2017/spring/hello
GitHub username: glennholloway
GitHub password: ***********
Authentication Code: 508866
Looks like we haven't enabled submit50 for your account yet! Let [email protected] know your GitHub username!
Submission cancelled.
~/workspace/pset1/ $ submit50 2017/spring/hello
GitHub username: glennholloway
GitHub password: ***********
Authentication Code: 215120
Files that will be submitted:
 hello.c
Keeping in mind the course's policy on academic honesty, are you sure you want to submit these files? yes
Submitted cs50/2017/spring/hello! See https://github.com/submit50/glennholloway/tree/cs50/2017/spring/hello.
~/workspace/pset1/ $ 

update dependencies

In https://github.com/cs50/submit50/blob/master/Makefile:

  • add python3
  • remove expect, jq, util-linux (I think last is safe to remove now)

Can the Python dependencies in requirements.txt be installed as apt-get dependencies? E.g., for dependency foo, does python3-foo exist, so we can avoid calling pip3 in after-install.sh, per http://askubuntu.com/questions/327543/how-can-a-debian-package-install-python-modules-from-pypi?

Either way, requirements.txt shouldn't end up in bin. Ideally should be integrated into Makefile or after-install.sh.

show different URL upon successful submission

Instead of

https://github.com/submit50/$username/releases/tag/$problem

show

https://github.com/submit50/$username/tree/$problem

unless post-commit hook is able to update body of release quickly enough for former to be more useful.

Could not find a suitable TLS CA certificate bundle

In CS50 CLI, submit50 works okay after installing dependencies manually via pip, but not via python setup.py develop, per below.

# python setup.py develop
...

# ./submit50 develop -v
Traceback (most recent call last):
  File "../submit50", line 532, in <module>
    main()
  File "../submit50", line 68, in main
    res = requests.get("https://cs50.me/version")
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests-2.17.3-py3.6.egg/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests-2.17.3-py3.6.egg/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests-2.17.3-py3.6.egg/requests/sessions.py", line 513, in request
    resp = self.send(prep, **send_kwargs)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests-2.17.3-py3.6.egg/requests/sessions.py", line 623, in send
    r = adapter.send(request, **kwargs)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests-2.17.3-py3.6.egg/requests/adapters.py", line 407, in send
    self.cert_verify(conn, request.url, verify, cert)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests-2.17.3-py3.6.egg/requests/adapters.py", line 226, in cert_verify
    "invalid path: {0}".format(cert_loc))
OSError: Could not find a suitable TLS CA certificate bundle, invalid path: /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/certifi-2017.4.17-py3.6.egg/certifi/cacert.pem

fix spinner

Probably shouldn't do spin(False) in so many places, as creates situations where stdout is temporarily blank.

replace submit50/submit50's branches with just one config file on master

It's already becoming a bit unmaintainable having one branch per exclude file. And easy to make a mistake, as by pushing to wrong remote branch. Am thinking we should just replace all of our branches with an exclude/ directory on the master branch of submit50/submit50, inside of which is foo, bar, baz, etc., where each of foo, bar, and baz are former branches' names (i.e., problems).

Or, instead of using submit50/submit50 in this way, we could bake supported problems (i.e., repo names) into cs50.me, so that the submit50 CLI instead contacts cs50.me, though that somewhat breaks the abstraction barrier.

GitHub Releases not split up if there are extra .c files

See the following submit50 repos for examples of this happening for pset2:

It seems that if there is some extra .c file that the problems are not properly divided, and instead all the files are all put into every release.

git add --all throws error on extra directory contents

A CS50x user of submit50-2.1.4 reported getting the "Something is wrong ..." error at the point where the script runs git add --all. He was submitting from a directory with several files unrelated to the problem being submitted. I was able to reproduce the error, as shown below. When I then removed the extraneous files, I was able to submit with no problem.

~/workspace/pset3/ $ submit50 --verbose 2017/x/find/less
GitHub username: glennholloway
GitHub password: ***********      
Authentication code: 600525
git clone --bare https://[email protected]/submit50/glennholloway /tmp/tmpmdp22r_1
Cloning into bare repository '/tmp/tmpmdp22r_1'...
Password for 'https://[email protected]': 
remote: Counting objects: 52, done.        
remote: Compressing objects: 100% (3/3), done.        
remote: Total 52 (delta 1), reused 0 (delta 0), pack-reused 49        
Unpacking objects: 100% (52/52), done.
Checking connectivity... done.
git config user.email [email protected]
git config user.name glennholloway
git symbolic-ref HEAD refs/heads/cs50/2017/x/find/less
git config core.excludesFile /tmp/tmphfx347xy
git config core.ignorecase true
git add --all
  File "/opt/cs50/bin/submit50", line 465, in <module>
    main()
  File "/opt/cs50/bin/submit50", line 89, in main
    submit(args["args"][0])
  File "/opt/cs50/bin/submit50", line 228, in submit
    run("git add --all")
  File "/opt/cs50/bin/submit50", line 401, in run
    raise Error()
Sorry, something's wrong! Let [email protected] know!
Submission cancelled.
~/workspace/pset3/ $ version50
98
~/workspace/pset3/ $ ls -a
./   Makefile   caesar.c   find.c    generate.c    helpers.c  makefile
../  Untitled1  fifteen.c  generate  helpers.[hc]  helpers.h
~/workspace/pset3/ $ 

when doing local dev (e.g., in cli50), can't run ./submit50 without package itself being installed

$ ../submit50 test
Traceback (most recent call last):
  File "../submit50", line 31, in <module>
    __version__ = get_distribution("submit50").version
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/pkg_resources/__init__.py", line 557, in get_distribution
    dist = get_provider(dist)
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/pkg_resources/__init__.py", line 431, in get_provider
    return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/pkg_resources/__init__.py", line 967, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/pkg_resources/__init__.py", line 853, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'submit50' distribution was not found and is required by the application

`python setup.py develop` doesn't quite install dependencies

# python setup.py develop
running develop
running egg_info
creating submit50.egg-info
writing submit50.egg-info/PKG-INFO
writing dependency_links to submit50.egg-info/dependency_links.txt
writing requirements to submit50.egg-info/requires.txt
writing top-level names to submit50.egg-info/top_level.txt
writing manifest file 'submit50.egg-info/SOURCES.txt'
reading manifest file 'submit50.egg-info/SOURCES.txt'
writing manifest file 'submit50.egg-info/SOURCES.txt'
running build_ext
Creating /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/submit50.egg-link (link to .)
Adding submit50 2.2.0 to easy-install.pth file
Installing submit50 script to /opt/pyenv/versions/3.6.0/bin

Installed /root
Processing dependencies for submit50==2.2.0
Searching for termcolor
Reading https://pypi.python.org/simple/termcolor/
Downloading https://pypi.python.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz#md5=043e89644f8909d462fbbfa511c768df
Best match: termcolor 1.1.0
Processing termcolor-1.1.0.tar.gz
Writing /tmp/easy_install-jn_6zytj/termcolor-1.1.0/setup.cfg
Running termcolor-1.1.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-jn_6zytj/termcolor-1.1.0/egg-dist-tmp-z_21brpw
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving termcolor-1.1.0-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding termcolor 1.1.0 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/termcolor-1.1.0-py3.6.egg
Searching for six
Reading https://pypi.python.org/simple/six/
Downloading https://pypi.python.org/packages/b3/b2/238e2590826bfdd113244a40d9d3eb26918bd798fc187e2360a8367068db/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55
Best match: six 1.10.0
Processing six-1.10.0.tar.gz
Writing /tmp/easy_install-xyerr14m/six-1.10.0/setup.cfg
Running six-1.10.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-xyerr14m/six-1.10.0/egg-dist-tmp-m1c413hw
no previously-included directories found matching 'documentation/_build'
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving six-1.10.0-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding six 1.10.0 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/six-1.10.0-py3.6.egg
Searching for requests
Reading https://pypi.python.org/simple/requests/
Downloading https://pypi.python.org/packages/27/c7/a45641c83c6e28f4922ba6af3d4ae4d79b41932c2f3d77fed9e0bf878149/requests-2.17.3.tar.gz#md5=b1b8e6412e11e00e12adbb7786c3f2a3
Best match: requests 2.17.3
Processing requests-2.17.3.tar.gz
Writing /tmp/easy_install-y0dzrg4a/requests-2.17.3/setup.cfg
Running requests-2.17.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-y0dzrg4a/requests-2.17.3/egg-dist-tmp-c1sa9k4e
warning: no files found matching 'NOTICE'
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

creating /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests-2.17.3-py3.6.egg
Extracting requests-2.17.3-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
warning: develop: byte-compiling is disabled, skipping.

Adding requests 2.17.3 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/requests-2.17.3-py3.6.egg
Searching for pexpect>=4.0
Reading https://pypi.python.org/simple/pexpect/
Downloading https://pypi.python.org/packages/e8/13/d0b0599099d6cd23663043a2a0bb7c61e58c6ba359b2656e6fb000ef5b98/pexpect-4.2.1.tar.gz#md5=3694410001a99dff83f0b500a1ca1c95
Best match: pexpect 4.2.1
Processing pexpect-4.2.1.tar.gz
Writing /tmp/easy_install-zjcp_wtr/pexpect-4.2.1/setup.cfg
Running pexpect-4.2.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-zjcp_wtr/pexpect-4.2.1/egg-dist-tmp-2td13dkf
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving pexpect-4.2.1-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding pexpect 4.2.1 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/pexpect-4.2.1-py3.6.egg
Searching for backports.shutil_get_terminal_size
Reading https://pypi.python.org/simple/backports.shutil_get_terminal_size/
Downloading https://pypi.python.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b/backports.shutil_get_terminal_size-1.0.0.tar.gz#md5=03267762480bd86b50580dc19dff3c66
Best match: backports.shutil-get-terminal-size 1.0.0
Processing backports.shutil_get_terminal_size-1.0.0.tar.gz
Writing /tmp/easy_install-2xkqggvy/backports.shutil_get_terminal_size-1.0.0/setup.cfg
Running backports.shutil_get_terminal_size-1.0.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-2xkqggvy/backports.shutil_get_terminal_size-1.0.0/egg-dist-tmp-6atdaja7
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving backports.shutil_get_terminal_size-1.0.0-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding backports.shutil-get-terminal-size 1.0.0 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/backports.shutil_get_terminal_size-1.0.0-py3.6.egg
Searching for certifi>=2017.4.17
Reading https://pypi.python.org/simple/certifi/
Downloading https://pypi.python.org/packages/dd/0e/1e3b58c861d40a9ca2d7ea4ccf47271d4456ae4294c5998ad817bd1b4396/certifi-2017.4.17.tar.gz#md5=db40445044feda1437ce3ccd5fc28a57
Best match: certifi 2017.4.17
Processing certifi-2017.4.17.tar.gz
Writing /tmp/easy_install-l19_vg14/certifi-2017.4.17/setup.cfg
Running certifi-2017.4.17/setup.py -q bdist_egg --dist-dir /tmp/easy_install-l19_vg14/certifi-2017.4.17/egg-dist-tmp-v4_0wddj
/opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/setuptools/dist.py:331: UserWarning: Normalizing '2017.04.17' to '2017.4.17'
  normalized_version,
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving certifi-2017.4.17-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding certifi 2017.4.17 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/certifi-2017.4.17-py3.6.egg
Searching for urllib3<1.22,>=1.21.1
Reading https://pypi.python.org/simple/urllib3/
Downloading https://pypi.python.org/packages/96/d9/40e4e515d3e17ed0adbbde1078e8518f8c4e3628496b56eb8f026a02b9e4/urllib3-1.21.1.tar.gz#md5=ef6c72c79b9c6bcd68c204f9b92abc86
Best match: urllib3 1.21.1
Processing urllib3-1.21.1.tar.gz
Writing /tmp/easy_install-f13nh6gb/urllib3-1.21.1/setup.cfg
Running urllib3-1.21.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-f13nh6gb/urllib3-1.21.1/egg-dist-tmp-dws7t3d6
warning: no previously-included files matching '*' found under directory 'docs/_build'
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving urllib3-1.21.1-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding urllib3 1.21.1 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/urllib3-1.21.1-py3.6.egg
Searching for idna<2.6,>=2.5
Reading https://pypi.python.org/simple/idna/
Downloading https://pypi.python.org/packages/d8/82/28a51052215014efc07feac7330ed758702fc0581347098a81699b5281cb/idna-2.5.tar.gz#md5=fc1d992bef73e8824db411bb5d21f012
Best match: idna 2.5
Processing idna-2.5.tar.gz
Writing /tmp/easy_install-loqr3wnf/idna-2.5/setup.cfg
Running idna-2.5/setup.py -q bdist_egg --dist-dir /tmp/easy_install-loqr3wnf/idna-2.5/egg-dist-tmp-p9o99y_7
warning: no previously-included files matching '*.pyc' found under directory 'tools'
warning: no previously-included files matching '*.pyc' found under directory 'tests'
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving idna-2.5-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding idna 2.5 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/idna-2.5-py3.6.egg
Searching for chardet<3.1.0,>=3.0.2
Reading https://pypi.python.org/simple/chardet/
Downloading https://pypi.python.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz#md5=7dd1ba7f9c77e32351b0a0cfacf4055c
Best match: chardet 3.0.4
Processing chardet-3.0.4.tar.gz
Writing /tmp/easy_install-5pwxxy8d/chardet-3.0.4/setup.cfg
Running chardet-3.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-5pwxxy8d/chardet-3.0.4/egg-dist-tmp-vwiazgbc
warning: no files found matching 'requirements.txt'
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving chardet-3.0.4-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding chardet 3.0.4 to easy-install.pth file
Installing chardetect script to /opt/pyenv/versions/3.6.0/bin

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/chardet-3.0.4-py3.6.egg
Searching for ptyprocess>=0.5
Reading https://pypi.python.org/simple/ptyprocess/
Downloading https://pypi.python.org/packages/db/d7/b465161910f3d1cef593c5e002bff67e0384898f597f1a7fdc8db4c02bf6/ptyprocess-0.5.1.tar.gz#md5=94e537122914cc9ec9c1eadcd36e73a1
Best match: ptyprocess 0.5.1
Processing ptyprocess-0.5.1.tar.gz
Writing /tmp/easy_install-l5gyvkeg/ptyprocess-0.5.1/setup.cfg
Running ptyprocess-0.5.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-l5gyvkeg/ptyprocess-0.5.1/egg-dist-tmp-4n794t8i
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

zip_safe flag not set; analyzing archive contents...
Moving ptyprocess-0.5.1-py3.6.egg to /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages
Adding ptyprocess 0.5.1 to easy-install.pth file

Installed /opt/pyenv/versions/3.6.0/lib/python3.6/site-packages/ptyprocess-0.5.1-py3.6.egg
Finished processing dependencies for submit50==2.2.0

# submit50 develop
Traceback (most recent call last):
  File "../submit50", line 7, in <module>
    import getch
ModuleNotFoundError: No module named 'getch'

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.