Add
* Added memberless Enum subclass to `isenum(…)` tests. [Alexander Böhn]
* Added tests for `isenum(…)` and `enumchoices(…)` ... and with that, I do believe we are approaching 100% coverage for the clu.predicates module, fuck yes. [Alexander Böhn]
* Added tests for `clu.predicates.apply_to(…)` ... also fixed a bug in the `iscontainer(…)` predicate (one of the internal-usage `apply_to(…)` preds) that was particularly prone to being triggered by operations on typelists (q.v. source code for clu.typology module supra.) as any iterable non-normative •type• would return True from the predicate, causing the logic of the function to attempt to iterate the type, which of course that would fail in like nearly almost all cases (enum types of course being the notable exception). So now `iscontainer(…)` checks for `not isclasstype(…)`, as do several other predicates that were doing things like manually inspecting __mro__ or some shit like that; everything is more consistent and nicer-looking now, yes. ... Also, most of the apply_to tests straight-up copy-paste-use the typelist stuff from clu.typology (Ibid.) [Alexander Böhn]
* Added `isnormative(…)` and `iscontainer(…)` predicates ... these are, like, refinements of `isiterable(…)` which matches string-ish and bytes-ish types, which sometimes you don’t want; so `isnormative(…)` matches all those string/bytes sorts of things, while `iscontainer(–)` is just a logical combination that does `isiterable(…) and not `isnormative(…)`. ... there are tests now for all the “apply_to(…)”-based logical predicate stuff e.g. `predicate_{all,any,and,or,xor}(…)` and also tests for `uncallable(…)`, `isexpandable(…)`, and those two new ones `isnormative(…)` and `iscontainer(…)`. Fuck yeah. [Alexander Böhn]
* Added tests for all the `getpyattr(…)` and related accessors. [Alexander Böhn]
* Added NOp tests for clu.predicates. [Alexander Böhn]
* Added tests for `isiterable(…)` and `ismergeable(…)` ... also made the version stuff consistent in its import-ness ... and tweaked a few consts in clu.constants. [Alexander Böhn]
* Added predicate-logic functions and lambdas. [Alexander Böhn]
* Adding a few lines to .gitignore. [Alexander Böhn]
* Added support for alias() in Pythons lacking __set_name__ [Alexander Böhn]
* Added a Makefile to do project-related tasks. [Alexander Böhn]
* Added tons of project-related meta-documents ... You know, stuff like: * .editorconfig * .landscape.yml * .travis.yml * appveyor.yml * setup.cfg * conftest.py * COPYING.md * MANIFEST.in ... and a few new legalese morsels in LICENSE.txt. [Alexander Böhn]
* Added tox.ini. [Alexander Böhn]
* Added note about the project name. [Alexander Böhn]
* Added some new constants; predicates in use in filesystem.py. [Alexander Böhn]
* Added filesystem, appdirs, and keyvalue modules ... plus some miscellaneous support functions for same. [Alexander Böhn]
* Added dicts, exporting, naming, sanitzer etc. [Alexander Böhn]
* Added header boilerplate to version.py. [Alexander Böhn]
* Added a bunch of basic project stuff ... .gitignore, .bumpversion.cfg; ... ABOUT.md, README.md, CODE_OF_CONDUCT.md ... __init__.py files in clu/ and test/ ... __version__.py and semantic-versioning code in version.py ... basic setup.py boilerplate. [Alexander Böhn]
Minutiae
* Minutiae II. [Alexander Böhn]
* Minutiae. [Alexander Böhn]
Other
* Bump version: 0.1.0 → 0.1.1. [Alexander Böhn]
* Updated .bumpversion.cfg ... thanks to read_version.py I no longer have to update a bajillion backup __version__ strings, and so. [Alexander Böhn]
* Rearranging the deck chairs on the Titanic pt. LVII. [Alexander Böhn]
* Just found out that enums are “expandable” – ... as in, you can be like `tuplize(*EnumSubclass)` to get back a tuple containing all of the members of EnumSubclass, in order, with no problem. I restructured `apply_to(¬)` and the predicate `isexpandable(…)` accordingly. Side note, really – what makes things quote-unquote expandable, really? Why can I be all like “*EnumSubclass” but not “*generator_expression” ?? Help me dogg you’re my only hope. [Alexander Böhn]
* Asserting that \enum members are not enums. [Alexander Böhn]
* Tests added for those good ol’ utility helpers ... I am talking of course about `tuplize(…)`, `uniquify(…)`, and `listify(…)`, the three of whom have been with us for like ever it feels like. [Alexander Böhn]
* More tests and more predicate overhauls! ... new predicates: `haslength(…)` checks for a “__len__” attr; `uncallable(…)` sees if a thing isn’t callable; `thing_has(…)`, `class_has(…)`, `isslotted(…)`, `isdictish(…)`, `isslotdicty(¬)` and others were completely rewritten to actually work – the first two of those now use the also-rewritten and extremely generally useful new `apply_to(…)` function; `isexpandable(…)` checks a thing against a list of types to see if you can do `*thing` to expand it – I don’t know the language lawyer rules for “asterisking” or tuple-expansion or whatever the fuck it is actually called so this may change; tests for `haslength(…)` and the “{thing/class}_has” and slot/dict predicates have been added and, erm, tested; `predicate_nop(…)` was moved out of clu.typology and into clu.predicates; some other NOp thingees and internal-use doohickeys were added and probably other shit as well (I always forget exactly what when I am editing these commit notes, bah). Yes! [Alexander Böhn]
* Using pytest.xfail() where nondeterminism might happen. [Alexander Böhn]
* Fixed some corner-cases in typology ... thanks, nacent test suite!! [Alexander Böhn]
* Migrated clu.naming tests from replutilities. [Alexander Böhn]
* Migrated dict/namespace merge tests from replutilities. [Alexander Böhn]
* Migrated predicates tests from replutilities. [Alexander Böhn]
* Migrated clu.version inline tests. [Alexander Böhn]
* Trimmed dead code from filesystem tests. [Alexander Böhn]
* Migrated clu.fs.filesystem inline tests. [Alexander Böhn]
* Finished writing that docstring. [Alexander Böhn]
* Fixed enum aliases. [Alexander Böhn]
* Typelist function tune-up ... and and overdue __all__/__dir__ set for the clu.typology module. [Alexander Böhn]
* Moved the enums from clu.fs.appdirectories to clu.constants.enums. [Alexander Böhn]
* Moved aliasing enum stuff from clu.constants to clu.repl. [Alexander Böhn]
* Remove gratuitous OS check in clu.fs.NamedTemporaryFile. [Alexander Böhn]
* It’s probably overkill to fork() before umask()-ing ... but frankly the race condition inherent in trying to get the process’ current umask without perturbing the value is fucking stupid, it is exactly dumb shit like that that inflames my OCD and keeps me from telling everyone I know about how great the fucking POSIX API is (which really that is not a joke, I really actually generally like it except for warts like this one). [Alexander Böhn]
* Peppering in __all__ and __dir__ joyously and mirthfully ... also you wouldn’t know it but between this commit and the last one I completely replumbed all the .envrc and .direnvrc shit on my entire computer – apparently “loading” a source file in the direnv world (which up until recently I thought was a nice world that was good to live in) does *not* export bash aliases, functions, or anything else up to a certain point. ... So I hacked around that – but that was fine, no problem, a complete and total breeze compared to this bizarre bullshit nonsensical PYTHONPATH-related REPL freakout I was having prior to all that. I ended up using the `virtualenv --verbose --clear` command, which if you didn’t know, that second option flag is literally described like e.g. “blow away the entire virtualenv and start over from scratch” or something like that – after doing that and then blindly monkeying around with PATH-y stuff a while afterwards, I got my shit to work… that shit in this case would be the “replenv” stuff, upon which the whole CLU project is literally based. Blech. Anyway you can’t see any of that, because why would I check that nonsense into source control?? It’s not as if I am about to absently save right over all that irritatingly hard work and break it all again, only to find myself in a sea of inscrutable nonfunctionality, sans the ol’ reliable `git bisect` or anything else, hah. Yeah! [Alexander Böhn]
* Sorted out a ton of stuff w/r/t modes and permissions. [Alexander Böhn]
* Git-ignoring .tm_properties. [Alexander Böhn]
* ANSI text printing works on the command line. [Alexander Böhn]
* Fixed CSDIL enum’s __index__(…) method. [Alexander Böhn]
* ANSI metaclass name-lookup method now considers aliases. [Alexander Böhn]
* ZERO-COST ENUM MEMBER ALIASING, MOTHERFUCKERS. [Alexander Böhn]
* Tweaks in the ansi and typespace modules. [Alexander Böhn]
* Further OCD-ish CSDIL cleanup. [Alexander Böhn]
* Combined those two CSIDL dicts into an Enum ... also wrote a basic launchd plist generator for xdg-runtime.py. [Alexander Böhn]
* Fleshing out xdg-runtime.py. [Alexander Böhn]
* Cleaned up xdg-runtime.py script. [Alexander Böhn]
* S/typing/typology/g. [Alexander Böhn]
* So many many things. [Alexander Böhn]
* Vendoring in the excellent “read_version” – ... by one John Thorvald Wodder II (if that really is his name – I mean who cares dogg this code is tight but really that sounds more like a component of some kind of Winklevoss joke than an actual human name) who published it herein: [Alexander Böhn]
• https://github.com/jwodder/read_version
* Ported over the “keyvalue” updates from Homage ... specifically the changes that make it play nice with the whole “appdirectories” all-singing all-dancing crapola – namely these commits: [Alexander Böhn]
• https://git.io/fjVvR – “appdirs” → “appdirectories”
• https://git.io/fjVvE – subsequent “keyvalue” refactoring
... indeeed dogg it’s not like it’s breakthrough lambda-calculus or
a new kind of JIT thing or any of that, but you know, 50% of
programming is coming up with names for shit; the other 50%
is figuring out the names other people came up with for their
shit; the fun stuff (matrix math, type-algebra, prematurely
optimizing things, doing algorithms, generally trying new shit
of any sort) are momentary rounding errors found ephemerally on
serendipitous occasions somewhere betwen those two time-suck
categories of what it is, doggie.
* Tweaked Makefile and rebased the travis config. [Alexander Böhn]
* A few tweaks to clu.fs.filesystem. [Alexander Böhn]
* Minor tweak to short project description. [Alexander Böhn]
* Fleshed out ABOUT.md and README.md. [Alexander Böhn]
* Snipped a dead code line. [Alexander Böhn]
* Fixes for clu.version.VersionInfo. [Alexander Böhn]