Skip to content

Commit

Permalink
Configuring for pure-python-without-pypy (#3)
Browse files Browse the repository at this point in the history
* Configuring for pure-python-without-pypy
* Modernize package.
* Flake8 and cleanup.
* Rename files.
  • Loading branch information
sallner committed May 13, 2020
1 parent 61373a4 commit 17db714
Show file tree
Hide file tree
Showing 15 changed files with 299 additions and 357 deletions.
39 changes: 39 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python-without-pypy
#
# EditorConfig Configuration file, for more details see:
# http://EditorConfig.org
# EditorConfig is a convention description, that could be interpreted
# by multiple editors to enforce common coding conventions for specific
# file types

# top-most EditorConfig file:
# Will ignore other EditorConfig files in Home directory or upper tree level.
root = true


[*] # For All Files
# Unix-style newlines with a newline ending every file
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# Set default charset
charset = utf-8
# Indent style default
indent_style = space
# Max Line Length - a hard line wrap, should be disabled
max_line_length = off

[*.{py,cfg,ini}]
# 4 space indentation
indent_size = 4

[*.{yml,zpt,pt,dtml}]
# 2 space indentation
indent_size = 2

[{Makefile,.gitmodules}]
# Tab indentation (no size specified, but view as 4 spaces)
indent_style = tab
indent_size = unset
tab_width = unset
25 changes: 18 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,22 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python-without-pypy
*.egg-info/
*.profraw
*.pyc
*.pyo
.coverage
.installed.cfg
bin/
develop-eggs/
src/zc.beforestorage.egg-info/
parts/
*.py[co]
.mr.developer.cfg
.tox/
__pycache__/
bin/
build/
coverage.xml
develop-eggs/
dist/
*.egg-info/
.tox/
eggs/
htmlcov/
lib/
lib64
parts/
pyvenv.cfg
34 changes: 27 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,32 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python-without-pypy
language: python
python:
- 2.7
- 3.3
- 3.4
- 2.7
- 3.5
- 3.6
- 3.7
- 3.8

matrix:
include:
- name: "lint"
python: 3.7
env: TOXENV="lint"
- name: "coverage"
python: 3.7
env: TOXENV="coverage"
after_success:
- coveralls

install:
- travis_retry pip install ZODB zope.testing zope.testrunner
- travis_retry pip install -e .
- pip install -U pip
- pip install -U tox-travis coveralls

script:
- zope-testrunner --test-path=src --auto-color --auto-progress
- tox

notifications:
email: false
email: false

cache: pip
70 changes: 70 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
CHANGES
=======

0.6 (unreleased)
----------------

- Add support for Python 3.5 through 3.8.

- Drop support for Python 3.3 and 3.4.

- Fix a long-standing bug in loadBefore´. The bug was revealed by
testing against ZODB 5, for which loadBefore plays a bigger role.


0.5.1 (2013-10-25)
------------------

- Fix broken release


0.5.0 (2013-10-25)
------------------

Added ZODB4 and Python 3 support.


0.4.0 (2010-12-09)
------------------

Added a "before-from-file" option that can be used if the application wants to
preserve beforestorage state between application restarts.

0.3.2 (2008-12-05)
------------------

Updated to work with both ZODB 3.8 and 3.9.

0.3.1 (2008-12-01)
------------------

Renamed lastTid to getTid to conform to the ZEO.interfaces.IServeable
interface.


0.3.0 (2008-12-01)
------------------

Added Blob support.

0.2.0 (2008-03-05)
------------------

Added support for "now" and "startup" values to the before option when
using ZConfig. The "now" value indicates that the before storage should
provide a view of the base storage as of the time the storage is created.
The "startup" value indicates that the before storage should provide a
view of the base stoage as of process startup time. The later is
especially useful when setting up more than once before storage in a
single application, as it allows you to arrange that all of the
storages provide consistent views without having to specify a time.

0.1.1 (2008-02-07)
------------------

Fixed a packaging bug that caused some files to be omitted.

0.1 (2008-01-??)
----------------

Initial release.
12 changes: 7 additions & 5 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# Generated from:
# https://github.com/zopefoundation/meta/tree/master/config/pure-python-without-pypy
include *.rst
include *.txt
include *.py
include tox.ini
include buildout.cfg
include tox.ini

recursive-include src *

global-exclude *.pyc
recursive-include src *.rst
recursive-include src *.txt
recursive-include src *.xml
38 changes: 38 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
==============
Before Storage
==============

ZODB storages typically store multiple object revisions to support
features such as multi-version concurrency control and undo. In the
case of the mod popular storage implementation, old revisions aren't
discarded until a pack. This feature has often been exploited to
perform time travel, allowing one to look at a database as it existed
in at some point in time. In the past, this has been possible with
file storage by specifying a time at which to open the file
storage. This works fairly well, but is very slow for large databases
because existing index files can't easily be used. Time travel is
also supported for individual objects through the ZODB history
mechanism.

The introduction of multi-version concurrency control provided new
opertunities for time travel. Using the storage loadBefore method,
one can load transaction records written before a given time. ZODB
3.9 will provide an option to the database open method for opening
connections as of a point in time.

Demo storage can be quite useful for testing, and especially staging
applications. In a common configuration, they allow for storing
changes to a base database without changing the underlying database.
Zope functional testing frameworks leverage demo storages to easily
roll-back database state after a test to a non-empty state before a
test. A significant limitation of demo storages is that they can't be
used with base storages that change. This means that they generaly
can't be used with ZEO. It isn't enough to have a read-only
connections, if the underlying database is still being changed by
other clients.

The "before" storage provides another way to leverage the loadBefore
method to support time travel and a means to provide an unchanging
view into a ZEO server. A before storage is a database adapter that
provides a read-only view of an underlying storage as of a particular
point in time.
1 change: 0 additions & 1 deletion README.txt

This file was deleted.

Loading

0 comments on commit 17db714

Please sign in to comment.