Getting ready for PyPI.

This commit is contained in:
Simon Forman 2018-04-21 20:46:35 -07:00
parent b2a4c0e1f8
commit 92c15a73e3
4 changed files with 21 additions and 26 deletions

View File

@ -10,5 +10,6 @@ joy/joy.py
joy/library.py joy/library.py
joy/parser.py joy/parser.py
joy/utils/__init__.py joy/utils/__init__.py
joy/utils/brutal_hackery.py
joy/utils/pretty_print.py joy/utils/pretty_print.py
joy/utils/stack.py joy/utils/stack.py

View File

@ -1,6 +1,7 @@
# My make-fu style is old and tired. I just want to have a few helper commands. # My make-fu style is old and tired. I just want to have a few helper commands.
TESTDIR = ./test00 TESTDIR = ./test00
VERSION = 0.1.0
.PHONY: clean sdist test docs .PHONY: clean sdist test docs
@ -12,11 +13,13 @@ clean:
sdist: sdist:
python ./setup.py sdist python ./setup.py sdist
# In order to support testing the code as installed
# create a virtualenv and install the source dist zip there.
test: sdist test: sdist
$(RM) -r $(TESTDIR) $(RM) -r $(TESTDIR)
virtualenv --system-site-packages --never-download $(TESTDIR) virtualenv --system-site-packages --never-download $(TESTDIR)
. $(TESTDIR)/bin/activate && \ . $(TESTDIR)/bin/activate && \
pip install --no-cache-dir --no-index ./dist/Joypy-0.1.tar.gz pip install --no-cache-dir --no-index ./dist/Joypy-$(VERSION).tar.gz
echo "Type: source $(TESTDIR)/bin/activate" echo "Type: source $(TESTDIR)/bin/activate"

37
README
View File

@ -1,10 +1,4 @@
 ____ ____ _ _____ _____ --------------------------------------------------
| _ \| _ \ / \ | ___|_ _|
| | | | |_) | / A \ | |_ | |
| |_| | _ < / ___ \| _| | |
|____/|_| \_\_/ \_\_| |_|
--------------------------------------------------
Joypy Joypy
@ -15,7 +9,7 @@
-------------------------------------------------- --------------------------------------------------
Copyright © 2014, 2015, 2017 Simon Forman Copyright © 2014, 2015, 2017, 2018 Simon Forman
This file is part of Joypy This file is part of Joypy
@ -41,18 +35,9 @@ Joy is a programming language created by Manfred von Thun that is easy to
use and understand and has many other nice properties. This Python use and understand and has many other nice properties. This Python
package implements an interpreter for a dialect of Joy that attempts to package implements an interpreter for a dialect of Joy that attempts to
stay very close to the spirit of Joy but does not precisely match the stay very close to the spirit of Joy but does not precisely match the
behaviour of the original version(s) written in C. behaviour of the original version(s) written in C. The main difference
between Joypy and the originals, other than being written in Python, is
The main difference between Joypy and the originals, other than being that it works by the "Continuation-Passing Style".
written in Python, is that it works by the "Continuation-Passing Style".
In Joy, control-flow is done by combinators that expect quoted programs
on the stack and execute them in various ways. In Joypy they work by
changing the pending expression that the interpreter is about to execute.
In concrete terms, the combinators could work by making recursive calls
to the interpreter and all intermediate state would be held in the call
stack of the implementation language, in this Joypy implementation they
work instead by changing the pending expression and intermediate state
is put there.
As I study Joy I find that it is very aptly named. It is clear, concise, As I study Joy I find that it is very aptly named. It is clear, concise,
and ameniable to advanced techniques for constructing bug-free software. and ameniable to advanced techniques for constructing bug-free software.
@ -125,9 +110,15 @@ are called "combinators", which accept quoted programs on the stack and
run them in various ways. These combinators factor specific patterns run them in various ways. These combinators factor specific patterns
that provide the effect of control-flow in other languages (such as ifte that provide the effect of control-flow in other languages (such as ifte
which is like if..then..else..) Combinators receive the current which is like if..then..else..) Combinators receive the current
expession in addition to the stack and return the next expression. As expession in addition to the stack and return the next expression.
mentioned above, the combinators in Joypy work by changing the pending In Joy control-flow is done by combinators that expect quoted programs
expression before returning it. on the stack and execute them in various ways. In Joypy they work by
changing the pending expression that the interpreter is about to execute.
In concrete terms, the combinators could work by making recursive calls
to the interpreter and all intermediate state would be held in the call
stack of the implementation language, in this Joypy implementation they
work instead by changing the pending expression and intermediate state
is put there.
In general, where otherwise unspecified, the semantics of Joypy are that In general, where otherwise unspecified, the semantics of Joypy are that
of the underlying Python. That means, for example, that integers are of the underlying Python. That means, for example, that integers are

View File

@ -24,7 +24,7 @@ from textwrap import dedent
setup( setup(
name='Joypy', name='Joypy',
version='0.1', version='0.1.0',
description='Python Implementation of Joy', description='Python Implementation of Joy',
long_description=dedent('''\ long_description=dedent('''\
Joy is a programming language created by Manfred von Thun that is easy to Joy is a programming language created by Manfred von Thun that is easy to
@ -37,7 +37,7 @@ setup(
url='https://osdn.net/projects/joypy', url='https://osdn.net/projects/joypy',
packages=['joy', 'joy.utils'], packages=['joy', 'joy.utils'],
classifiers=[ classifiers=[
'Development Status :: 3 - Alpha', 'Development Status :: 4 - Beta',
'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 2.7',
], ],