modP4.py #8

  • //
  • guest/
  • mart/
  • p4fileobjects/
  • dev/
  • lib/
  • modP4.py
  • Commits
# Change User Description Committed
#8 18027 mart out
#7 15805 mart added URI parser (specifically for p4 paths), and a few other things.
#6 15643 mart 1) added support for attribute-like operators.
Now supports query syntax like these (which are equivalent):

    query = "depotfile#^//[rR]eleases"

    query = "depotfile.startswith(//[rR]eleases)"

2) started a re-write of URI supporting classes
#5 15639 mart modP4 is looking better - fixed a few outstanding bugs before next check-ins
#4 15551 mart quick update before exploding the package in an appropriate structure...
#3 15538 mart updating to latest changes - things got screwed after move of files....
#2 15429 mart more update for QUery() & Search()
added import for `dill` (who wants a world without `dill`)
#1 15402 mart renaming to lower case
//guest/mart/p4FileObjects/dev/lib/modP4.py
#15 15391 mart some cleanup....
cmdoptions no lonloger exposed in file opener, best to split in 2 parts (cmddefs & specdefs)
#14 15388 mart __call__() shoduld no longer execute any query statements, differing work to A) `defineQuery()` to set it up and B) within .select() and .read() for its execution.
#13 15339 mart fixed a few buggy things...
#12 15330 mart * SchemaParser
* client-side file objects
* improved cmd line options parser
* fixed many bugs
* added/fixed/improved validators
* added auto-cmd name changes when mismatch with expected vs retrieved
   number of records
* added ap-side path resolver (`p4 where`) since sometimes we can't know a user's
   intentions (I.e. when referencing a relative p4 path) - so we guess
* added separate object loader to treat files and revs separately from other
  types of objects
* separate file object 'read' attribute from 'select', so that there's a
  clear picture of what we are asking... That is, the thing of interest
  (i.e.: file content is the thing of interest when request file records)
   ... therefore:

        >>> with op4n('//depot/files/...','r') as reader:
        >>> ... query = ('change.user=mart','depotFile#\.py$')
        >>> ... files = reader(query).select()

the query isn't all that specific and there's
a good change this would return multiple records,
so unless we really want to get the file content
of multiple files, it would make sense to specify
`.select()` as opposed to `read()`

* note: individual records can access the `read`
  attribute to retrieve a file's content, I.e.: with
   the sample above, we could do:

        >>> for file in files:
        >>> ... content = file.read()

* making much better use of sec definitions to validate spec input / validation
* and more stuff...

** ALL READ test are passing test, including multi-threaded tests! :)


* new in tools:
    - class zipper (to interact with 'p4 zip' & 'unzip'
    - class p4get (like apt-get for p4 software, but something that
      works - will figure out dependencies, change permission bits,
      download, read files from url, git/hg clones, ftp, etc...)
#11 15084 mart more updates...
added fstat test, fixed filemode validation for `readp4file`
#10 15080 mart more updates>

we have successful file reads of:
* depot files
* client files
* cmds
* specs

queries are successful determining when to give to P4D and when to keep the expression
#9 14983 mart updates, bug fixes, etc.
#8 14922 mart more updates...
queries are better, mapping of p4 options/keywords to query fields are also better...
#7 14814 mart more updates, new things, bla bla bla
#6 14724 mart updates, improved Query classes (ready to add runtime expansion classes), added p4downloader, etc....
bla bla bla
#5 14131 mart adding mode detail to parsetrees (cmdoptions & specdefs) - full contructs promotes better validation!
#4 14094 mart few more updates this weekend
#3 14034 mart * added no-fuss p4loger (as decordator)
* re-factored class SpecDef and shuffled class SpecClient round
#2 14032 mart fixed optionsParser to include mutually_exclusive options map to the cmdoptions parseTree
#1 14009 mart adding - still pieces under construction - and have not yet re-implemeted write(), should complete as soon as possible...