Pyrsistent is a number of persistent collections (by some referred to as
functional data structures). Persistent in the sense that they are immutable.
All methods on a data structure that would normally mutate it instead return a
new copy of the structure containing the requested updates. The original
structure is left untouched.
This will simplify the reasoning about what a program does since no hidden side
effects ever can take place to these data structures. You can rest assured that
the object you hold a reference to will remain the same throughout its lifetime
and need not worry that somewhere five stack levels below you in the darkest
corner of your application someone has decided to remove that element that you
expected to be there.
Pyrsistent is influenced by persistent data structures such as those found in
the standard library of Clojure. The data structures are designed to share
common elements through path copying. It aims at taking these concepts and make
them as pythonic as possible so that they can be easily integrated into any
python program without hassle.
Run applications under pseudo-terminal (PTY) sessions and replace
TCL/Expect with a simple tool under your favorite shell (sh, bash,
csh, tcsh, ksh, zsh, etc.).
Packaged by David Weller-Fahy in PR pkg/53955.
The PyObjC project aims to provide a bridge between the Python and Objective-C
programming languages. The bridge is intended to be fully bidirectional,
allowing the Python programmer to take full advantage of the power provided by
various Objective-C based toolkits and the Objective-C programmer transparent
access to Python based functionality.
This package contains wrappers for framework 'CoreSpotlight'.
Tevent is an event system based on the talloc memory management library. It is
the core event system used in Samba.
The low level tevent has support for many event types, including timers,
signals, and the classic file descriptor events.
Tevent also provide helpers to deal with asynchronous code providing the
tevent_req (tevent request) functions.
2.0.7:
Bug fixes:
- Fixed assertion in PromptSession: the style_transformation check was wrong.
- Removed 'default' attribute in PromptSession. Only ask for it in the
prompt() method. This fixes the issue that passing default once, will
store it for all consequent calls in the PromptSession.
- Ensure that __pt_formatted_text__ always returns a FormattedText
instance. This fixes an issue with print_formatted_text.
New features:
- Improved handling of situations where stdin or stdout are not a terminal.
(Print warning instead of failing with an assertion.)
- Added print_container utility.
- Sound bell when attempting to edit read-only buffer.
- Handle page-down and page-up keys in RadioList.
- Accept any collections.abc.Sequence for HSplit/VSplit children (instead of
lists only).
- Improved Vi key bindings: return to navigation mode when Insert is pressed.
2.0.6:
Bug fixes:
- Don't use the predefined ANSI colors for colors that are defined as RGB.
(Terminals can assign different color schemes for ansi colors, and we don't
want use any of those for colors that are defined like #aabbcc for instance.)
- Fix in handling of CPRs when patch_stdout is used.
Backwards incompatible changes:
- Change to the Buffer class. Reset the buffer unless the accept_handler
returns True (which means: "keep_text"). This doesn't affect applications
that use PromptSession.
New features:
- Added AdjustBrightnessStyleTransformation. This is a simple style
transformation that improves the rendering on terminals with light or dark
background.
- Improved performance (string width caching and line height calculation).
- Improved TextArea:
* Exposed focus_on_click.
* Added attributes: auto_suggest, complete_while_typing, history,
get_line_prefix, input_processors.
* Made attributes writable: lexer, completer, complete_while_typing,
accept_handler, read_only, wrap_lines.
2.0.5:
Bug fixes:
- Fix in DynamicContainer. Return correct result for get_children. This
fixes a bug related to focusing.
- Properly compute length of start, end and sym_b characters of
progress bar.
- CPR (cursor position request) fix.
Backwards incompatible changes:
- Stop restoring PromptSession attributes when exiting prompt.
New features:
- Added get_line_prefix attribute to window. This opens many
possibilities:
* Line wrapping (soft and hard) can insert whitespace in front
of the line, or insert some symbols in front. Like the Vim "breakindent"
option.
* Single line prompts also support line continuations now.
* Line continuations can have a variable width.
- For VI mode: implemented temporary normal mode (control-O in insert mode).
- Added style transformations API. Useful for swapping between light and
dark color schemes. Added swap_light_and_dark_colors parameter to
prompt() function.
- Added format() method to ANSI formatted text.
- Set cursor position for Button widgets.
- Added pre_run argument to PromptSession.prompt() method.
2.0.4:
Bug fixes:
- Fix render height for rendering full screen applications in Windows.
- Fix in TextArea. Set accept_handler to None if not given.
- Go to the beginning of the next line when enter is pressed in Vi navigation
mode, and the buffer doesn't have an accept handler.
- Fix the default argument of the prompt function when called multiple
times.
- Display decomposed multiwidth characters correctly.
- Accept history in prompt() function again.
Backwards incompatible changes:
- Renamed PipeInput to PosixPipeInput. Added Win32PipeInput and
create_input_pipe.
- Pass buffer argument to the accept_handler of TextArea.
New features:
- Added accept_default argument to prompt().
- Make it easier to change the body/title of a Frame/Dialog.
- Added DynamicContainer.
- Added merge_completers for merging multiple completers together.
- Add vt100 data to key presses in Windows.
- Handle left/right key bindings in Vi block insert mode.
2.0.3:
Bug fixes:
- Fix in 'x' and 'X' Vi key bindings. Correctly handle line endings and args.
- Fixed off by one error in Vi line selection.
- Fixed bugs in Vi block selection. Correctly handle lines that the selection
doesn't cross.
- Python 2 bugfix. Handle str/unicode correctly.
- Handle option+left/right in iTerm.
2.0.2:
Bug fixes:
- Python 3.7 support: correctly handle StopIteration in asynchronous generator.
- Fixed off-by-one bug in Vi visual block mode.
- Bugfix in TabsProcessor: handle situations when the cursor is at the end of
the line.
This is a collection of normalized lua functions for Lua 5.1
(including LuaJIT), 5.2 and 5.3.
It can inject deterministic versions of core Lua functions that do not
behave identically across all supported Lua implementations into your
module's lexical environment. Each function is as thin and fast a
version as is possible in each Lua implementation, evaluating to the
Lua C implementation with no overhead when semantics allow.
From Edgar Fuß in PR pkg/53600
bit32 is the native Lua 5.2 bit manipulation library, in the version
from Lua 5.3; it is compatible with Lua 5.1, 5.2 and 5.3.
From Edgar Fuß in PR pkg/53600
This package contains exception exceptions and implementations which are so
general purpose that they don't belong in Zope application-specific packages.
stem-1.7.0: Python library for controlling the tor daemon
nyx-2.0.4: curses monitor for the tor daemon
sbws-0.8.0: bandwidth scanner
nyx is a standalone application, so give it a meta-package net/nyx
with no py- prefix.
sbws is a standalone application too but only for designated Tor
plumbers, not for ordinary users, so leave it as py-sbws.
This package contains a single module, which implements a platform independent
file lock in Python, which provides a simple way of inter-process communication.
Pytest plugin to randomly order tests and control random.seed.
* Randomly shuffles the order of test items. This is done first at the level of
modules, then at the level of test classes (if you have them), then at the
order of functions. This also works with things like doctests.
* Resets random.seed() at the start of every test case and test to a fixed
number - this defaults to time.time() from the start of your test run, but
you can pass in --randomly-seed to repeat a randomness-induced failure.
* If factory boy is installed, its random state is reset at the start of every
test. This allows for repeatable use of its random 'fuzzy' features.
* If faker is installed, its random state is reset at the start of every test.
This is also for repeatable fuzzy data in tests - factory boy uses faker for
lots of data.
The Python dis module allows you to disassemble bytecode from the same version
of Python that you are running on. But what about bytecode from different
versions?
That's what this package is for. It can "marshal load" Python bytecodes from
different versions of Python. The command-line routine pydisasm will show
disassembly output using Python 3.6 disassembly conventions.
Also, if you need to modfiy and write bytecode, the routines here can be of
help. There are routines to pack and unpack the read-only tuples in Python's
Code type. For interoperability between Python 2 and 3 we provide our own
versions of the Code type, and we provide routines to reduce the tedium in
writing a bytecode file.
This package also has an extensive knowledge of Python bytecode magic numbers,
including Pypy and others, and how to translate from sys.sys_info major, minor,
and release numbers to the corresponding magic value.
So If you want to write a cross-version assembler, or a bytecode-level
optimizer this package may also be useful. In addition to the kinds of
instruction categorization that dis offers, we have additional categories for
things that would be useful in such a bytecode optimizer.
xxHash is an Extremely fast Hash algorithm, running at RAM speed
limits. It successfully completes the SMHasher test suite which
evaluates collision, dispersion and randomness qualities of hash
functions.
"Provide dummy implementations of pthread functions like mutex operations
to enable libraries to be used in both thread-aware and non-threaded
programs.
This is for NetBSD<=2; newer operating systems don't need it."
Announced on tech-pkg on 2018-03-25.
Behavior-driven development (or BDD) is an agile software development technique
that encourages collaboration between developers, QA and non-technical or
business participants in a software project.
behave uses tests written in a natural language style, backed up by Python code.
The zc.lockfile package provides a basic portable implementation of
interprocess locks using lock files. The purpose if not specifically to lock
files, but to simply provide locks with an implementation based on file-locking
primitives. Of course, these locks could be used to mediate access to other
files. For example, the ZODB file storage implementation uses file locks to
mediate access to file-storage database files. The database files and lock file
files are separate files.
RGBDS (Rednex Game Boy Development System) is a free assembler/linker
package for the Game Boy and Game Boy Color. It consists of:
* rgbasm (an assembler)
* rgblink (a linker)
* rgbfix (a checksum/header fixer)
* rgbgfx (a PNG-to-Game Boy graphics converter)
This is a fork of the original RGBDS which aims to make the programs
more like other UNIX tools.
carton is a command line tool to track the Perl module dependencies for
your Perl application. Dependencies are declared using cpanfile format,
and the managed dependencies are tracked in a cpanfile.snapshot file,
which is meant to be version controlled, and the snapshot file allows
other developers of your application will have the exact same versions
of the modules.
Menlo::Legacy is a package to install Menlo::CLI::Compat which is a
compatibility library that implements the classic version of cpanminus
internals and behavios. This is so that existing users of cpanm and API
clients such as Carton, Carmel and App::cpm) can rely on the stable
features and specific behaviors of cpanm.
This way Menlo can evolve and be refactored without the fear of breaking
any downstream clients, including cpanm itself.
Menlo is a backend for cpanm 2.0, developed with the goal to replace
cpanm internals with a set of modules that are more flexible, extensible
and easier to use.
Parse::PMFile - parses .pm file as PAUSE does
The most of the code of this module is taken from the PAUSE code as of
April 2013 almost verbatim. Thus, the heart of this module should be
quite stable. However, I made it not to use pipe ("-|") as well as I
stripped database-related code. If you encounter any issue, that's most
probably because of my modification.
This module doesn't provide features to extract a distribution or parse
meta files intentionally.
This module provides a common library for working with a variety of CPAN
index services. It is intentionally minimalist, trying to use as few
non-core modules as possible.
The CPAN::Common::Index module is an abstract base class that defines a
common API. Individual backends deliver the API for a particular index.
* [ Mark Haber ]
* Fix hours_since for git fake bare repos
* [ Tom Hoover ]
* Fix 'no defined update command error' in example config
* [ Pavel Nakonechnyi ]
* More meaningful names for temporary files
* [ Paul Wise ]
* Mitigate vulns caused by git code execution (CVE-2018-7032)
* Migrate from ack-grep to ack
* More reliable output supervision
* Improve the status output for CVS
* Improve the git-cvs extension
* Allow prepending commands to existing commands
* Allow for fallback to default commands
* Add support for caching command output
* Add shell extension to maintain a repo status cache
* Add graph, remote, upgrade extensions
* git registration improvements
* webcheckout: prefer https transport
pkgsrc changes:
- Rename directory to myrepos, catching up with package name change years ago
PyHamcrest is a framework for writing matcher objects, allowing you to
declaratively define "match" rules. There are a number of situations where
matchers are invaluable, such as UI validation, or data filtering, but it is in
the area of writing flexible tests that matchers are most commonly used.
When writing tests it is sometimes difficult to get the balance right between
overspecifying the test (and making it brittle to changes), and not specifying
enough (making the test less valuable since it continues to pass even when the
thing being tested is broken). Having a tool that allows you to pick out
precisely the aspect under test and describe the values it should have, to a
controlled level of precision, helps greatly in writing tests that are "just
right." Such tests fail when the behavior of the aspect under test deviates
from the expected behavior, yet continue to pass when minor, unrelated changes
to the behaviour are made.
This project provides a database of test results which can be used as part of
developer workflow to ensure/check things like:
* No commits without having had a test failure, test fixed cycle.
* No commits without new tests being added.
* What tests have failed since the last commit (to run just a subset).
* What tests are currently failing and need work.
Test results are inserted using subunit (and thus anything that can output
subunit or be converted into a subunit stream can be accepted).
Specifications for callback functions passed in to an API
If your code lets other people supply callback functions, it's important to
specify the function signature you expect, and check that functions support
that. Adding extra parameters later would break other peoples code unless
you're careful.
backcall provides a way of specifying the callback signature using a prototype
function.
Taint::Util wraps perl's internal routines for checking and setting
the taint flag and thus does not rely on regular expressions for
untainting or odd tricks involving eval and kill for checking
whether data is tainted, instead it checks and flips a flag on the
scalar in-place.
Cache::Memcached::Fast is a Perl client for memcached. Module core
is implemented in C and tries hard to minimize number of systemi
calls and to avoid any key/value copying for speed. As a result,
it has very low CPU consumption.
Parameterized testing in Python sucks. 'parameterized' fixes that. For
everything. Parameterized testing for nose, parameterized testing for py.test,
parameterized testing for unittest.
Version 4.1:
Protection agains buffer overflow and negative indexes in __getitem__ and __setitem__ for objc.varlist instances.
Fix incorrect metadata for +[NSEvent addLocalMonitorForEventsMatchingMask:handler:]
Fix incorrect and misleading error message in the exception that is raised when return a value from a block that should not return a value.
Issue 223: Fix hard crash when executing help(Cocoa)
Fetching the help for PyObjC framework wrappers isn’t very useful due to the sheer size of the output (4.5 million lines of output for help(Cocoa) at the moment), but shouldn’t cause a hard crash of the interpreter.
Issue 218: Explictly cause an ImportError when reloading `objc._objc`
Reloading the PyObjC core extension now raises an ImportError because this cannot work and used to raise a rather vague error.
Updated metadata for Xcode 9.2
Added missing `MAC_OS_X_VERSION_*` constants
Fix memory error in struct wrappers which resulted in a use-after-free error in the initializer for structs.
Add bindings for frameworks Security, SecurityFoundation and and SecurityInterface.
The bindings for the Security framework don’t expose a number of older APIs that were deprecated in macOS 10.7.
Add bindings to libdispatch.
These bindings require macOS 10.8 or later, libdispatch was available earlier but macOS 10.8 changed the API in such a way that wrapping became a lot easier.
pytest-asyncio is a library, written in Python, for testing asyncio code with
pytest.
asyncio code is usually written in the form of coroutines, which makes it
slightly more difficult to test using normal testing tools. pytest-asyncio
provides useful fixtures and markers to make testing easier.
Python 3.6 added async generators. Python 3.7 adds some more tools to make them
usable, like contextlib.asynccontextmanager. This library gives you all that
back to Python 3.5.
retry_decorator is a Python module that exposes a decorator that retries the
decorated function with exponential backoff.
This is yet another dependency for PR pkg/52941.
The deprecation library provides a deprecated decorator and a
fail_if_not_removed decorator for your tests. Together, the two enable the
automation of several things:
1. The docstring of a deprecated method gets the deprecation details appended to
the end of it. If you generate your API docs direct from your source, you don't
need to worry about writing your own notification. You also don't need to worry
about forgetting to write it. It's done for you.
2. Rather than having code live on forever because you only deprecated it but
never actually moved on from it, you can have your tests tell you when it's
time to remove the code. The @deprecated decorator can be told when it's time
to entirely remove the code, which causes @fail_if_not_removed to raise an
AssertionError, causing either your unittest or py.test tests to fail.