Ioflo

Latest version: v2.0.2

Safety actively analyzes 685670 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 16 of 17

0.8.2

Added limited support for quoted field names in some commands

Removed salting.py ioflo distro to its own distro as it has hard dependency on SaltStack


Refactored how deed iois and ._iois are resolved. This now happens in resolveLinks
not in the builder. So now any parametric deed can be safely cloned if using relative
addressing for ioi and any as kind deed if using relative addressing.

Added support for resolving share refs at resolve time with storing.resolvePath
This supports framer/frame relative main framer/frame relative and actor relative
when using "me" and "main" for names.
Example
framer.me
framer.me.frame.me
framer.name.frame.me
framer.me.frame.name
framer.main
framer.main.frame.main
framer.me.actor.me
framer.main.actor.me
framer.me.frame.me.actor.me
framer.main.frame.main.actor.me
if actor name is 'me' then use current actor's camel case name converted to path
Since acts have ref to actor, actor is always available in acts resolve links.


Added .frame, .context, .act (action execution) attributes to each Act instance.
Added _act key parms of each act whose value is self act
These will better support more elegant framer cloning

Added SerialNB class to aiding.py which uses and use termios configuriation
of the serialport

Refactored aiding.SocketNB receive function to use errno
import errno
errno.EAGAIN is correct for the appropriate platform 35 on darwin and 11 on Linux
also in python2.6 socket.error is a subclass of IOError which has .errno attribute
so use that instead of first element of tuple and get rid of typeerror exception


-----------
20140103
---------

0.8.0

Support for framer cloning with parametric deeds

Support for frame and framer relative inodes in deeds in with relinitio

Basic support for cloning auxes of clones

Support for markerNeed cloning
Support for doneNeed, statusNeed cloning
Support for bid cloning
Support for fiat (ready start stop abort) cloning

-----------
20131212
-----------

Added Marking (watch)capability to enable
"if update share"
and
"if change share"
capability

Added to Share class .marks attribute which is odict of marks by frame
values are mark objects with attributes that support last data and last stamp
for share and rules for how to handle .rule see log for example.

.marks keys are framenames

The framenames will also be given to the associated
actions via a parm to resolve to frame references upon resolvelinks

.marks[frame].data = last copy of data like log does
.marks[frame].stamp = last stamp

Add new Need class.
Add new Marker Actor class

When encounter Need syntax for mark the following happens
Adds Mark to .marks of appropriate type to Share
Inserts marker enter action actor at front of enter actions list for the
associated frame
Checks to see if marker of same type for same share already exists so not
duplicated
Marker just saves the stamp or data to .mark of share
Adds MarkNeed to seque
MarkNeed evaluates mark for share when Need runs
Frame is framename that get resolved to frame reference so can insert
marker. if not current frame.

New syntax

go frame if update [in frame] sharepath
go frame if change [in frame] sharepath


---------
20131211
----------

Changed so frame relative is always framer relative as well so can now specify
which framer so can modify frame relative in a different
framer. So two of clauses may appear.

put true into stuff of frame small of framer big

resolves to

.framer.big.frame.small


Frame relative is now stored relative to the frame's framer
.framer.framername.frame.name....
not
.frame.name....

when using frame relative addressing the framer.name is now prepended so
frame relative is always also framer relative
since frame names are unique per framer not per store


Added framer.activeShr and framer.humanShr to store the active frame.name and human
for the framer so can be logged.
framer.name.state.active
framer.name.state.human


When verbosity is >= 3 "verbose" print out of data share at start of mission
now includes the initial values not just the fields so can see what the
initial values ended up being


---------
20131210
----------

0.7.8

Made executable for ioflo called ioflo that is installed as a script
that can be run from the command line using setup.py
default setup.py installs this to
/Library/Frameworks/Python.framework/Versions/2.7/bin/ioflo



------------
20131125
-------------

Changed 'do' semantics so that if name is not provided but 'as' is then use
the default generated name for the deed instance.

Standardized connective usage for commands
to, with are aliases for reference to direct data
by, from are aliases for reference to indirect source

The reason for having aliases is that commands may have a meaning that is
confusion for one of the combinations. The goal is to use the shortest pair
to/by to direct by indirect but still allow for removing ambiguity.
The example is the "inc" command

inc share to data

Would imply that the result if the command is that the value of share is data
not that the value of share is share + data

so

inc share with data could be used to remove ambiguity

The biggest change is that inc share by semantics have changed


So all the command that use to/from will now
accept

(to, with)/(by, from)

For Deed and Tasker commands that allow initialization of io share at parse time
the connectives are

per data
for source


Added support for deeds that are to be inited via parameters not at parse
time. So if deed has attribute "._parametric" then process initio but instead of
creating attributes for each init argument key add these keys to the parms
dict for the Deed. Add check so can't use same key in "with" "per" as
"to" "from"

Refactored preinitio, initio and build of do to support.



Fixed ioflo package version author etc with setup.py like bottle

Go ioflo runner now uses argparse


Added capability to use external import to a given ioflo run with the
-b --behavior CLI and also behavior parameter which is module/package
name that is imported and then added to the _Instances in trim/exterior/__init__.py

Import under
ioflo/trim/exterior

Change trim so current are under

ioflo/trim/interior
/plain
/fancy


Enables import of arbitrary packages to get registered each time a new house is created.
Pass in list of strings of directory paths to package roots
Import when building from skedder. Use importlib to add to existing trim path or
Create own module path.


---------

0.7.4

-----------

Changed initio check on attribute so that allows reuse of deed in other frames
use _iois to store attribute names created with initio. If name in _iois
then print warning but proceed to init Otherwise raise ValueError as before


Exchanged semantics of 'with' and 'per' as 'with' is more like 'from' so more symmetric


Made nodes objects in Store that are modified odicts that have name property
which is pathname of node in store. Convenience method byName to allow creating
and chaining of Node

Refactored salting.py. To use shares instead of fields for status etc
change status on overload to be a node not share and then the overload, onCount,
offCount, healthy, deadCode.


Added postInit method to deeds to be called by initio


---------
20131108
---------


Commented out print module and print package lines


Converted existing Deeds to use new ioinit interface so that store shares are not
created until a deed gets used in a floscript. See the salting.py for an example
of how this is done. Easy way to convert is not use new interface but use old
interfaces just .ioinit.update(oldargs)



Added .time share that is the store's time stamp .stamp. This gets reset by the skedder
in its .run method so corresponds to start of mission.



Changed license to MIT

got rid of "debug" variable

Add Log rules 'lifo' and 'fifo' that will log a mutable sequence or dict until empty
This is useful to flush event deques etc. /This if for read only deques whoes
purpose is solely to be logged not for consumption by something else.

Updated init protocol
inode instead of proem

Default value for inode is instance name split into path on uppercase

Removed some prints in building not done

---------
20131107
----------




salting.py mostly working

Updated to use new ioinit paradigm.
with this paradigm initializing the ioflo (inputs outputs)
is not performed until the Deed instance is used in a floscript.
There are three places to specify what the initialization of the ioflos will be when the instance is
used (not created)

1) import time in CreateInstances by updating the ioinit attribute of the newly created instance
at parse time .initio(**.ioinit) is called to initialize in the store

2) Parse time in buildDo using the 'with' and/or 'per' connectives

3) link time (not yet implemented) with the "on link" clause in the do command

ipath instead of path
ival instead of valu
iown instead of iflo
ipri instead of ipri


Changed "with" use "to" for link time parameters to be consistent with "set"
"inc" Updated do, tasker, server commands. Use "per" for init and "from"
for link time so now the convention is.
to data from source with data per source
where the with and per are init time and to and from are link time


Refactored so no more mulitple inheritance of Patron and Registry instead
added StoriedRegistry to include .store. and Share has its own .store.
This allows using slots for Actors at least for the first few levels of inheritance.

Added __slots__ for Registry on down to Actors

Changed terminology. Store share path are nodes and tip not group.

Registries now odicts
.

----------
20131024
---------

-- Initial pass at Salt Stack integration. New trim/fancy/salting.py module

-------
20131101
--------

-- meta first node in store
-- addNode createNote methods on store


---------
20131023
----------

-- Bump version to 0.7.0

-- change version tov 0.6.4
-- change indent to 4 from 3
-- change licence to apache2


-- Lots of refactoring of console printout when running Skedder

-- Change Tasker to Skedder and Task to Tasker. Break out skedder into its own module
refactor Server, Monitor, Tasker Framer

-- Replace verbose with Console object that acts like logger but not threaded
but writes to file. Default is stdout

Refactor __init__ Verbose it don't have
to be redefined in each __init__.py but instead recursively pull the globals
from each module . That is they define module level globals


def Verbose(level = 1):
"""Sets the modules' verbose level
Must redefine this function in each module since the global namespace
is the namespace of the defining module not the calling module
"""
global _verbose, __all__
level = int(level)
_verbose = level

call the Verbose function on all modules named in __all__
gns = globals() get global namespace which includes modules
for m in __all__: assume module of name == m already imported
gns[m].Verbose(level)




---------
20131017
--------

-- add line continuation character \ or continue needs if end in 'and'.

-- refactor tasker to be skedder then refactor task to be tasker

-- Refactor CreateActors so it don't have
to be redefined in each __init__.py but instead recursively pull the globals
from each module . That is they define module level globals

def CreateActors(store):
"""Makes new instances of actors. Should have blank registry
Must redefine this function in each module since the global namespace
is the namespace of the defining module not the calling module
"""
global _InstanceModules

if _verbose: print "Creating actors for package %s" % __name__
for module in _InstanceModules:
module.CreateActors(store = store)


-- Add task command and normalize other task commands.
currently each type of task gets its own command

framer name options
server kind name options
logger name options

where options are repectively:
[at period] [first frame][be scheduled] [in order]

[at pd] [rx h:p] [tx h:p][be sd] [in or] [to px]

[at pd] [to px] [be sd] [in or]

But we need generic task
task name [modifier ...] options

where name [modifier ...] allows us to name space tasks like we do deeds
For example server has recon specific defaults in building.py these
should not be there but should be in task definition specific not in builder.

so each specific task type would instead be of form

framer name [modifier ...] options

createInstances passes in store to all instances in registry are in same
store. Need to update tasks so get store same way in stead of manually
pasing in,




---------
20131009
----------


-- refactor resolvLinks so always to checks for type outside of if to convert name
to object. Some resolveLinks were not right.

-- added **kw to resolveLinks method of actors so that if additional parms passed
it will not cause reolveLinks to fail

-- fixed status need was not working

-- done need now can be used on any Task not just framers and not just aux and slave

-- Added READY control and READIED status to Tasks so can check if slave task
can be started independent of actually trying to start
-- Add ready control to indicate that a task is ready to start
so can explicity do the checkstart for framers
and allow other task to indicate if ready to start.


-- Added ready command to send ready control to slave task

-- Change done need so will allow slave framers

-- added .done attribute to Task so all tasks have attribute

-- added READY control else block to all runner methods of all existing task classes

-- Changed Frame.precur so it checks to see if act.actor is an interruptive class
indicated by it having the attr ._interruptive. This makes it so other actors
besides needs can be used in beacts in that they return something besides Falsy
so that the beact semantics work but can also be used in preacts without messing up the
preact processing for transistions.


In general the policy should still be that action methods return None unless
there is a use case to do otherwise such as would be used in a beact or the actor
is interruptive such as Transitor and Suspender (transisiton and conditional auxes)

The ReadyFiat is a use case where it can be used in a beact to determine if
a slave framer is ready to be run before transitioning to the frame

ready testslave benter




-- Get rid of tell command. this allows new tell command (below)
replace old
tell task (start stop run abort)
with new
(start stop run abort) task as slave tasks require explicit control this
makes it more convenient. Only can work with slave framers/tasks.

operate slave framers/tasks using new (start stop run abort) slave commands
so activity is explict runs slave framer/task generator directly and not
done automatically by Tasker

use the 'status' need conditions for slave tasks
if status task is started, running, stopped, aborted


-- names to resolve should be checked by builder for valid "identifier" re
at parse time not at resolve time
aux framer
over frame
under frame
first frame
framer first frame


---------
20131008
--------

-- Add with and from connectives to deed command so can pass in at runtime
direct and indirect values to deed Actor.action() method.


-- Add support to all actors for run time parameters to action method
.action(**kw)


-- make deed name spacing generic now its a list of one or more name parts
genre and kind optional for deed parsing
do genre kind name

-- repeat command similar to timeout command implicit transact

repeat 3

go next if recurred >= 3

which does it 4 times 0 1 2 3


---------
20131007
--------

-- Fix the timeout command which was using obsolete code before makeDirectNeed and preact

-- replace repeat goal with reccured.
Although iter is shorter and closer in meaning as repeat is strong verb form
iter is too much like python iterm built in and would be confusing to python
programmers while not meaning anything to non python programmers
so maybe use recurred to be the recur count and is syntactically similar to
elapsed

-------
20131004
---------

-- Reorder need conditions so target comes first easier to parse and will eventually
allow multiline conditions

let [me] if condition (Beact Benter) Other verbs (en, come, allow, admit)
go target if condition (Transition
aux target if condition (Conditional Aux)



-------
20131003
---------


-- get rid of behaving directory in haf.base
move arbiting.py to haf.base
move rest of the behaviors to the trim directory

-- have tasker inject metadata into build so there is hook back for build task
to put stuff
The metadata is not in each House as an odict house.meta of items (name, share)
When each House is created an image of the metadata shares is created for that house
The tasker has access to the meta data via its .houses list

-- Change Scaffold terminology to House to avoid meaning collison for testing scaffolds


-- refactor tasker so that tasker does the build, i.e. tasked calls builder
this will eventually allow
tasker to run as daemon and autobuild based on config file.

-- Refactor so all imports are relative using from . import syntax so guarantee
that do not import module from some place else. The old way of doing relative
imports where a simple
import mymodule
would first look in the same directory
as the importing module and then look in sys.path means there is a chance
of importing the wrong thing. Using the new relative import
from . import mymodule
guarantees the correct thing is imported. (See Beazley)






---------
20130407
---------

Added BENTER benter context and beact support
not tested.

-- Should context commands be verbs or nouns? exit is the same for both noun and verb
I think verb since precur and recur do not have noun form.
benter - beacts (not bentry)

enter - enacts (not entry)
renter - renacts (not rentry)

precur - preacts
recur - reacts

rexit - rexacts
exit - exacts




---------
20130301
---------

Refactor directory layout to use HG mercurial and subprojects get AUV
and WHOI specific actions in separate folder

Put private repo on bitbucket
-- Repository on BitBucket
https://bitbucket.org/smithsamuelm/HalfScript need to commit setup


-- Fixed circular import
Had some kind of circular import problem that an instance of Store, store
was failing isinstance(store, Store)
I fixed it by replacing absolute imports from haf with the new relative imports
using from . import





-------------
20100211
---------------
Made it compatible with python 2.6 and python 2.7
The incompatibility is that starting with pyton2.6 the root object's __init__
and __new__ methods no longer accept any arguments. this is a problem when
you have multiple inheritance with one class that accepts arguments.

the workaround is to define a dummy object that inherits from object
who's __init__ method throws away any argurments and use this object instead
of the root object.

For new just don't pass in the arguments.

Dummy object defined in registering is Corpus. So Patron and Registry class
now inhereit from Corpus instead of object and Data objects new method no longer
calls object new with parameters.


TypeError: object.__init__() takes no parameters

DeprecationWarning: object.__new__() takes no parameters
return object.__new__(cls, uri)


---------
20090611

0.5.5

-- Many changes to the recon interface and the recon associated commanders
and observers and the server. Refactored everything so could track acknowledgments
and send retries if not acked. Also auto refresh the version and control messages
so only have to set them once in the haf script.


-- Major change to time stamps in shares. Now during build time the time stamps
are set to None (similar to how logger does it for tracking updates). The
time stamp does not get a real number until somebody updates the share after the mission
has started. This way a commander that is checking a share to see if its been updated
will see the first update even if it occurs on the very first cycle when store.stamp
= 0.0. This means that any time stamp math must account for the time stamp being None
comparisons are OK as any number is > None. No Exceptions. but if do math add or subtract
a number and None then it raises a TypeError exception. I fixed all the existing
controllers so that this works.


-- Had to change the log behavior as now not only the last update could be None
but the current stamp of the logged share. Now log on update and log on change always
log once to get initial values in the log.





---------
20090530

-- Refactored the directory structure to enable expansion and others to add code
Also refactored to be able to put all the files that are recon specific in one
directory. The analogy is base (as in base package or foundation) for the core
and trim as in (trim package or extras) for application specific

haf
base (these are the base set of files for haf functionality
behaving (these are the standard basic actors

trim
recon
front

to do this had to figure out alot about the import statement
also laid groundwork to go to version 2.7 where absolute_import is required
need to scan through files and make all imports absolute

-- Made the importing a function of list __all__

-- CreateActors is now initiated at the module level not from house (scaffold) object

-- Replaced debug with _verbose so can use verbose levels to
filter what gets printed. _verbose is a global
level 0 means no verbose
level 1 is old verbose
level 4 is old debug

go -v 1


--------
20090529

-- Added support for storing modem rx messages in deque in share

-- Added support for Server log files to log exchanges of packets
server command now has to prefex option (works like logger)

------------------------

0.5.3

-- replaced ask with bid command so can use ask for something else

-- added collective "all" to bid command so can stop/start all active/inactive tasks
to do this added .house attribute to store
this way have access to store.house.taskables so actions can set the .desire
of all taskables to stop

bid stop all

also made it so bid command can be applied to a list of tasks

bid stop task1 task2 ...

-- Changed Convert to recognize 80W25.0345 45N36.123 formats for lat lon

-- Changed strings constants in recon interfacing to all be uppercase
format set is lower case (both VtoR RtoV)

-- Fixed up recon server of pending commands to send from for loop

-- Normalized convention for naming Observer Commander Recon Server shares
and attributes
Adopt convention for server Store all local shares for a server
can always be found referenced off from

serverkind.rx.messagename[.messagevariant] for vehicle to remote
serverkind.tx.messagename[.messagevariant] for remote to vehicle

recon.rx.depth.depth
recon.rx.adcp

recon.tx.depth.depth
recon.tx.speed.mps

.goal
.heading
value
.depth
value
.speed
value
.rpm
value
.recon
.override
value
.rcp
value
.gpsfix
iridium
.exitpos
lat lon
.modem
ack overwrite data
.rudder
value
.pitch
value
.stern
value
.elapsed

.repeat



.recon
.tx
.heading
.goal
refresh acked headingGoal
.depth
.depth
refresh acked depthGoal
.speed
.mps
refresh acked speedMPSGoal
.rpm
refresh acked speedRPMGoal
.override
refresh acked enable
.rcp
refresh acked enable rcp
.set
.gpsfix
refresh acked iridium
.exitpos
refresh acked lat lon
.modem
refresh acked ack overwrite data
.rx
.ctd
temperature conductivity soundspeed depth salinity
.fix
kind lat lon
.state
hours minutes seconds lat lon depth depthGoal altitude pitch roll rpm rpmGoal speedMPS heading headingRate headingGoal mode leg
.adcp
adcpAltitude adcpHeading adcpCurrentAhead adcpSpeedUp adcpSpeedAhead adcpDown adcpCurrentUp adcpSpeedRight adcpCurrentRight
.depth
.depth
depthGoal
.altitude
altitudeGoal
.triangle
depthMin depthMax slope
.unknown
unknown
.depth,trianglealt
depthMin altMin slope
.speed
.rpmmps
rpmGoal speedMSGoal
.unknown
unknown
.heading
.goal
headingGoal
.rate
headingRateGoal
.destination
latGoal lonGoal
.unknown
unknown
.fluorometer
fluorometerGain fluorometerValue
.battery
batteryAvailable batteryCapacity batteryPercentage
.error
errorCode errorText
.version
.response
versionDay versionTime versionMonth versionYear
.request
versionRequest
.route
.leg
leg objective latBegin lonBegin latEnd lonEnd depthAltTag depthAlt speed speedUnits
.legs
legs all
.anchor
pump valve fill anchor state
.set
kind setter lat lon
.mine
valid lat lon id score1 score2 score3
.modem
.msg
kind source dest data
.msgs
msgs
.ifla
slant altitude down range pitch

.commander
.recon
.heading
.parm

.elapsed
value
.depth
.parm

.elapsed
value
.speed
.parm

.elapsed
value
.rpm
.parm

.elapsed
value
.override
.parm

.elapsed
value
.rcp
.parm

.elapsed
value
.gpsfix
.parm

.elapsed
value
.exitpos
.parm

.elapsed
value
.modem
.parm

.elapsed
value

.observer
.recon
.ctd
.parm

.elapsed
value
.fix
.parm

.elapsed
value
.state
.parm

.elapsed
value

-- Changed the convention for state variables for recon
.state
.recon
.fix
.gps
value
.mode
value
.mission
.prelaunch
value
.launched
value
.suspended
value
.complete
value
.override
.enabled
value
.depth
value
.rcp
value
.active
value
.forbidden
value
.power
.shore
value
.leg
value

Page 16 of 17

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.