Releases: StyXman/ayrton
The 'Brown Paper Bag' release, probably Pt2.
Last night I realized the first point. Checking today I found the latter. Early, often, go!
ayrton-0.9
has debug on. It will leave lots of files laying around your file system.- Modify the release script to do not allow this never ever more.
make install
was not running the tests.
Get it while it's hot!
The 'No Goverment' release.
- Test functions are no longer called
_X
but-X
, which is more scripting friendly. - Some if those tests had to be fixed.
- Dropped support for
py3.3
because the importer does not work there. tox
support, but not yet part of the stable test suite.- Lots and lots of more tests.
- Lots of improvements in the
remote()
tests; in particular, make sure they don't hang waiting for someone who's not gonna come. - Ignore ssh
remote()
tests if there's not password/phrase-less connection. - Fixed several fd leaks.
_in
,_out
and_err
also accept a tuple(path, flags)
, so you can specify things likeos.O_APPEND
. Mostly used internally.
Get it while it's hot!
The 'Release From The Bus' release.
Another long cycle, which have been longer if it wasn't for a couple of bugs.
- Bugfix release.
Argv
should not be created with an empty list.- Missing dependencies.
- Several typos.
- Fix for
_h()
. - Handle
paramiko
exceptions. - Calling
ayrton -c <script>
was failing because the file name properly was not properly (f|b)aked. ayrton --version
didn't work!
Get it while it's hot!
The 'Home Sweet New Home' release.
Long time for this release. A couple of hard bugs (which fix was just moving a line down a little), a big-ish new feature, and moving in a new city. Here's the ChangeLog:
- You can import ayrton modules and packages!
- Depends on Python3.5 now.
argv
is not quite a list: for some operations (len()
,iter()
,pop()
),argv[0]
is left alone.option()
raises KeyError or ValueError if the option or its 'argument' is wrong.makedirs()
andstat()
are available as functions.-p|--pdb
launchespdb
when there is an unhandled exception.- Fix
for line in foo(...): ...
by automatically adding the_bg=True
option. - Better
Command()
detection. - A lot of internal fixes.
Get it while it's hot!
The 'Two In A Row' release.
A small update on v0.7.2
:
- Fix iterating over the log ouput of a
Command
in synchronous mode (that is, not running in the_bg
). This complements the fix in the previous release.
The '(De)Bug Fixing Galore' release.
This time we focused on making ayrton
more debuggable and the scripts too. Featurewise, this release fixes a couple of bugs: one when executing remote code with the wrong Python version and another while iterating over long outputs. The latter needs more work so it's more automatic. Here's the changelog:
- Fix running remote tests with other versions of Python.
- Fix tests broken by a change in
ls
's output. - Fix iterating over the long output of a command à la
for line in foo(...): ...
. Currently you must add_bg=True
to the execution options. - Fix recognizing names bound by
for
loops. - Added options
-d|--debug
,-dd|--debug2
and-ddd|--debug3
for enabling debug logs. - Added option
-xxx|--trace-all
for tracing all python execution. Use with caution, it generates lots of output.
The 'From Russia With Love' release.
A weird release, written from Russia via ssh
on a tablet. The ChangeLog is enough to show what's new:
- Iterable parameters to executables are expanded in situ, so
foo(..., i, ...)
is expanded tofoo (..., i[0], i[1], ...
andfoo(..., k=i, ...)
is expanded tofoo (..., k=i[0], k=i[1], ...
. -x|--trace
allows for minimal execution tracing.-xx|--trace-with-linenos
allows for execution tracing that also prints the line number.
By the way, tables suck for typing. Never again (or bluetooh/USB keyboard).
The 'Happy Holidays' release.
Another longish cycle (1.5 months, more or less). That's what two weeks of vacation do to the project.
This time I fixed executing things in, and handling the standard streams between the ayrton
script and, the remote()
, so now we can run complex programs like vi
and mc
. The ChagneLog:
- Send data to/from the remote via another
ssh
channel, which is more stable than usingstdin
. - Stabilized a lot all tests, specially those using a mocked stdout for getting test validation.
- A lot of tests have been moved to their own scripts in ayrton/tests/scripts, which also work as (very minimal) examples of whatś working.
- Use
flake8
to check the code. - Move
remote()
to its own source. - API change: if a
str
orbytes
object is passed in_in
, then it's the name of a file where to readstdin
. If it's anint
, then it's considered a file descriptor. This makes the API consistent to_out
and_err
handling. - More error handling.
- Fixed errors with global variables handling.
argv
is handled at the last time possible, allowing it being passed from test invoction.shift
complains on negative values.- Lazy
pprint()
, so debug statemens do not do useless work. stdin/out/err
handling inremote()
is done by a single thread.- Modify a lot the local terminal when in
remote()
so, among other things, we have no local echo. - Properly pass the terminal type and size to the remote. These last three features allows programs like
vi
be run in the remote. - Paved the road to make
remote()
s more likeCommand()
s.
The 'Remote Is Closer' Release
Almost two months since the last release, and with reason: I've been working hard to define remote()
's semantics. So far this is what there is:
- Global and current scope's local variables can be used in the remote code. This includes envvars.
- Changes to the local variables return to the local code.
- Execution is done synchronously.
I'll write a blog post soon explaining this in more depth. Meanwhile, check the full ChangeLog:
- Great improvements in
remote()
's API and sematics:- Made sure local variables go to and come back from the remote.
- Code block is executed synchronously.
- For the moment the streams are no longer returned.
_python_only
option is gone.- Most tests actually connect to a listening netcat, only one test uses
ssh
.
- Fixed bugs in the new parser.
- Fixed globals/locals mix up.
- Scripts are no longer wrapped in a function. This means that you can't return values and that module semantics are restored.
ayrton
exits with status 1 when the script fails to run (SyntaxError
, etc).
The 'Got myself a parser' release.
I adapted pypy
's parser so now i can play more freely with the language. Let's see what comes out of this. Meanwhile, enjoy the changelog:
source()
is out. use python's import system.- Support executing
foo.py()
. - Much better command detection.
CommandNotFound
exception is now a subclass ofNameError
.- Allow
Command
keywords be named like-l
and--long-option
, so it supports options with dashes. - This also means that long-option is no longer passed as
--long-option
; you have to put the dashes explicitly. bash()
does not return a single string by default; override withsingle=True
.- Way more tests.
- Updated docs.