Commit Graph

2810 Commits

Author SHA1 Message Date
Berker Peksag
1265f546d1 Merge pull request #621 from tianon/docker-from-python
Update Dockerfile to use the "python:3" base image, which simplifies things
2014-07-10 23:42:08 +03:00
Tianon Gravi
c8c154f725 Update Dockerfile to use the "python:3" base image, which simplifies things 2014-07-10 13:06:23 -06:00
Berker Peksag
fa1c5d851e Merge pull request #617 from rwtolbert/bugfix/assign_to_None
Adding code to prevent assignment to some core builtin names
2014-07-05 07:48:15 +03:00
Bob Tolbert
16e908d56e In order to fix #608, we need to know which symbols can't be assigned.
Python has the keyword.iskeyword method we can leverage for Python
keywords, but we also need to address Hy builtins like 'get' or
'slice'.

And to make behavior compatible with Python 2 or 3, we also make
a special case to prevent assignment to False, True or None as
well as the Hy versions: false, true, null, and nil.

For non-Hy modules, we also check to make sure the symbol is not
part of the compiler. This allows shadow.hy to override "+" but
prevents general use from re-defn-ing 'get' or 'do'.
2014-06-30 21:09:59 -06:00
Tuukka Turto
f3ecb96119 Merge branch 'master' into pr/593 2014-06-24 23:23:48 +03:00
Tuukka Turto
87e65b7ffe Merge branch 'master' into pr/616 2014-06-24 23:05:29 +03:00
Bob Tolbert
483c6b2576 Merge pull request #602 from agentultra/shadow-builtins
Add shadow.hy to core
2014-06-24 08:57:50 -06:00
Bob Tolbert
bd661a3ae8 Fix hy2py output on Windows/Python 3
If there are Unicode symbols in the hy2py output (as in
tests/native_test/language.hy) and the user is on Windows, and
the user is using Python3 and the user doesn't have an appropriate
codepage in the terminal for Unicode, then hy2py will fail at
encoding the output.

This fix makes sure that if encoding fails, the bytes output is shown
instead of throwing an exception and failing completely.  This also
allows the hy2py tests to pass on Windows.

If the user does activate an appropriate codepage, for example,

chcp 65001

then the Unicode output will show correctly.

Converted printing code to small function to eliminate some duplicate code
2014-06-23 14:51:02 -06:00
J Kenneth King
7f350cdc62 Merge pull request #601 from theanalyst/fix/ap-first
anaphoric: fix first & last when predicates fail
2014-06-23 15:32:29 -04:00
J Kenneth King
1cfcbff7df Merge pull request #615 from rwtolbert/rwtolbert/bugfix/fix_return_in_try_with_yield
Fix #607, remove return from try when there is a generator inside
2014-06-23 15:32:15 -04:00
Bob Tolbert
ea5eba5916 Second part of the fix for yield inside a try-finally
As noted in #600, Python 3 allows a return inside a generator
method, that raises a StopIteration and passes the return value
inside the 'value' attr of the exception.

To allow this behaviour we simple set 'contains_yield' while compiling
'yield', thus allowing a return statement, but only for Python 3. Then
when compiling the try-except, we check for contains_yield to decide
whether there will be a return.

This allows code like:

(defn gen []
  (yield 3)
  "goodbye")

to compile in both Py2 and Py3. The return value is simply ignored in
Python 2.

hy2py in Python 2 gives:

def g():
    yield 3L
    u'goodbye'

while hy2py in Python 3 gives:

def g():
    yield 3
    return 'goodbye'

Turns out return in yield started in Python 3.3
2014-06-22 14:59:29 -06:00
Bob Tolbert
fb7c7e5794 Fix #607, remove return from try when there is a generator inside
Added the contains_yield attr to 'try' when the body it is
wrapping contains 'yeild'.

Should also address #600 and #563
2014-06-22 10:50:00 -06:00
Tuukka Turto
f8e48628ea Merge branch 'master' into pr/611 2014-06-12 22:58:04 +03:00
Allison Kaptur
26307d2612 (force Travis CI to rebuild) 2014-06-09 16:57:57 -04:00
Allison Kaptur
b56a03750f revert yield-from test
Yield-from was introduced in 3.3, so we have to catch the compile error that's raise in 3.2. :(
2014-06-09 16:33:32 -04:00
Allison Kaptur
a2f917aba3 raise hy compile error on Py2.x for raise from 2014-06-09 16:33:16 -04:00
James King
277028cdd5 Remove HyLambdaListKeyword from the parser
It's not a syntactic element and doesn't belong in the parser. Parsing
lambda lists is now handled by the compiler alone.
2014-06-03 21:36:49 -04:00
James King
8e173937c3 Add shadow.hy to core
This new core module allows us to shadow the builtin Python operators so
they may be passed to sequence functions that expect functions:

    => (map / [1 2 3 4 5])
    [1.0, 0.5, 0.3333333333333333, 0.25]
2014-05-26 21:50:47 -04:00
Abhishek L
c2982a9ae3 anaphoric: fix first & last when conditions fail
* hy/contrib/anaphoric.hy: `ap-first` and `ap-last` now handle cases
  when failure happens for the predicate. Thanks to @tutorto for
  reporting this bug
2014-05-24 17:48:46 +05:30
Abhishek L
1da6d0af43 docs: fix decorator to reflect multiple decorators
* docs/language/api.rst: the `with-decorator' builtin supports multiple
  decorators which it applies in order. Docs are updated to reflect this
2014-05-24 17:35:39 +05:30
Berker Peksag
0f0c4227b6 Merge pull request #604 from Duta/master
Minor typo
2014-05-17 22:29:44 +03:00
Bertie Wheen
02fa251175 Minor typo
Sorry for tiny commits :P
2014-05-17 19:04:41 +01:00
Morten Linderud
2806cb0b05 Merge pull request #603 from Duta/patch-1
Rephrased confusing comment
2014-05-17 19:48:11 +02:00
Bertie Wheen
a102a268a9 Rephrased confusing comment 2014-05-17 18:46:01 +01:00
John MacKenzie
15ad6cb998 defmacro/g! and HyObject#startswith
Currently, defmacro/g! doesn't respond well when it comes across a
HyObject that doesn't respond to the instance method startswith (e.g.
HyInteger, HyFloat, etc.). This updates defmacro/g! to be a little
safer when searching for the gensyms it needs to create.
2014-05-15 01:51:38 +00:00
Tuukka Turto
b5a058a3bc Merge branch 'master' into pr/599 2014-05-14 09:22:55 +03:00
Tuukka Turto
f6c491d35c Merge branch 'master' into pr/585 2014-05-14 09:02:23 +03:00
Abhishek L
f326975d7c Make ci builds faster by splitting requirements
Make travis builds faster by splitting requirements into
requirements-travis.txt, which contains all the requirements necessary
for running tests, documentation related packages are omitted and added
as a part of requirements-dev.txt

Additionally .travis.yml is modified to cache pip downloads, though this
feature is yet to be rolled out for the free tier
2014-05-13 22:47:19 +05:30
Tuukka Turto
726d1735db Merge branch 'master' into pr/571
Conflicts:
	AUTHORS
	tests/native_tests/core.hy
2014-05-13 09:32:51 +03:00
Paul Tagliamonte
2b08674c88 Merge branch 'master' into pr/522 2014-05-12 22:10:09 -04:00
Paul Tagliamonte
1ae666e096 Merge branch 'master' into pr/565 2014-05-12 20:43:09 -04:00
Paul Tagliamonte
ca0271df95 Merge branch 'master' into pr/574
Conflicts:
	AUTHORS
2014-05-12 20:15:51 -04:00
Paul Tagliamonte
1696ddecac Merge branch 'master' into pr/578 2014-05-12 20:14:37 -04:00
Abhishek L
18a6346d42 Display python version & platform at repl startup
*hy/cmdline.py: At the repl startup the Python implementation & version
 is displayed along with the platform(os) information
2014-05-07 01:04:07 +05:30
Berker Peksag
ced072bc8d Merge pull request #590 from paultag/paultag/dockerfile
Add dockerfile.
2014-05-06 09:04:56 +03:00
Berker Peksag
4ac6da22f1 Merge pull request #592 from theanalyst/fix/typo
the mega typo fix commit
2014-05-06 08:49:01 +03:00
Abhishek L
4f74652c73 the mega typo fix commit
Wow! much typos! such fix!
2014-05-05 23:47:14 +05:30
Paul Tagliamonte
ec8d5aefe7 Add dockerfile. 2014-05-04 17:28:08 -04:00
Christian Weilbach
01ee54cf62 Merge https://github.com/hylang/hy
Fix butlast and test for disassemble.

Conflicts:
	hy/core/language.hy
2014-05-03 16:33:39 +02:00
Morten Linderud
6d095b452c Merge pull request #587 from theanalyst/docs/contributing
Move contributing from hacking docs to repo root
2014-05-03 16:29:51 +02:00
Abhishek L
f2beef6e70 Move contributing from hacking docs to repo root
A CONTRIBUTING.rst is added to the root of the repo, as Github
automatically recognizes this for incoming PRs
(ref: https://github.com/blog/1184-contributing-guidelines)

Most of the information is directly borrowed from the existing hacking
docs, which is restructured to refer to this file instead for
contribution guidelines
2014-05-03 17:37:30 +05:30
Tuukka Turto
de65b7baf8 Merge branch 'master' into pr/586 2014-05-02 21:06:20 +03:00
Kartik Mistry
909981dd23 Typo fixes in comments
Signed-off-by: Kartik Mistry <kartik.mistry@gmail.com>
2014-05-02 21:31:51 +05:30
Abhishek L
ad0191f343 Merge master onto pr/580 2014-05-02 19:37:54 +05:30
Tuukka Turto
d539f73d4d correct ..versionadded:: for defmain
my mistake, should have spotted before merging and pushing
2014-05-02 12:27:19 +03:00
Tuukka Turto
b1a928037e Merge branch 'master' into pr/526 2014-05-02 10:34:37 +03:00
Allison Kaptur
caa53fb095 Tests for explicit exception chaining
This also breaks out the PY3 only tests into their own file.  We need to do this because raise from is a syntax error in PY2, so we can't rely on the previous hack of catching a HyCompileError - it would compile fine through Hy and then be a syntax error in Python.
2014-05-01 16:33:10 -04:00
Allison Kaptur
1499d49878 Add support for explicit exception chaining
A la PEP 3134
2014-05-01 16:30:40 -04:00
Matthew Wampler-Doty
5b4c431b81 Enforcing dynamic scope behavior in let 2014-04-30 10:38:49 -05:00
Matthew Wampler-Doty
914a18f5b0 Moving math.hy so it doesn't clash with library math module; band aid around issue #583 (PEP 328 non-compliance) 2014-04-30 10:38:07 -05:00