Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AttributeError: module 'setuptools.build_meta' has no attribute '__legacy__' #1694

Closed
Zlopez opened this issue Feb 21, 2019 · 9 comments
Closed

Comments

@Zlopez
Copy link

Zlopez commented Feb 21, 2019

I'm trying to install project I'm working on using pip3 install -e "file:///home/vagrant/devel", but everytime I end up with:

$> pip3 install -e "file:///home/vagrant/devel"
Obtaining file:///home/vagrant/devel
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  Complete output from command /home/vagrant/.virtualenvs/anitya/bin/python3 /home/vagrant/.virtualenvs/anitya/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /tmp/tmp6db90a_q:
  Traceback (most recent call last):
    File "/home/vagrant/.virtualenvs/anitya/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 207, in <module>
      main()
    File "/home/vagrant/.virtualenvs/anitya/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 197, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/home/vagrant/.virtualenvs/anitya/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 48, in get_requires_for_build_wheel
      backend = _build_backend()
    File "/home/vagrant/.virtualenvs/anitya/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 39, in _build_backend
      obj = getattr(obj, path_part)
  AttributeError: module 'setuptools.build_meta' has no attribute '__legacy__'

Maybe I'm just doing something wrong, but this worked few days ago.

@Zlopez
Copy link
Author

Zlopez commented Feb 21, 2019

I'm using python 3.7.2

@pganssle
Copy link
Member

As far as I know, this is triggered when all of the following conditions are met:

  1. You are using a virtualenv with --system-site-packages
  2. You are using pip >= 19.0.2
  3. Your system version of setuptools is less than 40.8.0.
  4. The package you are installing does not specify build-backend="setuptools.build_meta" in its pyproject.toml.

It is a bug in pip's PEP 517 build isolation code: pypa/pip#6264.

The best way to fix it at the moment is to explicitly specify build-backend="setuptools.build_meta" in your pyproject.toml, like this. Note that you'll also want to put pyproject.toml in your MANIFEST.in.

Assuming you need --system-site-packages in your virtualenv, the second best way to solve this is to upgrade your system version of setuptools.

I'm going to close this issue as not a bug in setuptools, but thank you for the report. I recommend giving a +1 on the pip thread, or chiming in there if you managed to trigger this in a different way.

@Zlopez
Copy link
Author

Zlopez commented Feb 21, 2019

Thank you for your response. I will check when setuptools will be updated on Fedora 29.

@pganssle
Copy link
Member

pganssle commented Feb 21, 2019

@Zlopez Oh, also pip install -e --no-use-pep517 'file://whatever/vagrant/devel' may work, not sure - I think it depends on whether the package in question was relying on the PEP 518 dependency satisfaction or not.

@Zlopez
Copy link
Author

Zlopez commented Feb 21, 2019

@pganssle Thanks, I will try this

@janPesl
Copy link

janPesl commented Aug 14, 2019

When trying to install scipy module on Python 3.5.2,
[GCC 5.4.0 20160609] on linux, I keep running into the same error message using setuptools 41.1.0.

    File `"/usit/abel/u1/user/.local/lib/python3.5/site-packages/pip/_vendor/pep517/_in_process.py",` line 39, in _build_backend
      obj = getattr(obj, path_part)
  AttributeError: module 'setuptools.build_meta' has no attribute '__legacy__'
  ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 /usit/abel/u1/user/.local/lib/python3.5/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /tmp/tmpr85rmcv9 Check the logs for full command output.
(virtualenv) janpesl@freebio:~$ pip3 install --upgrade setuptools
Requirement already up-to-date: setuptools in ./.local/lib/python3.5/site-packages (41.1.0)

What is the recommended fix?

@Zlopez
Copy link
Author

Zlopez commented Aug 14, 2019

@janPesl for me the solution from @pganssle worked. See #1694 (comment)

fao89 added a commit to fao89/pulp-smash that referenced this issue Feb 28, 2020
fao89 added a commit to fao89/pulp_file that referenced this issue Feb 28, 2020
fao89 added a commit to fao89/pulpcore that referenced this issue Feb 28, 2020
fao89 added a commit to fao89/plugin_template that referenced this issue Mar 2, 2020
fao89 added a commit to fao89/pulp-smash that referenced this issue Mar 2, 2020
PhilippWendler added a commit to sosy-lab/benchexec that referenced this issue Oct 14, 2020
Because pyproject.toml exists, pip uses the PEP-517 installation
methods, and we should properly declare setuptools as our build backend.

Taken from
pypa/setuptools#1694 (comment)
@peteeckel
Copy link

@Zlopez Oh, also pip install -e --no-use-pep517 'file://whatever/vagrant/devel' may work, not sure - I think it depends on whether the package in question was relying on the PEP 518 dependency satisfaction or not.

It does. Thanks!

ltalirz added a commit to ltalirz/aiida-core that referenced this issue Mar 4, 2021
AiiDA was still using the `setuptools.build_meta:__legacy__` build
backend.
This can lead to issues when using a *system* version of setuptools
< 0.40.8, see [1].

I've tested that the `reentry_register` hook still works with the new
build backend.

[1] pypa/setuptools#1694 (comment)
ltalirz added a commit to aiidateam/aiida-core that referenced this issue Mar 5, 2021
The `pyproject.toml` was originally added in ca75832 
without specifying a backend, which implicitly defaults to the legacy `setuptools.build_meta:__legacy__` one. 
This choice was made explicit in a2bebb4 

This can lead to issues when using a *system* version of setuptools
< 40.8.0, see [1].
We believe there is no good reason for sticking with the legacy build system.

I've tested that the `reentry_register` hook still works with the new
build backend.

[1] pypa/setuptools#1694 (comment)
chrisjsewell added a commit to aiidateam/aiida-core that referenced this issue Mar 18, 2021
* Dependencies: bump cryptography to 3.2 in `requirements` (#4520)

Bumps `cryptography` from 2.8 to 3.2.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Sebastiaan Huber <mail@sphuber.net>

* CI: remove `run-on-comment` job in benchmark workflow (#4569)

This job is failing due to this change:
https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
It's not really used, so lets just remove it

* Docs: update citations with AiiDA workflows paper (#4568)

Citation for the latest paper on the engine is added to the README and
the documentation index page. The paper in `aiida/__init__.py` is also
updated which was still referencing the original publication of 2016.

* Enforce verdi quicksetup --non-interactive (#4573)

When in non-interactive mode, do not ask whether to use existing user/database

* `SinglefileData`: add support for `pathlib.Path` for `file` argument (#3614)

* DOCS: Reverse daemon start and profile setup sections in intro. (#4574)

The profile must be setup prior to starting the daemons to avoid an error.

* Fix `verdi --version` in editable mode (#4576)

This commit fixes a bug,
whereby click was using a version statically stored on install of the package.
This meant changes to `__version__` were not dynamically reflected.

* Improve `verdi node delete` performance (#4575)

The `verdi node delete` process fully loaded all ORM objects at multiple stages
during the process, which is highly inefficient.
This commit ensures the process now only loads the PKs when possible.
As an example, the time to delete 100 "empty" nodes (no attributes/objects)
is now reduced from ~32 seconds to ~5 seconds.

* `CalcJob`: add the `additional_retrieve_list` metadata option (#4437)

This new option allows one to specify additional files to be retrieved
on a per-instance basis, in addition to the files that are already
defined by the plugin to be retrieved. This was often implemented by
plugin packages itself through a `settings` node that supported a key
that would allow a user to specify these additional files.

Since this is a common use case, we implement this functionality on
`aiida-core` instead to guarantee a consistent interface across plugins.

* Add options for transport tasks (#4583)

* Add options for transport tasks

When encountering failures during the execution of transport tasks, a runner
will wait for a time interval between transport task attempts. This time
interval between attempts is increased using an exponential backoff
mechanism, i.e. the time interval is equal to:

(TRANSPORT_TASK_RETRY_INITIAL_INTERVAL) * 2 ** (N_ATTEMPT - 1)

where N_ATTEMPT is the number of failed attempts. This mechanism is
interrupted once the TRANSPORT_TASK_MAXIMUM_ATTEMPTS is reached.

The initial interval and maximum attempts are currently fixed to 20
seconds and 5, respectively. This commit adds two configuration options
that use these defaults, but allow the user to adjust them using `verdi
config`.

* Fix command for getting EBM config options (#4587)

Currently the transport options for the EBM are obtained by using the
get_config function, e.g.:

`initial_interval = get_config_option(RETRY_INTERVAL_OPTION)`

However, it seems that `get_config()` does not get you the current
configuration (see #4586). 

Replacing `get_config().get_option()` with `get_config_option()` fixes this
issue for the EBM options.

* CI: revert apt source list removal

This work around was added some time ago because this source for the
`apt` package manager was causing the install of system dependencies to
fail.

* CI: Add workflow to run tests against various RabbitMQ versions

The main test workflow runs against a single version of RabbitMQ but
experience has shown that the code can break for different versions of
the RabbitMQ server. Here we add a new CI workflow that runs various
unit tests through pytest that simulate the typical interaction with the
RabbitMQ server in normal AiiDA operation. The difference is that these
are tested against the currently available versions of RabbitMQ.

The current setup, still only tests part of the functionality that AiiDA
uses, for example, the default credentials and virtual host are used.
Connections over TLS are also not tested. These options would require
the RabbitMQ service that is running in a docker container to be
configured differently. It is not clear how these various options can be
parametrized in concert with the actual unit tests.

* Engine: replace `tornado` with `asyncio`

The `plumpy` and `kiwipy` dependencies have already been migrated from
using `tornado` to the Python built-in module `asyncio` in the versions
`0.16.0` and `0.6.0`, respectively. This allows us to also rid AiiDA of
the `tornado` dependency, which has been giving requirement clashes with
other tools, specifically from the Jupyter and iPython world. The final
limitation was the `circus` library that is used to daemonize the daemon
workers, which as of `v0.17.1` also supports `tornado~=5`.

A summary of the changes:

 * Replace `tornado.ioloop` with `asyncio` event loop.
 * Coroutines are marked with `async` instead of decorated with the
   `tornado.gen.coroutine` decorator.
 * Replace `yield` with `await` when calling a coroutine.
 * Replace `raise tornado.gen.Return` with `return` when returning from
   a coroutine.
 * Replace `add_callback` call on event loop with `call_soon` when
   scheduling a callback.
 * Replace `add_callback` call on event loop with `create_task` when
   scheduling `process.step_until_terminated()`.
 * Replace `run_sync` call on event loop with `run_until_complete`.
 * Replace `pika` uses with `aio-pika` which is now used by the `plumpy`
   and `kiwipy` libraries.
 * Replace `concurrent.Future` with `asyncio.Future`.
 * Replace `yield tornado.gen.sleep` with `await asyncio.sleep`.

Additional changes:

 * Remove the `tornado` logger from the logging configuration.
 * Remove the `logging.tornado_loglevel` configuration option.
 * Turn the `TransportQueue.loop` attribute from method into property.
 * Call `Communicator.close()` instead of `Communicator.stop()` in the
   `Manager.close()` method. The `stop` method has been deprecated in
   `kiwipy==0.6.0`.

* `Process.kill`: properly resolve the killing futures

The result returned by `ProcessController.kill_process` that is called
in `Process.kill` for each of its children, if it has any, can itself be
a future, since the killing cannot always be performed directly, but
instead will be scheduled in the event loop. To resolve the future of
the main process, it will have to wait for the futures of all its
children to be resolved as well. Therefore an intermediate future needs
to be added that will be done once all child futures are resolved.

* Unwrap the futures returned by `ProcessController` in `verdi process`

The commands of `verdi process` that perform an RPC on a live process
will do so through the `ProcessController`, which returns a future.
Currently, the process controller uses the `LoopCommunicator` as its
communicator which adds an additional layer of wrapping. Ideally, the
return type of the communicator should not change depending on the
specific implementation that is used, however, for now that is the case
and so the future needs to be unwrapped explicitly one additional time.
Once the `LoopCommunicator` is fixed to return the same future type as
the base `Communicator` class, this workaround can and should be
removed.

* `Runner`: use global event loop and global runner for process functions

With the migration to `asyncio`, there is now only a single event loop
that is made reentrant through the `nest-asyncio` library, that monkey
patches `asyncio`'s built-in mechanism to prevent this. This means that
in the `Runner` constructor, we should simply get the global event loop
instead of creating a new one, if no explicit loop is passed into the
constructor. This also implies that the runner should never take charge
in closing the loop, because it no longer owns the global loop.

In addition, process functions now simply use the global runner instead
of creating a new runner. This used to be necessary because running in
the same runner, would mean running in the same loop and so the child
process would block the parent. However, with the new design on
`asyncio`, everything runs in a single reentrant loop and so child
processes no longer need to spawn their own independent nested runner.

* Engine: cancel active tasks when a daemon runner is shutdown

When a daemon runner is started, the `SIGINT` and `SIGTERM` signals are
captured to shutdown the runner before exiting the interpreter. However,
the async tasks associated with the interpreter should be properly
canceled first.

* Engine: enable `plumpy`'s reentrant event loop policy

The event loop implementation of `asyncio` does not allow to make the
event loop to be reentrant, which essentially means that event loops
cannot be nested. One event loop cannot be run within another event
loop. However, this concept is crucial for `plumpy`'s design to work and
was perfectly allowed by the previous event loop provider `tornado`.

To work around this, `plumpy` uses the library `nest_asyncio` to patch
the `asyncio` event loop and make it reentrant. The trick is that this
should be applied at the correct time. Here we update the `Runner` to
enable `plumpy`'s event loop policy, which will patch the default event
loop policy. This location is chosen since any process in `aiida-core`
*has* to be run by a `Runner` and only one runner instance will ever be
created in a Python interpreter. When the runner shuts down, the event
policy is reset to undo the patch.

* Tests: do not create or destroy event loop in test setup/teardown

* Engine: explicitly enable compatibility for RabbitMQ 3.5

RabbitMQ 3.6 changed the way integer values are interpreted for
connection parameters. This would cause certain integer values that used
to be perfectly acceptable, to all of suddent cause the declaration of
resources, such as channels and queues, to fail.

The library `pamqp`, that is used by `aiormq`, which in turn is used
ultimately by `kiwipy` to communicate with the RabbitMQ server, adapted
to these changes, but this would break code with RabbitMQ 3.5 that used
to work just fine. For example, the message TTL when declaring a queue
would now fail when `32767 < TTL < 655636` due to incorrect
interpretation of the integer type.

The library `pamqp` provides a way to enable compatibility with these
older versions. One should merely call the method:

    pamqp.encode.support_deprecated_rabbitmq()

This will enable the legacy integer conversion table and will restore
functionality for RabbitMQ 3.5.

* Dependencies: update minimum version for `notebook>=6.1.5` (#4593)

Lower versions suffer from vulnerability `GHSA-c7vm-f5p4-8fqh`.

Also update the requirement files to only use explicit pinned versions.
The compatibility operator was erroneously used for the `aio-pika`,
`pamqp` and `pytest-asyncio` dependencies.

For `pamqp` the minimum required version is upped to `2.3` since that
was the version that introduced the `support_deprecated_rabbitmq`
function that is required from that library.

* Daemon: replace deprecated classmethods of `asyncio.Task` in shutdown (#4608)

The `shutdown` function, that was attached to the loop of the daemon
runner in `aiida.engine.daemon.runner.start_daemon`, was calling the
classmethods `current_task` and `all_tasks` of `asyncio.Task` which have
been deprecated in Python 3.7 and are removed in Python 3.9. This would
prevent the daemon runners from being shutdown in Python 3.9. The
methods have been replaced with top level functions that can be imported
directl from `asyncio`.

This was not noticed in the tests because in the tests the daemon is
stopped but it is not checked whether this happens successfully. Anyway,
the error would only show up in the daemon log. To test the shutdown
method, it has been made into a standalone coroutine and renamed to
`shutdown_runner`.

Since the `shutdown_runner` is a coroutine, the unit test that calls it
also has to be one and therefore we need `pytest-asyncio` as a
dependency. The `event_loop` fixture, that is provided by this library,
is overrided such that it provides the event loop of the `Manager`,
since in AiiDA only ever this single reentrant loop should be used.

Note that the current CI tests run against Python 3.6 and Python 3.9 and
so will still not catch this problem, however, the `test-install`
workflow _does_ run against Python 3.9. I have opted not to change the
continuous integrations to run against Python 3.9 instead of 3.8, since
they take more than twice the time. Supposedly this is because certain
dependencies have to be built and compiled from scratch when the
testing environment is started.

* CLI: add the `verdi database version` command (#4613)

This shows the schema generation and version of the database of the
given profile, useful mostly for developers when debugging.

In addition to the new command, the code in `aiida.manage.manager` had
to be updated for the new functionality to work. The `get_backend_manager`
was so far _not_ loading the backend, although that really doesn't make
any sense. It is providing access to data from the database, but to do
so the backend should be loaded, otherwise a connection isn't possible.

This problem went unnoticed, because the `BackendManager` was so far only
used in `aiida.engine.utils.set_process_state_change_timestamp`. By the
time this gets used, the database backend will already have been loaded
through another code path.

For the change `verdi database version` command, however, the call to
get the backend manager needed to make sure that the database backend
itself was also loaded. It was not possible to have `get_backend_manager`
simply call `_load_backend()` because this would lead to infinite
recursion as `_load_backend()` also calls `get_backend_manager`.
Therefore `_load_backend` is refactored to not call the former but rather
to directly fetch it through `aiida.backends`.

* Add the `TransferCalcJob` plugin (#4194)

This calcjob allows the user to copy files between a remote machine and
the local machine running AiiDA. More specifically, it can do any of the
following:

* Take any number of files from any number of `RemoteData` folders in
a remote machine and copy them in the local repository of a single
newly created `FolderData` node.

* Take any number of files from any number of `FolderData` nodes in the
local machine and copy them in a single newly created `RemoteData` folder
in a given remote machine.

These are the main two use cases, but there are also other more complex
combinations allowed by the current implementation.

Co-authored-by: Sebastiaan Huber <mail@sphuber.net>

* Dependencies: update requirement `kiwipy~=0.7.1` and `plumpy~=0.18.0` (#4629)

A breaking change was released with `kiwipy==0.5.4` where the default
value for the task message TTL was changed. This caused connections to
existing RabbitMQ queues to fail. Since process task queues are
permanent in AiiDA, this would break all existing installations.

This problem was fixed by reverting the change which was released with
`kiwipy==0.5.5`, however, this was a support patch at the time and the
revert never made it into the main line, leaving all versions up from
`v0.6.0` still affected. Since these versions of `kiwipy` were never
required by a released version of `aiida-core`, but only the current
`develop`, which will become `v1.6.0`, we can simply update the
requirement to the latest patch `kiwipy==0.7.1` that addressed the
problem.

The dependency requirement for `plumpy` also had to be updated because
the old pinned minor version was pinned to `kiwipy~=0.6.0` which is not
compatible with our new requirements.

* Docs: add content from old documentation on caching/hashing (#4546)

Move the content of "Controlling hashing" and "Design guidelines" inside
of `developer_guide/core/caching.rst` to `topics/provenance/caching`.

* Engine: remote `with_persistence=False` from process function runner (#4633)

In principle the runner for a process function does not need a persister
since it runs in one go and does not have intermediate steps at which
the progress needs to be persisted. However, since the process function
implementation calls `Manager.get_runner`, if a runner has not yet been
created in the interpreter, one will be created and set to be the global
one. This is where the problem occurs because the process function
specifies `with_persistence=False` for the runner. This will cause any
subsequent process submissions to fail since the `submit` function will
call `runner.persister.save_checkpoint` which will fail since the
`persister` of the runner is `None`.

* `CalcJob`: improve testing and documentation of `retrieve_list` (#4611)

The documentation on the `retrieve_list` syntax and its functioning was
incorrect. The inaccuracies are corrected and extensive examples are
provided that give an example file hierarchy for the remote working
directory and then for a variety of definitions of the `retrieve_list`
the resulting file structure in the retrieved folder is depicted.

* CI: remote the `numpy` install workaround for `pymatgen`

The problem occurred due to an outdated version of `setuptools` which
would be invoked when `pymatgen` gets installed from a tarball, in which
case the wheel has to be built. In this scenario, the build requirements
get installed by `setuptools`, which at outdated versions did not
respect the Python requirements of the dependencies which would cause
incompatible version of `numpy` to be installed, calling the build to
fail. By updating `setuptools` the workaround of manually installing a
compatible `numpy` version beforehand is no longer necessary.

* CI: skip `restapi.test_threaded_restapi:test_run_without_close_session`

This test has been consistently failing on Python 3.8 and 3.9 despite
the two reruns using flaky. For now we skip it entirely instead.

* Dependencies: update requirement `plumpy~=0.18.1` (#4642)

This patch release of `plumpy` fixes a critical bug that makes the new
`asyncio` based implementation of the engine compatible with Jupyter
notebooks.

* CLI: ensure `verdi database version` works even if schema outdated (#4641)

The command was failing if the database schema was out of sync because
the backend was loaded, through `get_manager`, with the default schema
check on. Since the database does not actually have to be used, other
than to retrieve the current schema version and generation, we can load
the backend without the check.

* Add `verdi group delete --delete-nodes` (#4578)

This commit makes a number of improvements to the deletion of nodes API/CLI:

1. Makes `delete_nodes` usable outside of `click`; 
   adding a callback for the confirmation step, 
   rather than calling `click.confirm` directly, 
   and using logging instead of `click.echo`
2. Moves the function from `aiida/manage/database/delete/nodes.py`
   to `aiida/tools/graph/deletions.py`,
   leaving a deprecation warning at the old location.
   This is a more intuitive place since the function is directly build on the graph traversal functionality.
3. Exposes API functions *via* `from aiida.tools import delete_nodes` and adds their use to the documentation.
4. Adds `delete_group_nodes` mainly as a wrapper around `delete_nodes`;
   querying for all the node pks in the groups, then passing these to `delete_nodes`
5. Adds the ability to delete nodes to `verdi group delete --delete-nodes`,
   with the same flags and logic as `verdi node delete` 
6. Fixes a bug in `verdi node delete`, introduced by #4575, if a node does not exist

* 🧪 FIX: engine benchmark tests (#4652)

The `test_workchain_daemon` test group required updating to using asyncio (rather than tornado)

* Docs: Minor documentation fixes (#4643)

Small changes and fixes in the documentation.

* Docs: clarify docstrings of `get_last_job_info` and `get_detailed_job_info` (#4657)

`CalcJobNode`s contain two differente job infos, the `detailed_job_info` and
the `last_job_info`. The distinction between the two was not obvious,
and not documented. The docstrings are improved to clarify the difference.

* docs: simplify proxycommand (#4662)

The 'netcat mode' `-W` was added in OpenSSH 5.4, released March 2010.
Given that this simplifies the setup and and delegates handling of netcat
to ssh, this is what we should recommend.

For example, MacOS ships with OpenSSH 5.6 since MacOS 10.7, released October 2010.

* Docs: Add redirect for database backup page (#4675)

* Type checking: `aiida/engine` (+bug fixes) (#4669)

Added type checking for the modules

* `aiida.engine`
* `aiida.manage.manager`

Move `aiida.orm` imports to top of file in `aiida.engine` module. This should be
fine as `aiida.orm` should not import anything from `aiida.engine` and this way
we don't need import guards specifically for type checking.

* Fix `run_get_node`/`run_get_pk` namedtuples (#4677)

Fix a regression made in #4669, whereby the namedtuple's were incorrectly named

* REST API fixes

- Use node_type in construct_full_type().
- Don't use try/except for determining full_type.
- Remove unnecessary try/except in App for catch_internal_server.
- Use proper API_CONFIG for configure_api.

* New /querybuilder-endpoint with POST for REST API

The POST endpoint returns what the QueryBuilder would return, when
providing it with a proper queryhelp dictionary.
Furthermore, it returns the entities/results in the "standard" REST API
format - with the exception of `link_type` and `link_label` keys for
links. However, these particular keys are still present as `type` and
`label`, respectively.

The special Node property `full_type` will be removed from any entity,
if its value is `None`. There are two cases where this will be True:
- If the entity is not a `Node`; and
- If neither `node_type` or `process_type` are among the projected
properties for any given `Node`.

Concerning security:
The /querybuilder-endpoint can be toggled on/off with the configuration
parameter `CLI_DEFAULTS['POSTING']`.
Added this to `verdi restapi` as `--posting/--no-posting` option.
The option is hidden by default, as the naming may be changed in the
future.

Reviewed by @ltalirz.

* Use importlib in .ci folder

* Fix: pre-store hash for -0. and 0. is now the same

* ci: update paramiko version (#4686)

Now that the Github Action runners switched to Ubuntu 20.04, the default SSH
key format of OpenSSH changed and is no longer supported by paramiko
<=2.7.1.

* Fix: release signal handlers after run execution (#4682)

After a process has executed (when running rather than submitting),
return the signal handlers to their original state.

This fixes an issue whereby using `CTRL-C` after a process has run still calls the `process.kill`.
It also releases the `kill_process` function's reference to the process,
a step towards allowing the finished process to be garbage collected.

* Fix: `PluginVersionProvider` should cache process class (#4683)

Currently, the `PluginVersionProvider` is caching process instance, rather than class.
This commit fixes the bug, meaning the cache will now work correctly.
Removing the reference to the process instance also is a step towards allowing it to be garbage collected.

* remove leftover use of Computer.name (#4681)

Remove leftover use of deprecated Computer.name attribute in `verdi
computer list`.

Also update minimum version of click dependency to 7.1, since click 7.1
introduces additional whitespace in the verdi autodocs (running with 
click 7.0 locally resulted in pre-commit check failing on CI).

Co-authored-by: Chris Sewell <chrisj_sewell@hotmail.com>

* Add `to_aiida_type` to the public API (#4672)

Since `to_aiida_type` is intended for public use,
this commit makes it part of the public API,
via `from aiida.orm import to_aiida_type`.

* Add .dockerignore (#4564)

This commit adds a `.dockerignore` file to inhibit any unecessary/unwanted files being copied into the Docker container,
during the `COPY . aiida-core` command,
and also reduces the build time.

* CI: Remove `--use-feature=2020-resolver` pip feature flag tests. (#4689)

The feature is now on by default in the latest stable release.

* CI: Notify slack on failure of the test-install workflow. (#4690)

* Improve namedtuples in aiida/engine (#4688)

This commit replaces old-style namedtuples with `typing.NamedTuple` sub-classes.
This allows for typing of fields and better default value assignment.

Note this feature requires python>=3.6.1,
but it is anyhow intended that python 3.6 be dropped for the next release.

* test AiiDA ipython magics and remove copy-paste in docs (#4548)

Adds tests for the AiiDA IPython extension.

Also:
 * move some additional lines from the registration snippet to
  aiida-core (where we can adapt it if the IPython API ever changes)
 * rename and deprecate misnomer `load_ipython_extension` to
   `register_ipython_extension` (to be removed in aiida 3)
 * include the snippet to register the AiiDA ipython magics from the
   aiida-core codebase instead of the (already outdated) copy-pasted
  version.
 * revisit the corresponding section of the documentation, starting
  with the setup, and removing some generic information about jupyter.

* 🐛 FIX: typing failure (#4700)

As of numpy v1.20, `numpy.inf` is no longer recognised as an integer type

* 📚 DOCS: fix typo (#4711)

* BUILD: drop support for python 3.6 (#4701)

Following our support table, we drop python 3.6 support.

* BUILD: bump jenkins dockerimage to 20.04 (#4714)

Despite python3.7 being installed on the Jenkins dockerimage, pip
install failed after dropping python 3.6 support (likely because pip
from python 3.6 was being used).

We update ubuntu to 20.04, which comes with python 3.8.2 by default.

* Switch matrix order in continuous-integration tests job. (#4713)

To harmonize with test-install workflow.

* ♻️ REFACTOR: verdi export/import -> verdi archive (#4710)

This commit deprecates `verdi export` and `verdi import` and combines them into `verdi archive`.

* Dependencies: Require `ipython~=7.20` (#4715)

* Dependencies: Require `ipython~=7.20`

Package jedi version 0.18 introduces backwards incompatible changes that
break compatibility with ipython<7.20.

Fixes issue #4668.

* Automated update of requirements/ files. (#4716)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* ♻️ REFACTOR: `ci/` folder (#4565)

This commit looks to address two issues:

1. The `ci/` folder has become cluttered; 
   it contains configuration and scripts for both the GitHub Actions and Jenkins CI
   and it is not easily clear which is for which.
2. The Jenkins tests are somewhat of a black-box to most,
   since it is certainly not trivial to set up and run them locally.
   This has lead to them essentially not being touched since they were first written.

The changes are as follows:

1. Moved the GH actions specific scripts to `.github/system_tests`
2. Refactored the Jenkins setup/tests to use [molecule](https://molecule.readthedocs.io) in the `.molecule/` folder 
   (note we use molecule for testing all the quantum mobile code).
   You can read about this setup in `.molecule/README.md`,
   but essentially if you just run `tox -e molecule-django` locally it will create/launch a docker container, 
  setup and run the tests within that container, then destroy the container.
  Locally, it additionally records and prints an analysis of queries made to the database during the workchain runs.
3. Moved the Jenkins configuration to `.jenkins/`, which is now mainly a thin wrapper around (2).

This makes these tests more portable and easier to understand, modify or add to.

* 🔧 MAINTAIN: drop setuptools upper pinning (#4725)

* CI: Improve polish workchain failure debugging (#4729)

* fix: don't pass process stack via context (#4699)

This PR fixes a memory leak: when running `CalcJob`s over an SSH connection,
the first CalcJob that was run remained in memory indefinitely.

`plumpy` uses the `contextvars` module to provide a reference to the
`current_process` anywhere in a task launched by a process.  When using any of
`asyncio`'s `call_soon`, `call_later` or `call_at` methods, each individual
function execution gets their own copy of this context.  This means that as
long as a handle to these scheduled executions remains in memory, the copy of
the `'process stack'` context var (and thus the process itself) remain in
memory,

In this particular case, a handle to such a task (`do_open` a `transport`)
remained in memory and caused the whole process to remain in memory as well via
the 'process stack' context variable.  This is fixed by explicitly passing an
empty context to the execution of `do_open` (which anyhow does not need access
to the `current_process`).  An explicit test is added to make sure that no
references to processes are leaked after running process via the interpreter
as well as in the daemon tests.

This PR adds the empty context in two other invocations of `call_later`, but
there are more places in the code where these methods are used. As such it is a
bit of a workaround.  Eventually, this problem should likely be addressed by
converting any functions that use `call_soon`, `call_later` or `call_at` and
all their parents in the call stack to coroutines.

Co-authored-by: Chris Sewell <chrisj_sewell@hotmail.com>

* CI: Add retry for polish workchains (#4733)

To mitigate failures on Jenkins

* 🐛 FIX: Standardise transport task interrupt handling (#4692)

For all transport tasks (upload, submit, update, retrieve),
both `plumpy.futures.CancelledError` and `plumpy.process_states.Interruption` exceptions
should be ignored by the exponential backoff mechanism (i.e. the task should not be retried)
and raised directly (as opposed to as a `TransportTaskException`),
so that they can be correctly caught by the `Waiting.execute` method.

As an example, this fixes a known bug, whereby the upload task could not be
cancelled via `CTRL-C` in an ipython shell.

* Update use of various deprecated APIs (#4719)

This replaces the use of various deprecated APIs pointed out by warnings
thrown during runs of the test suite.
It also introduces one new feature and a bug fix.

Features:

 * Add non-zero exit code for failure to most `verdi daemon` commands, 
    so tests will catch possible errors.

Bug fixes:

* A couple of files were opened but not closed

Updates of deprecated APIs:

* np.int is deprecated alias of int

* np.float is deprecated alias of float

* put_object_from_filelike: force is deprecated

* archive import/export:  `silent` keyword is deprecated in favor of logger

* computer name => label

* Fix tests writing to the repository of nodes after they had been stored
  by replacing all times we use `.open` with `'w'` or `'wb'` mode
  with a correct call to `put_object_from_filelike` *before* the node is stored.

In one case, the data comes from a small archive file. In this case,
I recreated the (zipped) .aiida file adding two additional (binary) files
obtained by gzipping a short string.
This was used to ensure that `inputcat` and `outputcat` work also
when binary data was requested. Actually, this is better than before,
where the actual input or output of the calculation were overwritten
and then replaced back.

* communicator: replace deprecated stop() by close()

* silence some deprecation warnings in tests of APIs that will be removed in 2.0

Note that while unmuting the `ResourceWarning` was good to spot
some issues (bug fix above), the warning is raised in a couple more 
places where it's less obvious to fix (typically related to the daemon
starting some process in the background - or being started itself -
and not being stopped before the test actually finished).
I think this is an acceptable compromise - maybe we'll figure out
how to selectively silence those, and keeping warnings visible will
help us figure out possible leaks in the future.

Co-authored-by: Giovanni Pizzi <giovanni.pizzi@epfl.ch>

* ✨ NEW: Add `verdi database summary` (#4737)

Prints a summary of the count of each entity and,
with `-v` flag, additional summary of the unique identifiers for some entities.

* Upgrading dependency of sqlalchemy-utils (#4724)

* Upgrading dependency of sqlalchemy-utils

In sqlalchemy-utils 0.35, imports from collections where correctly
fixed to import from collections.abc (where this is needed).
This removes a few deprecation warnings (claiming that this will not
work in py 3.9, even if in reality this will stop working in py 3.10).
This partially addresses #4723.

We are actually pinning to >=0.36 since in 0.36 a feature was dropped
that we were planning to use (see #3845). In this way, we avoid relying
on a feature that is removed in later versions (risking to implement
something that then we have to remove, or even worse remain "pinned"
to an old version of sqlalchemy-utils because nobody has the time
to fix it with a different implementation [which is tricky, requires
some knowledge of how SqlAlchemy and PosgreSQL work]).

* Automated update of requirements/ files. (#4734)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Carl Simon Adorf <simon.adorf@epfl.ch>

* Bump aiida-prerequisites base image to 0.3.0 (#4738)

Changes in the new image:
- Updated conda (4.9.2)
- Start ssh-agent at user's startup

Co-authored-by: Chris Sewell <chrisj_sewell@hotmail.com>

* Add CalcJob test over SSH (#4732)

Adds a configuration for a remote computer (slurm docker container) and uses it
to run a CalcJob test over SSH.

This is a follow-up on the memory leak tests, since the leak of the process
instance was discovered to occur only when running CalcJobs on a remote
computer via an SSH connection.

Co-authored-by: Chris Sewell <chrisj_sewell@hotmail.com>

* 🧪 TESTS: Add pytest `requires_rmq` marker (#4739)

* Work on `verdi group remove-nodes` command (#4728).

* `verdi group remove-nodes`: Add warning when nodes are not in the group

Currently, the `verdi group remove-nodes` command does not raise any
warning when the nodes that the user wants to remove are not in the
group. It also says it removed the number of requested nodes from the
group, even when none of them is in the group specified.

Here we:

* Have the command fail with a `Critical` message when none of the
requested nodes are in the group.
* Raise a warning when any of the nodes requested are not in the
specified group, and list the PK's of the nodes that are missing.

Note that the Group.remove_nodes() command still does not raise any
warning when the requested nodes are not in the group.

* Fix bug and improve API

Fixes a bug when the user actually doesn't provide any nodes. In case
the `--clear` flag is also not provided, the command will fail since
there is nothing to remove. In case it is provided, the command will ask
for confirmation to remove all nodes unless the force flag is also set.

* Fail if both the `--clear` flag and nodes are provided

In the current API, it doesn't make sense to provide *both* the
`--clear` flag and a list of node identifiers. Here we check if both are
provided and abort the command in this case.

* Add tests.

* CI: Increase output verbosity of tests suite. (#4740)

* Skip test 'TestVerdiProcessDaemon::test_pause_play_kill'. (#4747)

The test randomly fails to complete within a reasonable amount of time
leading to a significant disruption of our CI pipeline.

Investigated in issue #4731.

* 🧪 TESTS: Fix pre-commit (pin astroid) (#4757)

Temporary fix for https://github.com/PyCQA/astroid/issues/895

* 🧪 TESTS: Fix plumpy incompatibility (#4751)

As of https://github.com/aiidateam/plumpy/commit/7004bd96bbaa678b5486a62677e139216877deef,
a paused workchain will hang if it is closed then played.
This test violated that rule and also was faulty,
in that it should test that the reloaded workchain can be played,
not the original workchain.

* 🔧 MAINTAIN: Reduce test warnings (#4742)

This commit reduces the number of pytest warnings of the test suite,
from 719 to 122:

- Replace `collections` with `collections.abc`
- pytest-asyncio does not work with `unittest.TestCase` derived tests (https://github.com/pytest-dev/pytest-asyncio/issues/77).
- `ProcessFuture` already closed via polling should not set a result via a broadcast event.
- Upgrade kiwipy and plumpy to fix:
  - https://github.com/aiidateam/kiwipy/pull/98
  - https://github.com/aiidateam/plumpy/pull/204
  - https://github.com/aiidateam/plumpy/pull/206

* 📚 DOCS: Add `BaseRestartWorkchain` how-to (#4709)

This section is adapted from:
https://github.com/aiidateam/aiida-tutorials/blob/master/docs/pages/2020_Intro_Week/sections/workflows_adv.rst

* CI: Bump reentry to v1.3.2 (#4746)

* 🐛 FIX: Node comments API (#4760)

* Fix hanging direct scheduler+ssh (#4735)

* Fix hanging direct scheduler+ssh

The fix is very simple: in the ssh transport, to emulate 'chdir',
we keep the current directory in memory, and we prepend every command
with a `cd FOLDER_NAME && ACTUALCOMMAND`.

One could put `;` instead of `&&`, but then if the folder does not
exist the ACTUALCOMMAND would still be run in the wrong folder, which is
very bad (imagine you are removing files...).

Now, in general this is not a problem. However, the direct scheduler
inserts a complex-syntax bash command to run the command in the background
and immediately get the PID of that process without waiting.
When combined with SSH, this hangs until the whole process is completed, unless
the actual command is wrapped in brackets.

A simple way to check this is running these two commands, that reproduce
the issue with plain ssh, without paramiko:

This hangs for 5 seconds:
```
ssh localhost 'cd tmp && sleep 5 > /dev/null 2>&1 & echo $!'
```

This returns immediately, as we want:
```
ssh localhost 'cd tmp && ( sleep 5 > /dev/null 2>&1 & echo $! )'
```

Also, adding a regression test for the hanging direct+ssh combination
This test checks that submitting a long job over the direct scheduler
does not "hang" with any plugin.

Co-authored-by: Leopold Talirz <leopold.talirz@gmail.com>

* ♻️ REFACTOR: configuration management API and CLI (#4712)

This commit primarily refactors the `verdi config` command
and merges the `cache_config.yml` into the `config.json`.

`config.json` changes:
- A jsonschema is added to validate the `config.json`,
  and also provide the options/defaults previously in `aiida/manage/configuration/options.py`.
- Rename option keys (with migration),
  for consistency with the internal representation
  (also rename `user.` fields to `autofill.user.`)
- Allow the `config.json` to contain a `$schema` key,
  that is preserved when storing new data
- Deprecated `cache_config.yml`: auto-merged into `config.json`,
  with deprecation warning, then renamed
- An `rmq.task_timeout` option has also been added
  (with default increased from 5 to 10 seconds),
  to fix timeout errors at high process loads.

`verdi config` changes:
- Refactor `verdi config` into separate commands: list/get/set/show/unset
- Include deprecation for current `verdi config <KEY>`
- `verdi caching` lists all process entry points that are enabled/disabled for caching

Also, code in `aiida/manage/caching.py` now utilises
the `get_config_option` function to retrieve caching configuration.

* 🧪 TESTS: add  `config_with_profile` fixture (#4764)

This allows for the removal of
`temporary_config_instance` and `with_temporary_config_instance`
from `tests/utils/configuration.py`

* 👌 IMPROVE: `verdi config list/show` (#4762)

Ensure these commands still work before a profile has been configured.

* 👌 IMPROVE: Add config `logging.aiopika_loglevel` (#4768)

* 📚 DOCS: Add process submit diagram (#4766)

* 📚 DOCS: Add process submit diagram

* Create submit_sysml.pptx

* 👌 IMPROVE: CTRL-C on running process (#4771)

Do not call `kill` on a process that is already being killed.
Also log a different message,
so that the user can see that the original CTRL-C was actioned.

* 🐛 FIX: kill_calculation before job submitted (#4770)

`job_id` will not yet have been set,
so we should not ask the scheduler to kill it.

* 🐛 FIX: `ModificationNotAllowed` on workchain kill (#4773)

In `Process.kill` the parent is killed first, then the children.
However, for workchains when entering the `Wait` state, awaitables (e.g. children)
are each assigned to `WorkChain.on_process_finished` as a callback on termination.
When the child is killed, this callback then calls `resolve_awaitable`,
which tries to update the status of the parent.
The parent is already terminated though and the node sealed -> `ModificationNotAllowed`.

In this commit we therefore check if the parent is already in a terminal state,
before attempting to update its status.

* 👌 IMPROVE: capture of node hashing errors (#4778)

Currently all exceptions are caught and ignored.
This commit adds a specific `HashingError` exception,
for known failure modes.
Only this exception is caught, if `ignore_errors=True`,
and the exception logged.

Also an `aiida_caplog` pytest fixture is added,
to enable logs from `AiiDA_LOGGER` to be captured.

* ⬆️ UPDATE: kiwipy/plumpy (#4776)

Update to new patch versions:

kiwipy v0.7.3:

- 👌 IMPROVE: Add debug logging for sending task/rpc/broadcast to RMQ.
- 👌 IMPROVE: Close created asyncio loop on RmqThreadCommunicator.close

plumpy v0.18.6:

- 👌 IMPROVE: Catch state change broadcast timeout

When using an RMQ communicator, the broadcast can timeout on heavy loads to RMQ.
This broadcast is not critical to the running of the process,
and so a timeout should not except it.
In aiida-core, the broadcast is subscribed to by `verdi process watch` (not critical),
in `aiida/engine/processes/futures.py:ProcessFuture` (unused),
and in `aiida/engine/runners.py:Runner.call_on_process_finish`
which has a backup polling mechanism on the node.

Also ensure the process PID is included in all log messages.

* Add fallback equality relationship based on uuid (#4753)

Add fallback equality relationship based on node uuid .

* Simplify AiidaTestCase implementation (#4779)

This simplifies the `AiidaTestCase` implementation - not yet replacing it with pytest fixtures, 
but hopefully getting one step closer to doing so eventually.

In particular
 * only truly backend-specific code is left in the backend-specific test classes
 * introduces `refurbish_db()` which includes the combination of cleaning the db and repopulating it with a user (which is a common combination)
 *  move creation of default computer from `setUpClass` to "on demand" (not needed by many tests)
 * merges `reset_database` and `clean_db` function that basically did the same
 * factors out the `get_default_user` function so that it can be reused outside the AiidaTestCase (`verdi setup`, pytest fixtures, ...) in a follow-up PR
 * add `orm.Computer.objects.get_or_create` (in analogy to similar methods for user, group, ...)

Note: While this change gets rid of unnecessary complexity, it does *not* switch to a mode where the database is cleaned between *every* test.
While some subclasses of `AiidaTestCase` do this, the `AiidaTestCase` itself only cleans the database in `setupClass`.
Some subclasses do significant test setup at the class level, which might slow things down if they had to be done for every test.

* 👌 IMPROVE: add broker_parameters to config schema (#4785)

* 👌 IMPROVE: Add 'exception' to projection mapping (#4786)

This commit adds `exception` to the list of allowed projections,
and also standardises the way the exception is set on the node
(capturing both the type and message).

* docs: reorder/simplify caching howto (#4787)

The howto on enabling caching has been reordered to move the concepts to
the beginning and technical details to where they fit better.

The figure has been simplified (complexity introduced by second input
node unnecessary).

Added explicit mention of the fact that hashing is enabled by default
(which may not be obvious).

Co-authored-by: Chris Sewell <chrisj_sewell@hotmail.com>

* docs: reference caching howto in workflow section (#4789)

It might be helpful to people learning about AiiDA workflows to know that caching exists and point them in that direction.

Co-authored-by: Leopold Talirz <leopold.talirz@gmail.com>

* setup: move away from legacy build backend (#4790)

The `pyproject.toml` was originally added in ca75832afb002b344b5854f2f049c74e80cad36b 
without specifying a backend, which implicitly defaults to the legacy `setuptools.build_meta:__legacy__` one. 
This choice was made explicit in a2bebb422f4a7b75e8ef65fd797f128abf12c6cc 

This can lead to issues when using a *system* version of setuptools
< 40.8.0, see [1].
We believe there is no good reason for sticking with the legacy build system.

I've tested that the `reentry_register` hook still works with the new
build backend.

[1] https://github.com/pypa/setuptools/issues/1694#issuecomment-466010982

* fix pymatgen imports (#4794)

pymatgen made a breaking change in v2021.3.4 that removed many classes
from the top level of the package.
The alternative imports were already available in previous versions,
i.e. we don't need to upgrade the pymatgen dependency.

* 🐛 FIX: `get_pymatgen_version` (#4796)

In version 2022.0.3 it was moved

* 👌 IMPROVE: add type checking for aiida/orm/nodes/process (#4772)

This commit adds type definitions to all code in `aiida/orm/nodes/process`,
and enables mypy type checking of the files.

Additionally, to fix mypy failures, two changes to the code were made:

1. Change `CalcJobNode.get_description` to return a string
2. In `aiida/engine/processes/calcjobs/tasks.py`,
   change `node.computer.get_authinfo(node.user)` to `node.get_authinfo()`,
   to use `CalcJobNode.get_authinfo` which checks if the computer is set.

* 🐛 FIX: `WorkChain.resolve_awaitable` (#4795)

An alteration to a recent fix (#4773);
`Process.has_terminated` is a method, not a property.

* 🐛 FIX: `Task.cancel` should not set state as EXCEPTED (#4792)

Currently, stopping the daemon in python 3.7 excepts all processes.
This is due to the code in `shutdown_runner`,
which cancels all asyncio tasks running on the loop,
including process continue and transport tasks.

Cancelling a task raises an `asyncio.CancellErrror`.
In python 3.8+ this exception only inherits from `BaseException`,
and so is not caught by any `except Exception` "checkpoints" in plumpy/aiida-core.
In python <= 3.7 however, the exception is equal to `concurrent.futures.CancelledError`,
and so it was caught by one of:
`Process.step`, `Running.execute` or `ProcessLauncher.handle_continue_exception`
and the process was set to an excepted state.

Ideally in the long-term, we will alter `shutdown_runner`,
to not use such a "brute-force" mechanism.
But in the short-term term this commit directly fixes the issue,
by re-raising the `asyncio.CancelledError` exception.

* Docs: fix the citation links on the index page (#4800)

The links were still using markdown syntax instead of restructured text.

* `CalcJob`: add the option to stash files after job completion (#4424)

A new namespace `stash` is added to the `metadata.options` input
namespace of the `CalcJob` process. This option namespace allows a user
to specify certain files that are created by the calculation job to be
stashed somewhere on the remote. This can be useful if those files need
to be stored for a longer time than the scratch space where the job was
run is typically not cleaned for, but need to be kept on the remote
machine and not retrieved. Examples are files that are necessary to
restart a calculation but are too big to be retrieved and stored
permanently in the local file repository.

The files that are to be stashed are specified through their relative
filepaths within the working directory in the `stash.source_list`
option. For now, the only supported option is to have AiiDA's engine
copy the files to another location on the same filesystem as the working
directory of the calculation job. The base path is defined through the
`stash.target_base` option. In the future, other methods may be
implemented, such as placing all files in a (compressed) tarball or even
stash files on tape. Which mode is to be used is communicated through
the enum `aiida.common.datastructures.StashMode` which for now therefore
only has the `COPY` value.

If the `stash` option namespace is defined for a calculation job, the
daemon will perform the stashing operations before the files are
retrieved. This also means that the stashing also happens before the
parsing of the output files (which occurs after the retrieving step)
which means that the files will be stashed independent of the final
exit status that the parser will assign to the calculation job. This
may cause files to be stashed of calculations that will later be
considered to have failed. However, the stashed files can always be
deleted manually by the user afterwards if needed.

Finally, the stashed files are represented by an output node that is
attached to the calculation node through the label `remote_stash`. Just
like the `remote_folder` node, this represents a location or files on a
remote machine and so is merely a "symbolic link" of sorts. AiiDA does
not actually own the files and the contents may disappear at some point.
To be able to distinguish the stashed folder from the remote folder, a
new data plugin is used, the `RemoteStashFolderData`. The base class is
`RemoteStashData` which is not instantiable, but will merely serve as a
base class for future subclasses, one for each `StashMode` value. The
reason is that the way files need to be accessed depend on the way they
were stashed and so it is good to have separate classes for this.

It was considered to give `RemoteFolderData` and `RemoteData` the same
base class (changing the type of the `remote_folder` to a new subclass
`RemoteFolderData`) but this would introduce breaking changes and so this
was relegated to a potential future major release.

* `verdi process play`: only query for active processes with `--all` flag (#4671)

The query used to target all process nodes with the `paused` attribute, so even
those in a terminal state. Here an additional filter is added to only query for nodes
in an active process state, because terminal nodes should not be affected. This
should speed up the query in principle.

* Dependencies: update pymatgen version specification (#4805)

Addresses #4797

* Dependencies: Pin sqlalchemy to minor release (#4809)

Version 1.4 currently breaks `verdi setup` and indeed,
according to https://www.sqlalchemy.org/download.html,
minor releases of SqlAlchemy may have breaking changes.

* 📚 DOCS: Add documentation on stashing (#4812)

Some additional minor changes

* Add link for `TransferCalcjob` feedback
* Add `versionadded` to `TransferCalcjob` docs

* 🔧 MAINTAIN: Add PyPI release workflow (#4807)

This is workflow is intended to reduce the potential for manual errors and faulty releases.

When you create the release, and hence git tag, this workflow is triggered;
checks the tag created matches the aiida package version,
runs pre-commit and (some) pytests and, if they all pass, deploys to PyPI.

* 🚀 RELEASE: v1.6.0 (#4816)

Co-authored-by: ramirezfranciscof <ramirezfranciscof@users.noreply.github.com>

Co-authored-by: Sebastiaan Huber <mail@sphuber.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dominik Gresch <greschd@users.noreply.github.com>
Co-authored-by: flavianojs <flavianojs@live.com>
Co-authored-by: Marnik Bercx <mbercx@gmail.com>
Co-authored-by: Jason Eu <morty.yu@yahoo.com>
Co-authored-by: ramirezfranciscof <ramirezfranciscof@users.noreply.github.com>
Co-authored-by: Pranjal Mishra <39010495+pranjalmish1@users.noreply.github.com>
Co-authored-by: Leopold Talirz <leopold.talirz@gmail.com>
Co-authored-by: Casper Welzel Andersen <casper.andersen@epfl.ch>
Co-authored-by: Carl Simon Adorf <carl.simon.adorf@gmail.com>
Co-authored-by: Carl Simon Adorf <simon.adorf@epfl.ch>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Giovanni Pizzi <giovanni.pizzi@epfl.ch>
Co-authored-by: Aliaksandr Yakutovich <yakutovicha@gmail.com>
Co-authored-by: DanielMarchand <Daniel.marchand@gmail.com>
jwodder pushed a commit to dandi/dandi-schema that referenced this issue May 20, 2021
pdxjohnny added a commit to pdxjohnny/dffml that referenced this issue Dec 8, 2021
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
pdxjohnny added a commit to pdxjohnny/dffml that referenced this issue Dec 8, 2021
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
pdxjohnny added a commit to pdxjohnny/dffml that referenced this issue Mar 11, 2022
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
mlissner added a commit to freelawproject/judge-pics that referenced this issue Apr 22, 2022
This should help shrink our repository down, since it won't
contain a gazillion tweaked and altered files. Full git log
is below up to this point.

-----------

commit d05df139e4434d0bb90e97599bb06015c05b0893 (HEAD -> main, origin/main, origin/HEAD)
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 23:20:06 2022 -0700

    feat(docs): Explain how to use URLs

commit 50dbab890e3ed466bd3b36a0938cdb9772050242 (tag: v2.0.3)
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 23:14:56 2022 -0700

    feat(pypi): Add long desc

commit 95cdeab87e5ec1591ed32123858c3da92979ec7c
Merge: 2612ffc 16e4c2d
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 17:57:57 2022 -0700

    Merge remote-tracking branch 'origin/main'

    # Conflicts:
    #       README.md

commit 2612ffca401ac1569d0b6c6a060dcb56f95dc70d
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 17:55:12 2022 -0700

    feat(docs): Update readme

commit 16e4c2db03cb056923e2fa0d450b801b34046644
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 17:55:12 2022 -0700

    feat(docs): Update readme

commit c4a1d1272bc12d3ef1444b330e436b27b720b32d
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 17:54:59 2022 -0700

    fix(cruft): Delete old files

commit b8d96d50db0e2c745891259d5df1ae97cd6fcadb (tag: v2.0.2)
02:53:15::mlissner@gabbro::~/Programming/archive/Judge Pics Git Backup (View
↪ git log | cat
commit d05df139e4434d0bb90e97599bb06015c05b0893
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 23:20:06 2022 -0700

    feat(docs): Explain how to use URLs

commit 50dbab890e3ed466bd3b36a0938cdb9772050242
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 23:14:56 2022 -0700

    feat(pypi): Add long desc

commit 95cdeab87e5ec1591ed32123858c3da92979ec7c
Merge: 2612ffc 16e4c2d
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 17:57:57 2022 -0700

    Merge remote-tracking branch 'origin/main'

    # Conflicts:
    #       README.md

commit 2612ffca401ac1569d0b6c6a060dcb56f95dc70d
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 17:55:12 2022 -0700

    feat(docs): Update readme

commit 16e4c2db03cb056923e2fa0d450b801b34046644
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 17:55:12 2022 -0700

    feat(docs): Update readme

commit c4a1d1272bc12d3ef1444b330e436b27b720b32d
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Apr 21 17:54:59 2022 -0700

    fix(cruft): Delete old files

commit b8d96d50db0e2c745891259d5df1ae97cd6fcadb
Author: William Palin <bill@free.law>
Date:   Mon Apr 18 16:57:53 2022 -0400

    Version bump v2.0.2

commit 2491d57d75f735c4ff5081eba650562d3d813380
Author: William Palin <bill@free.law>
Date:   Mon Apr 18 16:52:21 2022 -0400

    feat(search): Add search by judge name

commit 43187483961a544c87d987bdc4976ec9db7be2b0
Author: William Palin <bill@free.law>
Date:   Tue Apr 12 20:27:12 2022 -0400

    fix(workflow): Unwind wrong commit

commit b0977447a96d11e8e3dda32ada3a4136ccde8635
Author: William Palin <bill@free.law>
Date:   Tue Apr 12 20:26:31 2022 -0400

    test(workflow): Debug workflow

commit f69e6d2a9a1adc643ed4fb061f8d2bb939064059
Author: William Palin <bill@free.law>
Date:   Sun Apr 10 13:28:02 2022 -0400

    fix(search): Fix portrait method

commit 16ad9d815b7e329dd6ff87cf986d4acba605816f
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Fri Apr 8 14:52:42 2022 -0700

    feat(v): Release new version

commit 8aae70901fc54fe1204ba7b2e3fa958cd3dd2bef
Merge: 1b8e7f2 9284eb9
Author: Mike Lissner <mlissner@michaeljaylissner.com>
Date:   Fri Apr 8 14:50:37 2022 -0700

    Merge pull request #16 from freelawproject/judge-pics-ii

    Judge Pics refactor

commit 9284eb955f2f5d5ef53d95e31321c156e3e5a16e
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Fri Apr 8 14:48:33 2022 -0700

    refactor(update): Split function and clean up strings

commit af8a78faaba305c6993527ca946dcaa14075a0fa
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Fri Apr 8 14:48:02 2022 -0700

    fix(typing): Convert to enum

    I read the PEP for Literal. It can't handle anything complicated at all except Enums.

commit 85ccf1bb7e1aa96904f0f9ab4438a7c72fe82cb4
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 16:30:31 2022 -0400

    fix(setup.py): Drop photos from pypi release

commit 177ec6c9c4c7756170aeb8dbf386073b57c0894a
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 16:25:30 2022 -0400

    feat(upload): Add pypi release to upload project

commit 15d9b10ef7bbacc69a8ba61a45aa1cfd3f1f68b4
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 16:24:23 2022 -0400

    feat(upload): Add pypi release to upload project

commit e1965894a05dadea57c9efb38d8ef6ad11a3baf3
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 15:39:10 2022 -0400

    chore(project): Black

commit 7ea39a958ab55880b3441c010f61f8f7798dcd9f
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 15:36:53 2022 -0400

    chore(project): Black

commit 3e159c30728045ee3680314f630f7b5fa1c9b2dc
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 15:35:47 2022 -0400

    feat(project): Update and revamp project

    Drop different sizes and just store original
    Upload remainder to portraits repository

commit c744b9f9a6ca7c78d1cae74830dd1975d0bb9bcf
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 12:09:52 2022 -0400

    feat(tests): Add new test and bump python versions

commit 2400fe4674c0a9704cb422dfda2393f6e74daecb
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 12:09:18 2022 -0400

    feat(req): Update req

commit ad35d20bc784e672291a2086e6328c5a52f6f1e3
Author: William Palin <bill@free.law>
Date:   Fri Apr 8 12:09:05 2022 -0400

    feat(data): Drop non original sizes

commit 1b8e7f20619e486822aecdda04ee2aa84d5501ef
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Mon Aug 23 17:05:03 2021 -0700

    feat(docs): Update readme with docker notes

commit c4ed17a1128961e924cbe8e3ed88af50d18ab0d2
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Aug 19 17:53:05 2021 -0700

    Version bump

commit 5252ee8fee7ccc6e873e35e915d3b704137d6b19
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu Aug 19 17:49:22 2021 -0700

    fix(photo): Update name of file to fix sentry bug

commit 695cf96bf9718046bec2a219265cfcaafc1b8379
Author: vvilliam <wpalin@gmail.com>
Date:   Fri Oct 16 16:30:30 2020 -0400

    fix(dockerfile): Update dockerfile to slim versions

commit eec437894a1fc8d9b311de2a94005a9a832adf43
Author: vvilliam <wpalin@gmail.com>
Date:   Fri Oct 16 16:20:41 2020 -0400

    fix(dockerfile): Update dockerfile to slim versions

commit dbb478b0bbe28e70fad26a0dc7c098ef1e3ad729
Merge: 3e67e26 c630e89
Author: vvilliam <wpalin@gmail.com>
Date:   Fri Oct 16 14:30:50 2020 -0400

    Merge branch 'master' of https://github.com/freelawproject/judge-pics

commit 3e67e26e323ab053f32713003788444b1be52c3a
Author: vvilliam <wpalin@gmail.com>
Date:   Fri Oct 16 14:30:23 2020 -0400

    Version bump to 1.2.0

commit f734125533c09071c9afd58de9923bff5d6dfc70
Author: vvilliam <wpalin@gmail.com>
Date:   Fri Oct 16 14:30:09 2020 -0400

    feat(dockerfile): Upgrade docker image to py3.8

commit c630e89eadb6b18df42a111eab1443af43374887
Merge: 3bc2ff7 f7f1f7f
Author: Mike Lissner <mike@free.law>
Date:   Wed Oct 7 14:02:41 2020 -0700

    Merge pull request #13 from drewsilcock/feature/use-official-black-github-action

    Feature: Use official Black GitHub Action to check formatting.

commit f7f1f7fb23eca413479d209d2b134e509ef5db14
Author: Drew Silcock <drew.silcock@stfc.ac.uk>
Date:   Wed Oct 7 22:00:00 2020 +0100

    feat(CI): Use official Black GitHub Action to check formatting.

commit 3bc2ff7b0953e2d21735ca5c3f1f96fe2a0e5faa
Author: vvilliam <wpalin@gmail.com>
Date:   Thu Sep 17 14:01:43 2020 -0400

    feat(post_push): Update post_push

commit 2366d7ac77c6fbae16923665d4c98faa4eea5662
Author: vvilliam <wpalin@gmail.com>
Date:   Thu Sep 17 13:45:50 2020 -0400

    refactor(vesion.txt): Add version.txt for cleaner versioning

commit a5ab4cc4ababfb3f7e8cc2b531161aeb0a381d2d
Author: William Palin <flooie@users.noreply.github.com>
Date:   Wed Sep 9 16:01:14 2020 -0400

    feat(post_push): Init post_push

    Add hook for docker hub

commit 621d7e434c4b1738cf5cbc86e72fc542a5ce6866
Author: William Palin <flooie@users.noreply.github.com>
Date:   Wed Sep 9 16:00:03 2020 -0400

    feat(Dockerfile): Init Dockerfile

commit 319687f7dd0025010ca41a5dbf914f241c6b7fc7
Merge: b112364 5647155
Author: Mike Lissner <mike@free.law>
Date:   Thu Aug 27 13:33:30 2020 -0700

    Merge pull request #12 from freelawproject/imgbot

    [ImgBot] Optimize images

commit 564715550e9885b62d4ae8e9a0ac9497eba8858f
Author: ImgBotApp <ImgBotHelp@gmail.com>
Date:   Thu Aug 27 20:12:49 2020 +0000

    [ImgBot] Optimize images

    *Total -- 92,296.38kb -> 84,369.10kb (8.59%)

    /judge_pics/data/orig/durham-robert.jpeg -- 5,052.66kb -> 4,498.76kb (10.96%)
    /judge_pics/data/orig/phillips-allen.jpeg -- 9,095.57kb -> 8,106.50kb (10.87%)
    /judge_pics/data/orig/seymour-deana.jpeg -- 8,350.29kb -> 7,547.60kb (9.61%)
    /judge_pics/data/orig/baker-josh.jpeg -- 6,887.05kb -> 6,225.95kb (9.6%)
    /judge_pics/data/orig/switzer-kenneth.jpeg -- 4,594.62kb -> 4,162.99kb (9.39%)
    /judge_pics/data/orig/addington-brian.jpeg -- 5,354.65kb -> 4,852.45kb (9.38%)
    /judge_pics/data/orig/tipps-dale.jpeg -- 6,417.37kb -> 5,853.38kb (8.79%)
    /judge_pics/data/orig/johnson-pamela.jpeg -- 6,188.81kb -> 5,648.67kb (8.73%)
    /judge_pics/data/orig/luttrell-amber.jpeg -- 10,789.61kb -> 9,868.55kb (8.54%)
    /judge_pics/data/orig/headrick-audrey.jpeg -- 9,280.30kb -> 8,489.81kb (8.52%)
    /judge_pics/data/orig/lowe-lisa.jpeg -- 9,099.11kb -> 8,349.15kb (8.24%)
    /judge_pics/data/orig/hensley-david.jpeg -- 104.59kb -> 98.77kb (5.56%)
    /judge_pics/data/512/wyatt-tom.jpeg -- 112.41kb -> 106.35kb (5.39%)
    /judge_pics/data/512/godkin-pele.jpeg -- 183.63kb -> 174.23kb (5.12%)
    /judge_pics/data/512/tipps-dale.jpeg -- 142.35kb -> 135.16kb (5.05%)
    /judge_pics/data/512/phillips-allen.jpeg -- 111.37kb -> 105.95kb (4.87%)
    /judge_pics/data/512/baker-josh.jpeg -- 147.16kb -> 140.07kb (4.82%)
    /judge_pics/data/512/addington-brian.jpeg -- 141.09kb -> 134.33kb (4.79%)
    /judge_pics/data/512/switzer-kenneth.jpeg -- 143.96kb -> 137.10kb (4.77%)
    /judge_pics/data/512/durham-robert.jpeg -- 155.05kb -> 147.88kb (4.63%)
    /judge_pics/data/orig/conner-tim.jpeg -- 119.02kb -> 113.53kb (4.62%)
    /judge_pics/data/512/seymour-deana.jpeg -- 121.23kb -> 115.66kb (4.59%)
    /judge_pics/data/256/godkin-pele.jpeg -- 48.02kb -> 45.82kb (4.58%)
    /judge_pics/data/512/headrick-audrey.jpeg -- 129.50kb -> 123.64kb (4.53%)
    /judge_pics/data/512/lowe-lisa.jpeg -- 156.16kb -> 149.12kb (4.51%)
    /judge_pics/data/256/tipps-dale.jpeg -- 38.90kb -> 37.18kb (4.43%)
    /judge_pics/data/512/johnson-pamela.jpeg -- 145.72kb -> 139.42kb (4.33%)
    /judge_pics/data/512/luttrell-amber.jpeg -- 143.19kb -> 137.06kb (4.28%)
    /judge_pics/data/256/wyatt-tom.jpeg -- 31.07kb -> 29.74kb (4.27%)
    /judge_pics/data/256/addington-brian.jpeg -- 38.80kb -> 37.17kb (4.2%)
    /judge_pics/data/256/seymour-deana.jpeg -- 35.02kb -> 33.59kb (4.07%)
    /judge_pics/data/256/baker-josh.jpeg -- 41.12kb -> 39.46kb (4.05%)
    /judge_pics/data/256/luttrell-amber.jpeg -- 39.66kb -> 38.09kb (3.96%)
    /judge_pics/data/256/switzer-kenneth.jpeg -- 39.56kb -> 37.99kb (3.96%)
    /judge_pics/data/256/phillips-allen.jpeg -- 32.14kb -> 30.88kb (3.91%)
    /judge_pics/data/256/lowe-lisa.jpeg -- 42.60kb -> 41.04kb (3.66%)
    /judge_pics/data/256/johnson-pamela.jpeg -- 40.03kb -> 38.57kb (3.65%)
    /judge_pics/data/256/durham-robert.jpeg -- 41.14kb -> 39.66kb (3.6%)
    /judge_pics/data/256/headrick-audrey.jpeg -- 35.47kb -> 34.20kb (3.59%)
    /judge_pics/data/orig/wyatt-tom.jpeg -- 8,348.90kb -> 8,050.49kb (3.57%)
    /judge_pics/data/512/bratton-sam-1888-08-19.jpeg -- 25.19kb -> 24.50kb (2.71%)
    /judge_pics/data/128/godkin-pele.jpeg -- 14.02kb -> 13.68kb (2.42%)
    /judge_pics/data/256/nalbandian-john-1969.jpeg -- 17.22kb -> 16.82kb (2.34%)
    /judge_pics/data/128/tipps-dale.jpeg -- 11.15kb -> 10.92kb (2.02%)
    /judge_pics/data/128/switzer-kenneth.jpeg -- 11.47kb -> 11.25kb (1.97%)
    /judge_pics/data/128/seymour-deana.jpeg -- 11.08kb -> 10.87kb (1.93%)
    /judge_pics/data/256/warrington-john-1844-07-22.jpeg -- 8.42kb -> 8.27kb (1.77%)
    /judge_pics/data/128/johnson-pamela.jpeg -- 11.92kb -> 11.73kb (1.62%)
    /judge_pics/data/128/addington-brian.jpeg -- 11.42kb -> 11.25kb (1.54%)
    /judge_pics/data/128/baker-josh.jpeg -- 12.06kb -> 11.88kb (1.5%)
    /judge_pics/data/128/lowe-lisa.jpeg -- 12.84kb -> 12.65kb (1.49%)
    /judge_pics/data/128/luttrell-amber.jpeg -- 12.14kb -> 11.97kb (1.42%)
    /judge_pics/data/512/warrington-john-1844-07-22.jpeg -- 23.35kb -> 23.04kb (1.35%)
    /judge_pics/data/256/bratton-sam-1888-08-19.jpeg -- 7.80kb -> 7.70kb (1.3%)
    /judge_pics/data/512/conner-tim.jpeg -- 23.20kb -> 22.95kb (1.08%)
    /judge_pics/data/128/durham-robert.jpeg -- 11.42kb -> 11.29kb (1.07%)
    /judge_pics/data/128/wyatt-tom.jpeg -- 9.72kb -> 9.63kb (0.99%)
    /judge_pics/data/128/phillips-allen.jpeg -- 10.12kb -> 10.03kb (0.91%)
    /judge_pics/data/128/headrick-audrey.jpeg -- 10.72kb -> 10.63kb (0.84%)
    /judge_pics/data/512/hensley-david.jpeg -- 19.45kb -> 19.34kb (0.56%)
    /judge_pics/data/128/bratton-sam-1888-08-19.jpeg -- 2.76kb -> 2.76kb (0.07%)

    Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

commit b112364da8d0e2fed131c1e0a5d8a2819c3f3a71
Author: vvilliam <wpalin@gmail.com>
Date:   Thu Aug 27 16:09:41 2020 -0400

    style(Black Changes): Black updated req. reformat of old files

commit 120866b80b42d4c1395dd2b298955c1d6735f2d3
Author: vvilliam <wpalin@gmail.com>
Date:   Thu Aug 27 16:00:21 2020 -0400

    feat(judges.json): Add new TN workers comp judges provided by court

commit 9d3860c0823683198e7ea30d3d9923abc0ea050d
Author: vvilliam <wpalin@gmail.com>
Date:   Thu Aug 27 15:49:15 2020 -0400

    feat(judges.json): Add TN workers comp judges provided by court

commit 5a94bd879edd1a822b26d85fff76f09f75e8e41d
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 23:35:56 2020 -0700

    fix(pip): Remove use of pip internals

    See:
     - https://github.com/abertschi/postcards/blob/master/setup.py
     - https://github.com/zdict/zdict/issues/418
     - https://github.com/pypa/pip/issues/8188

commit 95749d3809ec18cea5a140d1105b69419afde4ea
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 23:13:08 2020 -0700

    fix(build): explicit build-backend workaround

    pip issue pypa/pip#6264
    workaround https://github.com/pypa/setuptools/issues/1694#issuecomment-466010982
    see also https://github.com/httplib2/httplib2/commit/cb2940a5046c34b6c3568054e8679ae064da4f72

commit ad450cdca8825f2135655e731b643aaa0d211f31
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 23:05:06 2020 -0700

    feat(readme): Add notes about versions

commit 7ec31f66b4aa66325f3111f080ce44e41229fd95
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 22:46:52 2020 -0700

    feat(ci): Remove travis.yml file

commit f31d223b13f2eba3b81b701b1546737637aad29e
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 22:43:46 2020 -0700

    fix(py3): lxml doesn't work in py3.7 and above

    See: https://stackoverflow.com/questions/53402747/how-to-install-lxml4-0-with-python3-7-on-amazon-linux-2

commit 678984e430d055b7871b9625a67fb4faf8d8b36b
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 22:38:35 2020 -0700

    fix(py3): Fix import test

commit b3da3591d011e48ca5d773de1ce11cb4f5623e5c
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 17:24:26 2020 -0700

    fix(ci): Add LXML deps for py 3

commit 5d019823c5d91788aaf04995c0466a6d1ac84f8b
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 17:21:18 2020 -0700

    fix(ci): Add LXML deps for py 3

commit ab570db4ef29aedc5d9d956004908970b5d65e58
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 17:15:03 2020 -0700

    fix(black): Try this again

commit da06e74325d1efea15e40c535f0a81b3d3dc4ac4
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 17:13:54 2020 -0700

    feat(reqs): Bump versions

commit 8f467f8af21dba022dfd80497b0bc3f04fd0d5b1
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 17:06:19 2020 -0700

    Version bump

commit 4b192f01d931babd02992b8b8eec3bd474892098
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 17:05:39 2020 -0700

    feat(black): Blacken code

commit e8816d6975a1d24297c635373b6b25023413a60b
Merge: 63842da 5fe9a76
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 17:09:22 2020 -0700

    Merge remote-tracking branch 'origin/master'

commit 63842da53e3ca370bf00b1462604a67269bc4c9e
Author: Michael Lissner <mlissner@michaeljaylissner.com>
Date:   Thu May 28 17:02:20 2020 -0700

    feat(repo): Add standard Python template files

commit 5fe9a76c0959341c9041fa038fb6c81eb7cb8874
Author: Mike Lissner <mike@free.law>
Date:   Thu May 14 09:43:30 2020 -0700

    feat(money): Add sponsorships

commit 64be1e844167873f6972a3a5b53645fb3ba5ad3b
Merge: 7a31547 170dbba
Author: Mike Lissner <mike@free.law>
Date:   Wed Jan 22 10:21:15 2020 -0800

    Merge pull request #9 from freelawproject/imgbot

    [ImgBot] Optimize images

commit 170dbba4b5db29aa2593cc37af88e1728908e195
Author: ImgBotApp <ImgBotHelp@gmail.com>
Date:   Wed Jan 22 06:50:04 2020 +0000

    [ImgBot] Optimize images

    *Total -- 352,913.13kb -> 330,052.92kb (6.48%)

    /judge_pics/data/orig/lucas-malcolm-1927-06-21.jpeg -- 38.99kb -> 27.31kb (29.96%)
    /judge_pics/data/orig/rymer-pamela-1941-01-06.jpeg -- 4.96kb -> 3.51kb (29.2%)
    /judge_pics/data/orig/jordan-adalberto-1961.jpeg -- 450.27kb -> 320.55kb (28.81%)
    /judge_pics/data/orig/hendricks-bruce-1957.jpeg -- 851.53kb -> 608.65kb (28.52%)
    /judge_pics/data/orig/kronstadt-john-1951.jpeg -- 6.07kb -> 4.38kb (27.81%)
    /judge_pics/data/orig/simon-michael-1956.jpeg -- 5.11kb -> 3.71kb (27.4%)
    /judge_pics/data/orig/sullivan-richard-1964.jpeg -- 199.81kb -> 145.42kb (27.22%)
    /judge_pics/data/orig/murguia-mary-1960.jpeg -- 6.00kb -> 4.37kb (27.16%)
    /judge_pics/data/orig/hernandez-marco-1957.jpeg -- 4.97kb -> 3.62kb (27.13%)
    /judge_pics/data/orig/huxman-walter-1887-02-16.jpeg -- 15.29kb -> 11.17kb (26.93%)
    /judge_pics/data/orig/lewis-david-1912-04-25.jpeg -- 16.26kb -> 12.07kb (25.82%)
    /judge_pics/data/orig/gleason-sharon-1957.jpeg -- 8.79kb -> 6.60kb (24.85%)
    /judge_pics/data/orig/phillips-orie-1885-11-20.jpeg -- 18.48kb -> 13.91kb (24.74%)
    /judge_pics/data/orig/doyle-william-1911-02-05.jpeg -- 25.59kb -> 19.27kb (24.69%)
    /judge_pics/data/orig/rives-alexander-1806-06-17.jpeg -- 50.55kb -> 38.21kb (24.41%)
    /judge_pics/data/orig/christen-morgan-1961-12-05.jpeg -- 8.43kb -> 6.38kb (24.37%)
    /judge_pics/data/orig/tunheim-john-1953.jpeg -- 281.46kb -> 214.91kb (23.64%)
    /judge_pics/data/orig/lane-george-1806.jpeg -- 84.74kb -> 64.91kb (23.39%)
    /judge_pics/data/orig/pickett-john-1896-09-03.jpeg -- 18.25kb -> 14.00kb (23.3%)
    /judge_pics/data/orig/fitzgerald-michael-1959.jpeg -- 7.83kb -> 6.01kb (23.26%)
    /judge_pics/data/orig/rice-thomas-1960.jpeg -- 8.24kb -> 6.33kb (23.14%)
    /judge_pics/data/orig/christensen-albert-1905-06-09.jpeg -- 21.13kb -> 16.24kb (23.14%)
    /judge_pics/data/orig/fletcher-betty-1923-03-29.jpeg -- 10.32kb -> 7.99kb (22.58%)
    /judge_pics/data/orig/cotteral-john-1864-09-26.jpeg -- 19.68kb -> 15.25kb (22.48%)
    /judge_pics/data/orig/watford-paul-1967.jpeg -- 9.10kb -> 7.11kb (21.87%)
    /judge_pics/data/orig/daugherty-frederick-1914-08-18.jpeg -- 23.44kb -> 18.35kb (21.74%)
    /judge_pics/data/orig/callahan-consuelo-1950-06-09.jpeg -- 24.55kb -> 19.23kb (21.67%)
    /judge_pics/data/orig/bernal-jesus-1963.jpeg -- 8.34kb -> 6.54kb (21.58%)
    /judge_pics/data/orig/miller-gray-1948.jpeg -- 65.83kb -> 51.69kb (21.47%)
    /judge_pics/data/orig/baird-lourdes-1935.jpeg -- 16.10kb -> 12.65kb (21.43%)
    /judge_pics/data/orig/drain-gershwin-1949.jpeg -- 387.22kb -> 304.38kb (21.39%)
    /judge_pics/data/orig/bea-carlos-1934.jpeg -- 11.42kb -> 8.98kb (21.32%)
    /judge_pics/data/orig/shea-edward-1942.jpeg -- 7.56kb -> 5.97kb (21.11%)
    /judge_pics/data/orig/ginsburg-douglas-1946.jpeg -- 155.44kb -> 123.08kb (20.82%)
    /judge_pics/data/orig/nguyen-jacqueline-1965.jpeg -- 11.00kb -> 8.71kb (20.8%)
    /judge_pics/data/orig/tashima-atsushi-1934.jpeg -- 16.53kb -> 13.10kb (20.75%)
    /judge_pics/data/orig/bury-david-1942.jpeg -- 9.32kb -> 7.40kb (20.6%)
    /judge_pics/data/orig/crow-sam-1926.jpeg -- 10.88kb -> 8.66kb (20.4%)
    /judge_pics/data/orig/carney-cormac-1959.jpeg -- 13.98kb -> 11.12kb (20.4%)
    /judge_pics/data/orig/trott-stephen-1939.jpeg -- 16.90kb -> 13.47kb (20.33%)
    /judge_pics/data/orig/friendly-henry-1903-07-03.jpeg -- 1,051.89kb -> 840.30kb (20.12%)
    /judge_pics/data/orig/souter-david-1939-09-17.jpeg -- 86.76kb -> 69.50kb (19.89%)
    /judge_pics/data/orig/blackmun-harry-1908-11-12.jpeg -- 86.13kb -> 69.00kb (19.88%)
    /judge_pics/data/orig/campbell-david-1952.jpeg -- 9.80kb -> 7.85kb (19.86%)
    /judge_pics/data/orig/friedman-bernard-1943.jpeg -- 90.27kb -> 72.39kb (19.8%)
    /judge_pics/data/orig/selna-james-1945.jpeg -- 9.53kb -> 7.65kb (19.75%)
    /judge_pics/data/orig/martinez-ricardo-1951.jpeg -- 14.07kb -> 11.34kb (19.4%)
    /judge_pics/data/orig/fischer-dale-1951.jpeg -- 11.45kb -> 9.23kb (19.36%)
    /judge_pics/data/orig/suko-lonny-1943.jpeg -- 10.13kb -> 8.18kb (19.27%)
    /judge_pics/data/orig/gaughan-patricia-1953.jpeg -- 327.69kb -> 265.13kb (19.09%)
    /judge_pics/data/orig/mosman-michael-1956.jpeg -- 16.13kb -> 13.11kb (18.71%)
    /judge_pics/data/orig/martone-frederick-1943.jpeg -- 11.59kb -> 9.45kb (18.45%)
    /judge_pics/data/orig/readler-chad-1972.jpeg -- 13.51kb -> 11.02kb (18.44%)
    /judge_pics/data/orig/murrah-alfred-1904-10-27.jpeg -- 12.94kb -> 10.55kb (18.43%)
    /judge_pics/data/orig/king-samuel-1916-04-13.jpeg -- 30.82kb -> 25.15kb (18.39%)
    /judge_pics/data/orig/thapar-amul-1969.jpeg -- 60.71kb -> 49.59kb (18.33%)
    /judge_pics/data/orig/gilliam-earl-1931-08-17.jpeg -- 15.71kb -> 12.85kb (18.2%)
    /judge_pics/data/orig/gwin-james-1954.jpeg -- 257.79kb -> 211.53kb (17.94%)
    /judge_pics/data/orig/hatter-terry-1933.jpeg -- 18.19kb -> 14.95kb (17.82%)
    /judge_pics/data/orig/nugent-donald-1948.jpeg -- 280.07kb -> 231.08kb (17.49%)
    /judge_pics/data/orig/paul-john-1839-06-30.jpeg -- 149.25kb -> 123.24kb (17.42%)
    /judge_pics/data/orig/sherburne-john-1757.jpeg -- 19.02kb -> 15.77kb (17.07%)
    /judge_pics/data/orig/economus-peter-1943.jpeg -- 16.48kb -> 13.67kb (17.06%)
    /judge_pics/data/orig/oconnor-earl-1922-10-06.jpeg -- 35.76kb -> 29.67kb (17.05%)
    /judge_pics/data/orig/hemphill-robert-1915-05-10.jpeg -- 543.62kb -> 453.60kb (16.56%)
    /judge_pics/data/orig/polster-dan-1951.jpeg -- 176.22kb -> 147.11kb (16.52%)
    /judge_pics/data/orig/bingham-edward-1828-08-13.jpeg -- 4.81kb -> 4.02kb (16.49%)
    /judge_pics/data/orig/ritter-willis-1899-01-24.jpeg -- 16.68kb -> 13.98kb (16.18%)
    /judge_pics/data/orig/sessions-william-1930.jpeg -- 14,492.86kb -> 12,156.66kb (16.12%)
    /judge_pics/data/orig/graham-james-1939.jpeg -- 107.60kb -> 90.42kb (15.97%)
    /judge_pics/data/orig/matia-paul-1937.jpeg -- 93.36kb -> 78.66kb (15.75%)
    /judge_pics/data/orig/sotomayor-sonia-1954.jpeg -- 2,499.61kb -> 2,119.72kb (15.2%)
    /judge_pics/data/orig/filip-mark-1966.jpeg -- 246.55kb -> 210.20kb (14.74%)
    /judge_pics/data/orig/friedman-daniel-1916-02-08.jpeg -- 21.50kb -> 18.36kb (14.63%)
    /judge_pics/data/orig/colloton-steven-1963.jpeg -- 213.03kb -> 181.95kb (14.59%)
    /judge_pics/data/orig/ginsburg-ruth-2.jpeg -- 3,091.60kb -> 2,643.17kb (14.5%)
    /judge_pics/data/orig/lay-donald-1926-08-24.jpeg -- 2.67kb -> 2.28kb (14.42%)
    /judge_pics/data/orig/adamson-william-1854-08-13.jpeg -- 476.24kb -> 407.84kb (14.36%)
    /judge_pics/data/orig/coxe-alfred-1847-05-20.jpeg -- 35.83kb -> 30.73kb (14.24%)
    /judge_pics/data/orig/wright-otis-1944.jpeg -- 15.31kb -> 13.17kb (13.97%)
    /judge_pics/data/orig/illston-susan-1948.jpeg -- 2.67kb -> 2.29kb (13.95%)
    /judge_pics/data/orig/wu-george-1950.jpeg -- 14.91kb -> 12.85kb (13.83%)
    /judge_pics/data/orig/pickering-charles-1937.jpeg -- 16.80kb -> 14.48kb (13.82%)
    /judge_pics/data/orig/zapata-frank-1944.jpeg -- 17.12kb -> 14.76kb (13.77%)
    /judge_pics/data/orig/staton-josephine-1961.jpeg -- 1,288.86kb -> 1,112.38kb (13.69%)
    /judge_pics/data/orig/coxe-alfred-1880-05-07.jpeg -- 75.89kb -> 65.58kb (13.58%)
    /judge_pics/data/orig/wolverton-charles-1851-05-16.jpeg -- 556.32kb -> 481.24kb (13.5%)
    /judge_pics/data/orig/stotler-alicemarie-1942-05-29.jpeg -- 28.02kb -> 24.25kb (13.45%)
    /judge_pics/data/orig/cooper-florence-marie-1940-02-09.jpeg -- 14.03kb -> 12.15kb (13.4%)
    /judge_pics/data/orig/lorenz-myron-1935.jpeg -- 24.69kb -> 21.42kb (13.25%)
    /judge_pics/data/orig/jones-napoleon-1940-08-25.jpeg -- 13.89kb -> 12.06kb (13.15%)
    /judge_pics/data/orig/timlin-robert-1932-07-26.jpeg -- 16.52kb -> 14.36kb (13.08%)
    /judge_pics/data/orig/scalia-antonin-1936-03-11.jpeg -- 2,879.39kb -> 2,504.65kb (13.01%)
    /judge_pics/data/orig/corcoran-howard-1906-01-25.jpeg -- 7.53kb -> 6.55kb (12.96%)
    /judge_pics/data/orig/robreno-eduardo-1945.jpeg -- 1,389.44kb -> 1,211.64kb (12.8%)
    /judge_pics/data/orig/soto-james-1950.jpeg -- 2.81kb -> 2.45kb (12.77%)
    /judge_pics/data/orig/vadas-nandor.jpeg -- 3.32kb -> 2.89kb (12.75%)
    /judge_pics/data/orig/boochever-robert-1917-10-02.jpeg -- 796.76kb -> 695.59kb (12.7%)
    /judge_pics/data/orig/pearson-benita-1963.jpeg -- 57.96kb -> 50.74kb (12.44%)
    /judge_pics/data/orig/boulware-richard-1968.jpeg -- 2.33kb -> 2.04kb (12.33%)
    /judge_pics/data/orig/thomas-edward-1848-08-04.jpeg -- 247.94kb -> 217.58kb (12.25%)
    /judge_pics/data/orig/smith-norman-1949.jpeg -- 11.41kb -> 10.01kb (12.24%)
    /judge_pics/data/orig/katzmann-robert-1953.jpeg -- 2.47kb -> 2.17kb (12.16%)
    /judge_pics/data/orig/jones-richard-1950.jpeg -- 12.75kb -> 11.20kb (12.12%)
    /judge_pics/data/orig/aiken-ann-1951.jpeg -- 2.40kb -> 2.11kb (12.05%)
    /judge_pics/data/orig/walton-reggie-1949-02-08.jpeg -- 42.97kb -> 37.83kb (11.95%)
    /judge_pics/data/orig/oliver-solomon-1947.jpeg -- 47.19kb -> 41.56kb (11.93%)
    /judge_pics/data/orig/tevrizian-dickran-1940.jpeg -- 12.54kb -> 11.04kb (11.92%)
    /judge_pics/data/orig/whaley-robert-1943.jpeg -- 15.91kb -> 14.02kb (11.9%)
    /judge_pics/data/orig/nunley-troy-1964.jpeg -- 212.63kb -> 187.41kb (11.86%)
    /judge_pics/data/orig/brnovich-susan-1968.jpeg -- 1,456.24kb -> 1,283.68kb (11.85%)
    /judge_pics/data/orig/johnson-sterling-1934.jpeg -- 46.22kb -> 40.81kb (11.69%)
    /judge_pics/data/orig/letts-fred-1875-04-26.jpeg -- 5.81kb -> 5.14kb (11.66%)
    /judge_pics/data/orig/king-garr-1936.jpeg -- 21.37kb -> 18.88kb (11.62%)
    /judge_pics/data/orig/hoffman-ogden-1822-10-16.jpeg -- 90.74kb -> 80.22kb (11.59%)
    /judge_pics/data/orig/peterson-rosanna-1951.jpeg -- 13.34kb -> 11.80kb (11.54%)
    /judge_pics/data/orig/takasugi-robert-1930-09-12.jpeg -- 11.90kb -> 10.53kb (11.51%)
    /judge_pics/data/orig/easterbrook-frank-1948.jpeg -- 3,292.69kb -> 2,914.31kb (11.49%)
    /judge_pics/data/orig/leon-richard-1949.jpeg -- 42.46kb -> 37.62kb (11.41%)
    /judge_pics/data/orig/schroeder-mary-1940-12-04.jpeg -- 3,115.66kb -> 2,763.06kb (11.32%)
    /judge_pics/data/orig/fisher-raymond-1939.jpeg -- 3.08kb -> 2.73kb (11.3%)
    /judge_pics/data/orig/ritter-halsted-1868-07-14.jpeg -- 170.42kb -> 151.19kb (11.28%)
    /judge_pics/data/orig/ray-george-1844-02-03.jpeg -- 16.24kb -> 14.41kb (11.27%)
    /judge_pics/data/orig/fisher-dennis-1944.jpeg -- 11.00kb -> 9.78kb (11.09%)
    /judge_pics/data/orig/grosscup-peter-1852-02-15.jpeg -- 621.15kb -> 552.41kb (11.07%)
    /judge_pics/data/orig/gillmor-helen-1942.jpeg -- 19.50kb -> 17.34kb (11.06%)
    /judge_pics/data/orig/cummings-walter-1916-09-29.jpeg -- 48.27kb -> 42.94kb (11.06%)
    /judge_pics/data/orig/wellborn-olin-1843-06-18.jpeg -- 227.79kb -> 202.88kb (10.93%)
    /judge_pics/data/orig/hodges-william-1934.jpeg -- 897.48kb -> 799.36kb (10.93%)
    /judge_pics/data/orig/blatt-solomon-1921.jpeg -- 67.76kb -> 60.40kb (10.86%)
    /judge_pics/data/orig/snow-grant-1959-10-20.jpeg -- 35.02kb -> 31.22kb (10.86%)
    /judge_pics/data/orig/pitman-robert-1962.jpeg -- 44.27kb -> 39.46kb (10.85%)
    /judge_pics/data/orig/taylor-anna-1932.jpeg -- 4.79kb -> 4.28kb (10.76%)
    /judge_pics/data/orig/seeborg-richard-1956.jpeg -- 3.46kb -> 3.09kb (10.71%)
    /judge_pics/data/orig/paul-john-1883-12-09.jpeg -- 21.12kb -> 18.86kb (10.7%)
    /judge_pics/data/orig/pierce-lawrence-1924.jpeg -- 627.39kb -> 560.38kb (10.68%)
    /judge_pics/data/orig/edwards-harry-1940.jpeg -- 89.82kb -> 80.23kb (10.68%)
    /judge_pics/data/orig/robart-james-1947.jpeg -- 7.25kb -> 6.48kb (10.61%)
    /judge_pics/data/orig/marshall-consuelo-1936.jpeg -- 10.11kb -> 9.04kb (10.61%)
    /judge_pics/data/orig/goldsmith-mark-1952.jpeg -- 15.94kb -> 14.26kb (10.58%)
    /judge_pics/data/orig/laws-bolitha-1891-08-22.jpeg -- 6.68kb -> 5.97kb (10.58%)
    /judge_pics/data/orig/davis-michael-1947.jpeg -- 83.93kb -> 75.06kb (10.58%)
    /judge_pics/data/orig/carter-gene-1935-11-01.jpeg -- 11.59kb -> 10.37kb (10.56%)
    /judge_pics/data/orig/gesell-gerhard-1910-06-16.jpeg -- 5.63kb -> 5.04kb (10.55%)
    /judge_pics/data/orig/tallman-richard-1953.jpeg -- 14.77kb -> 13.21kb (10.54%)
    /judge_pics/data/orig/mcnamara-abel-1936-06-09.jpeg -- 3.16kb -> 2.83kb (10.52%)
    /judge_pics/data/orig/murphy-stephen-1962.jpeg -- 40.57kb -> 36.30kb (10.51%)
    /judge_pics/data/orig/marquez-rosemary-1968.jpeg -- 2.99kb -> 2.68kb (10.42%)
    /judge_pics/data/orig/fairbank-valerie-1949.jpeg -- 12.19kb -> 10.92kb (10.42%)
    /judge_pics/data/orig/bastian-stanley-1958.jpeg -- 3.64kb -> 3.26kb (10.39%)
    /judge_pics/data/orig/fogel-jeremy-1949.jpeg -- 3.58kb -> 3.21kb (10.38%)
    /judge_pics/data/orig/molloy-donald-1946.jpeg -- 1,549.81kb -> 1,388.97kb (10.38%)
    /judge_pics/data/orig/goldsborough-thomas-1877-09-16.jpeg -- 5.84kb -> 5.23kb (10.36%)
    /judge_pics/data/orig/clifton-richard-1950.jpeg -- 66.95kb -> 60.02kb (10.36%)
    /judge_pics/data/orig/anello-michael-1943.jpeg -- 41.92kb -> 37.62kb (10.27%)
    /judge_pics/data/orig/kessler-gladys-1938.jpeg -- 35.38kb -> 31.75kb (10.26%)
    /judge_pics/data/orig/webster-john-1877-02-22.jpeg -- 182.21kb -> 163.52kb (10.26%)
    /judge_pics/data/orig/white-jeffrey-1945.jpeg -- 3.42kb -> 3.07kb (10.25%)
    /judge_pics/data/orig/gee-dolly-1959.jpeg -- 7.31kb -> 6.56kb (10.25%)
    /judge_pics/data/orig/field-richard-1803-12-31.jpeg -- 2.66kb -> 2.39kb (10.23%)
    /judge_pics/data/orig/gordon-andrew-1962.jpeg -- 2.80kb -> 2.52kb (10.14%)
    /judge_pics/data/orig/dietrich-frank-1863-01-23.jpeg -- 97.76kb -> 87.88kb (10.11%)
    /judge_pics/data/orig/zipps-jennifer-1964.jpeg -- 20.59kb -> 18.51kb (10.08%)
    /judge_pics/data/orig/james-maria-elena.jpeg -- 3.54kb -> 3.19kb (10.06%)
    /judge_pics/data/orig/keith-damon-1922.jpeg -- 15.96kb -> 14.36kb (10.05%)
    /judge_pics/data/orig/owens-john-1971.jpeg -- 3.15kb -> 2.83kb (10.05%)
    /judge_pics/data/orig/hollzer-harry-1880-11-04.jpeg -- 307.36kb -> 276.58kb (10.02%)
    /judge_pics/data/orig/sanborn-john-1883-11-09.jpeg -- 33.76kb -> 30.39kb (9.97%)
    /judge_pics/data/orig/lawson-david-1951.jpeg -- 7.72kb -> 6.96kb (9.9%)
    /judge_pics/data/orig/jordan-kent-1957.jpeg -- 2.86kb -> 2.58kb (9.89%)
    /judge_pics/data/orig/smith-john-1904-01-25.jpeg -- 22.50kb -> 20.28kb (9.88%)
    /judge_pics/data/orig/olguin-fernando-1961.jpeg -- 2.87kb -> 2.59kb (9.87%)
    /judge_pics/data/orig/preyer-lunsford-1919-01-11.jpeg -- 51.86kb -> 46.75kb (9.86%)
    /judge_pics/data/orig/lanning-william-1849-01-01.jpeg -- 128.49kb -> 115.84kb (9.85%)
    /judge_pics/data/orig/biddle-francis-1886-05-09.jpeg -- 624.76kb -> 563.39kb (9.82%)
    /judge_pics/data/orig/johnson-jed-1888-07-31.jpeg -- 45.04kb -> 40.61kb (9.82%)
    /judge_pics/data/orig/oconnell-beverly-1965.jpeg -- 3.08kb -> 2.78kb (9.82%)
    /judge_pics/data/orig/wilkins-william-1779-12-20.jpeg -- 164.41kb -> 148.40kb (9.74%)
    /judge_pics/data/orig/re-edward-1920-10-14.jpeg -- 113.38kb -> 102.36kb (9.72%)
    /judge_pics/data/orig/boudin-michael-1939.jpeg -- 4,981.71kb -> 4,497.87kb (9.71%)
    /judge_pics/data/orig/walsh-lawrence-1912-01-08.jpeg -- 12.30kb -> 11.11kb (9.7%)
    /judge_pics/data/orig/ekwall-william-1887-06-14.jpeg -- 9.54kb -> 8.62kb (9.69%)
    /judge_pics/data/orig/larson-stephen-1964.jpeg -- 1,337.03kb -> 1,207.51kb (9.69%)
    /judge_pics/data/orig/reeves-danny-1957.jpeg -- 35.03kb -> 31.65kb (9.64%)
    /judge_pics/data/orig/gonzalez-irma-1948.jpeg -- 3.41kb -> 3.08kb (9.63%)
    /judge_pics/data/orig/rudkin-frank-1864-04-23.jpeg -- 20.47kb -> 18.50kb (9.63%)
    /judge_pics/data/orig/graves-james-1953.jpeg -- 497.82kb -> 450.07kb (9.59%)
    /judge_pics/data/orig/pechman-marsha-1951.jpeg -- 5.70kb -> 5.16kb (9.59%)
    /judge_pics/data/orig/kiley-roger-1900-10-23.jpeg -- 123.70kb -> 111.86kb (9.57%)
    /judge_pics/data/orig/lloyd-howard.jpeg -- 3.78kb -> 3.42kb (9.57%)
    /judge_pics/data/orig/odonoghue-daniel-1876-10-15.jpeg -- 7.21kb -> 6.53kb (9.52%)
    /judge_pics/data/orig/jones-nathaniel-1926.jpeg -- 46.81kb -> 42.36kb (9.49%)
    /judge_pics/data/orig/cohn-avern-1924.jpeg -- 20.95kb -> 18.96kb (9.49%)
    /judge_pics/data/orig/dorsey-jennifer-1971.jpeg -- 3.21kb -> 2.90kb (9.47%)
    /judge_pics/data/orig/conti-samuel-1922.jpeg -- 3.69kb -> 3.34kb (9.45%)
    /judge_pics/data/orig/bashant-cynthia-1960.jpeg -- 3.29kb -> 2.98kb (9.43%)
    /judge_pics/data/orig/sandoval-brian-1963.jpeg -- 4,306.65kb -> 3,900.40kb (9.43%)
    /judge_pics/data/orig/wesley-richard-1949-08.jpeg -- 82.73kb -> 74.95kb (9.4%)
    /judge_pics/data/orig/friedland-michelle-1972.jpeg -- 3.23kb -> 2.93kb (9.4%)
    /judge_pics/data/orig/rayfiel-leo-1888-03-22.jpeg -- 103.18kb -> 93.49kb (9.39%)
    /judge_pics/data/orig/clark-charles-1925-09-12.jpeg -- 403.84kb -> 365.99kb (9.37%)
    /judge_pics/data/orig/thomason-robert-1879-05-30.jpeg -- 20.89kb -> 18.94kb (9.35%)
    /judge_pics/data/orig/anderson-stephen-1932.jpeg -- 12.71kb -> 11.52kb (9.34%)
    /judge_pics/data/orig/humphreys-west-1806-08-26.jpeg -- 20.71kb -> 18.78kb (9.32%)
    /judge_pics/data/orig/bunning-david-1966.jpeg -- 9.25kb -> 8.39kb (9.3%)
    /judge_pics/data/orig/anderson-percy-1948.jpeg -- 61.58kb -> 55.86kb (9.29%)
    /judge_pics/data/orig/pray-charles-1868-04-06.jpeg -- 29.17kb -> 26.47kb (9.25%)
    /judge_pics/data/orig/ware-james-1946.jpeg -- 3.67kb -> 3.33kb (9.22%)
    /judge_pics/data/orig/adkins-jesse-1879-04-13.jpeg -- 6.33kb -> 5.74kb (9.21%)
    /judge_pics/data/orig/blake-catherine-1950.jpeg -- 50.38kb -> 45.74kb (9.21%)
    /judge_pics/data/orig/patel-marilyn-1938.jpeg -- 3.90kb -> 3.54kb (9.2%)
    /judge_pics/data/orig/wallace-william-1837-04-14.jpeg -- 288.46kb -> 261.94kb (9.19%)
    /judge_pics/data/orig/jensen-delwen-1928.jpeg -- 3.88kb -> 3.52kb (9.17%)
    /judge_pics/data/orig/wilken-claudia-1949.jpeg -- 478.01kb -> 434.35kb (9.13%)
    /judge_pics/data/orig/curran-edward-1903-05-10.jpeg -- 6.31kb -> 5.73kb (9.13%)
    /judge_pics/data/orig/mendez-john-1955.jpeg -- 7.32kb -> 6.65kb (9.12%)
    /judge_pics/data/orig/ambro-thomas-1949.jpeg -- 6,967.34kb -> 6,333.10kb (9.1%)
    /judge_pics/data/orig/teilborg-james-1942.jpeg -- 3.67kb -> 3.34kb (9.06%)
    /judge_pics/data/orig/jones-paul-1880-11-04.jpeg -- 98.76kb -> 89.81kb (9.06%)
    /judge_pics/data/orig/damrell-frank-1938.jpeg -- 10.39kb -> 9.45kb (9.03%)
    /judge_pics/data/orig/proctor-james-1882-09-04.jpeg -- 7.28kb -> 6.62kb (8.99%)
    /judge_pics/data/orig/wilson-james-1874-06-21.jpeg -- 1,139.44kb -> 1,037.08kb (8.98%)
    /judge_pics/data/orig/leamy-james-1892-01-16.jpeg -- 4.35kb -> 3.96kb (8.96%)
    /judge_pics/data/orig/angell-alexis-1857-04-26.jpeg -- 238.42kb -> 217.09kb (8.95%)
    /judge_pics/data/orig/phipps-peter-1973.jpeg -- 2,728.08kb -> 2,483.99kb (8.95%)
    /judge_pics/data/orig/buckley-james-1923.jpeg -- 16.95kb -> 15.43kb (8.94%)
    /judge_pics/data/orig/locke-james-1837-10-30.jpeg -- 190.00kb -> 173.03kb (8.93%)
    /judge_pics/data/orig/jackson-thomas-1937-01-10.jpeg -- 6.00kb -> 5.47kb (8.93%)
    /judge_pics/data/orig/tuchi-john-1964.jpeg -- 3.44kb -> 3.13kb (8.93%)
    /judge_pics/data/orig/whipple-dean-1938.jpeg -- 127.38kb -> 116.02kb (8.92%)
    /judge_pics/data/orig/hand-augustus-1869-07-26.jpeg -- 85.49kb -> 77.87kb (8.91%)
    /judge_pics/data/orig/oconnor-sandra-1930-03-26.jpeg -- 1,017.47kb -> 926.89kb (8.9%)
    /judge_pics/data/orig/wake-neil-1948.jpeg -- 5.19kb -> 4.73kb (8.84%)
    /judge_pics/data/orig/kirkland-james-1903-02-15.jpeg -- 6.49kb -> 5.92kb (8.81%)
    /judge_pics/data/orig/revercomb-george-1929-06-03.jpeg -- 6.01kb -> 5.48kb (8.81%)
    /judge_pics/data/orig/barksdale-alfred-1892-07-17.jpeg -- 33.02kb -> 30.11kb (8.8%)
    /judge_pics/data/orig/kay-alan-1932.jpeg -- 78.13kb -> 71.26kb (8.79%)
    /judge_pics/data/orig/browning-james-1918-10-01.jpeg -- 43.38kb -> 39.57kb (8.77%)
    /judge_pics/data/orig/tamm-edward-1906-04-21.jpeg -- 6.66kb -> 6.07kb (8.77%)
    /judge_pics/data/orig/jackson-ketanji-1970.jpeg -- 766.58kb -> 699.42kb (8.76%)
    /judge_pics/data/orig/chesney-maxine-1942.jpeg -- 4.09kb -> 3.73kb (8.74%)
    /judge_pics/data/orig/piersol-lawrence-1940.jpeg -- 686.79kb -> 626.88kb (8.72%)
    /judge_pics/data/orig/wiggins-charles-1927-12-03.jpeg -- 14.79kb -> 13.50kb (8.72%)
    /judge_pics/data/orig/fitzhenry-louis-1870-01-13.jpeg -- 1,338.56kb -> 1,222.10kb (8.7%)
    /judge_pics/data/orig/rodriguez-joseph-1930.jpeg -- 11.98kb -> 10.94kb (8.7%)
    /judge_pics/data/orig/robinson-aubrey-1922-03-30.jpeg -- 8.28kb -> 7.56kb (8.69%)
    /judge_pics/data/orig/snyder-christina-1947.jpeg -- 5.16kb -> 4.71kb (8.65%)
    /judge_pics/data/orig/jorgenson-cindy-1953.jpeg -- 80.11kb -> 73.19kb (8.63%)
    /judge_pics/data/orig/dick-shelly-1960.jpeg -- 11.70kb -> 10.69kb (8.62%)
    /judge_pics/data/orig/wyche-charles-1885-07-07.jpeg -- 685.08kb -> 626.00kb (8.62%)
    /judge_pics/data/orig/van-sickle-frederick-1943.jpeg -- 31.14kb -> 28.45kb (8.62%)
    /judge_pics/data/orig/hickenlooper-smith-1880-02-13.jpeg -- 22.00kb -> 20.11kb (8.6%)
    /judge_pics/data/orig/allen-michael-1949-12-16.jpeg -- 28.45kb -> 26.00kb (8.59%)
    /judge_pics/data/orig/brady-james-1944.jpeg -- 12.40kb -> 11.34kb (8.58%)
    /judge_pics/data/orig/bryant-vanessa-1954.jpeg -- 23.62kb -> 21.60kb (8.57%)
    /judge_pics/data/orig/thacher-thomas-1881-09-10.jpeg -- 5.11kb -> 4.67kb (8.55%)
    /judge_pics/data/orig/kim-sallie.jpeg -- 227.05kb -> 207.67kb (8.54%)
    /judge_pics/data/orig/gabriel-richard-1962-03-03.jpeg -- 43.55kb -> 39.85kb (8.5%)
    /judge_pics/data/orig/martineau-john-1873-12-02.jpeg -- 1,221.50kb -> 1,118.13kb (8.46%)
    /judge_pics/data/orig/whyte-ronald-1942.jpeg -- 3.93kb -> 3.60kb (8.45%)
    /judge_pics/data/orig/rogers-henry-1853-10-10.jpeg -- 698.08kb -> 639.17kb (8.44%)
    /judge_pics/data/orig/vanbebber-george-1931-10-21.jpeg -- 6.98kb -> 6.39kb (8.43%)
    /judge_pics/data/orig/nalbandian-john-1969.jpeg -- 21.95kb -> 20.10kb (8.43%)
    /judge_pics/data/orig/ross-john-1878-03-09.jpeg -- 419.73kb -> 384.39kb (8.42%)
    /judge_pics/data/orig/conkling-alfred-1789-10-12.jpeg -- 225.48kb -> 206.50kb (8.42%)
    /judge_pics/data/orig/bone-homer-1883-01-25.jpeg -- 13.52kb -> 12.39kb (8.4%)
    /judge_pics/data/orig/martin-james-1846-09-13.jpeg -- 40.29kb -> 36.91kb (8.39%)
    /judge_pics/data/orig/mcnary-john-1867-01-31.jpeg -- 90.60kb -> 83.03kb (8.36%)
    /judge_pics/data/orig/marquez-monica-1969.jpeg -- 137.21kb -> 125.75kb (8.35%)
    /judge_pics/data/orig/henderson-thelton-1933.jpeg -- 4.02kb -> 3.69kb (8.35%)
    /judge_pics/data/orig/clark-bennett-1890-01-08.jpeg -- 6,792.58kb -> 6,225.34kb (8.35%)
    /judge_pics/data/orig/settle-thomas-1831-01-23.jpeg -- 355.29kb -> 325.80kb (8.3%)
    /judge_pics/data/orig/brasher-andrew-1981.jpeg -- 25.26kb -> 23.17kb (8.28%)
    /judge_pics/data/orig/singal-george-1945.jpeg -- 9.30kb -> 8.53kb (8.27%)
    /judge_pics/data/orig/kennedy-henry-1948.jpeg -- 21.94kb -> 20.13kb (8.26%)
    /judge_pics/data/256/johnson-jed-1888-07-31.jpeg -- 17.73kb -> 16.27kb (8.24%)
    /judge_pics/data/orig/goff-nathan-1843-02-09.jpeg -- 460.59kb -> 422.65kb (8.24%)
    /judge_pics/data/orig/clark-chase-1883-08-21.jpeg -- 82.40kb -> 75.62kb (8.24%)
    /judge_pics/data/orig/albritton-william-1936.jpeg -- 18.72kb -> 17.18kb (8.23%)
    /judge_pics/data/orig/bastian-walter-1891-11-16.jpeg -- 7.43kb -> 6.82kb (8.23%)
    /judge_pics/data/orig/alsup-william-1945.jpeg -- 3.94kb -> 3.61kb (8.21%)
    /judge_pics/data/orig/allen-william-1829-06-09.jpeg -- 795.20kb -> 730.29kb (8.16%)
    /judge_pics/data/orig/gordon-peyton-1870-04-30.jpeg -- 6.79kb -> 6.24kb (8.13%)
    /judge_pics/data/orig/walker-john-1940.jpeg -- 3.94kb -> 3.62kb (8.12%)
    /judge_pics/data/orig/morris-james-1890-11-14.jpeg -- 8.31kb -> 7.63kb (8.12%)
    /judge_pics/data/orig/wright-daniel-1864-09-24.jpeg -- 7.08kb -> 6.50kb (8.11%)
    /judge_pics/data/orig/harris-stanley-1927.jpeg -- 7.77kb -> 7.14kb (8.1%)
    /judge_pics/data/512/christenberry-herbert-1897-12-11.jpeg -- 78.17kb -> 71.84kb (8.1%)
    /judge_pics/data/orig/huff-marilyn-1951.jpeg -- 5.84kb -> 5.37kb (8.1%)
    /judge_pics/data/orig/ketchmark-roseann-1963.jpeg -- 2,016.27kb -> 1,853.23kb (8.09%)
    /judge_pics/data/orig/miller-gale.jpeg -- 29.95kb -> 27.54kb (8.06%)
    /judge_pics/data/orig/tostrud-eric-1965.jpeg -- 31.30kb -> 28.78kb (8.06%)
    /judge_pics/data/orig/burgess-franklin-1935-03-09.jpeg -- 6.33kb -> 5.82kb (8.05%)
    /judge_pics/data/orig/cline-genevieve-1877-07-27.jpeg -- 3,703.14kb -> 3,405.34kb (8.04%)
    /judge_pics/data/orig/tinder-john-1950.jpeg -- 3.95kb -> 3.63kb (8.04%)
    /judge_pics/data/orig/mendoza-salvador-1971.jpeg -- 3.46kb -> 3.18kb (8.02%)
    /judge_pics/data/orig/symes-john-1878-02-10.jpeg -- 6.98kb -> 6.42kb (7.99%)
    /judge_pics/data/orig/thompson-myron-1947.jpeg -- 37.14kb -> 34.18kb (7.97%)
    /judge_pics/data/512/takasugi-robert-1930-09-12.jpeg -- 29.99kb -> 27.60kb (7.97%)
    /judge_pics/data/orig/leventhal-harold-1915-01-05.jpeg -- 622.48kb -> 572.91kb (7.96%)
    /judge_pics/data/orig/lindsay-sam-1951.jpeg -- 3.86kb -> 3.56kb (7.94%)
    /judge_pics/data/orig/watkins-william-1951.jpeg -- 39.25kb -> 36.14kb (7.94%)
    /judge_pics/data/orig/donato-james-1960.jpeg -- 219.77kb -> 202.33kb (7.94%)
    /judge_pics/data/orig/caldwell-henry-1832-09-04.jpeg -- 21.79kb -> 20.06kb (7.93%)
    /judge_pics/data/orig/celebrezze-anthony-1910-09-04.jpeg -- 59.92kb -> 55.17kb (7.92%)
    /judge_pics/data/orig/peters-john-1864-08-13.jpeg -- 482.63kb -> 444.40kb (7.92%)
    /judge_pics/data/orig/rizley-ross-1892-07-05.jpeg -- 50.80kb -> 46.78kb (7.91%)
    /judge_pics/data/orig/bolton-susan-1951.jpeg -- 4.91kb -> 4.52kb (7.9%)
    /judge_pics/data/orig/tigar-jon-1962.jpeg -- 4.99kb -> 4.59kb (7.89%)
    /judge_pics/data/orig/hawthorne-robert.jpeg -- 59.32kb -> 54.64kb (7.88%)
    /judge_pics/data/orig/davis-andre-1949.jpeg -- 141.00kb -> 129.91kb (7.87%)
    /judge_pics/data/orig/duffy-francis-1888-06-23.jpeg -- 274.39kb -> 252.83kb (7.86%)
    /judge_pics/data/orig/smyth-constantine-1859-12-04.jpeg -- 388.67kb -> 358.13kb (7.86%)
    /judge_pics/data/orig/wollman-roger-1934-05-29.jpeg -- 2,415.14kb -> 2,225.44kb (7.85%)
    /judge_pics/data/orig/underwood-mell-1892-01-30.jpeg -- 210.83kb -> 194.28kb (7.85%)
    /judge_pics/data/orig/pennington-william-1757.jpeg -- 123.44kb -> 113.78kb (7.83%)
    /judge_pics/data/512/whaley-robert-1943.jpeg -- 47.16kb -> 43.48kb (7.81%)
    /judge_pics/data/orig/gerrard-john-1953-11-02.jpeg -- 49.25kb -> 45.42kb (7.79%)
    /judge_pics/data/orig/sherman-charles-1811-02-03.jpeg -- 21.13kb -> 19.48kb (7.79%)
    /judge_pics/data/orig/mason-john-1799-04-18.jpeg -- 118.51kb -> 109.28kb (7.78%)
    /judge_pics/data/orig/prentiss-samuel-1782-03-31.jpeg -- 11.19kb -> 10.32kb (7.78%)
    /judge_pics/data/512/hatter-terry-1933.jpeg -- 75.54kb -> 69.68kb (7.76%)
    /judge_pics/data/orig/sachs-howard-1925.jpeg -- 19.79kb -> 18.26kb (7.76%)
    /judge_pics/data/orig/feess-gary-1948.jpeg -- 4.38kb -> 4.04kb (7.76%)
    /judge_pics/data/orig/hitchcock-samuel-1755-03-23.jpeg -- 95.87kb -> 88.46kb (7.73%)
    /judge_pics/data/orig/almond-james-1898-06-15.jpeg -- 219.29kb -> 202.33kb (7.73%)
    /judge_pics/data/orig/mayer-haldane-1941.jpeg -- 461.69kb -> 426.01kb (7.73%)
    /judge_pics/data/orig/bissell-john-1940.jpeg -- 25.83kb -> 23.84kb (7.72%)
    /judge_pics/data/orig/england-morrison-1954.jpeg -- 101.59kb -> 93.75kb (7.72%)
    /judge_pics/data/orig/boarman-alexander-1839-12-10.jpeg -- 1,197.92kb -> 1,105.46kb (7.72%)
    /judge_pics/data/orig/irizarry-dora-1955.jpeg -- 47.73kb -> 44.04kb (7.71%)
    /judge_pics/data/orig/kollar-kotelly-colleen-1943.jpeg -- 19.77kb -> 18.24kb (7.71%)
    /judge_pics/data/orig/gayle-john-1792-09-11.jpeg -- 24.09kb -> 22.23kb (7.71%)
    /judge_pics/data/orig/shaw-robert-1907-05-22.jpeg -- 30.88kb -> 28.50kb (7.71%)
    /judge_pics/data/orig/smith-william-1903-02-24.jpeg -- 31.25kb -> 28.84kb (7.71%)
    /judge_pics/data/orig/weinman-carl-1903-01-27.jpeg -- 23.98kb -> 22.13kb (7.69%)
    /judge_pics/data/orig/frankfurter-felix-1882-11-15.jpeg -- 82.13kb -> 75.82kb (7.69%)
    /judge_pics/data/orig/terry-diana-1956.jpeg -- 34.23kb -> 31.60kb (7.69%)
    /judge_pics/data/orig/graham-dennis-1946-02-12.jpeg -- 30.97kb -> 28.59kb (7.67%)
    /judge_pics/data/orig/ross-erskine-1845-06-30.jpeg -- 59.83kb -> 55.24kb (7.67%)
    /judge_pics/data/orig/leddy-bernard-1910-03-18.jpeg -- 79.49kb -> 73.40kb (7.66%)
    /judge_pics/data/orig/torresen-nancy-1959.jpeg -- 11.45kb -> 10.57kb (7.65%)
    /judge_pics/data/orig/machrowicz-thaddeus-1899-08-21.jpeg -- 89.96kb -> 83.08kb (7.65%)
    /judge_pics/data/512/gee-dolly-1959.jpeg -- 29.68kb -> 27.41kb (7.65%)
    /judge_pics/data/512/lioi-sara-1960.jpeg -- 93.15kb -> 86.03kb (7.64%)
    /judge_pics/data/256/pickering-charles-1937.jpeg -- 16.66kb -> 15.39kb (7.64%)
    /judge_pics/data/orig/lasnik-robert-1951.jpeg -- 5.24kb -> 4.84kb (7.62%)
    /judge_pics/data/orig/huvelle-ellen-1948.jpeg -- 23.77kb -> 21.96kb (7.62%)
    /judge_pics/data/orig/watson-derrick-1966.jpeg -- 89.87kb -> 83.02kb (7.62%)
    /judge_pics/data/orig/danaher-john-1899-01-09.jpeg -- 10.12kb -> 9.35kb (7.61%)
    /judge_pics/data/orig/mackinnon-george-1906-04-22.jpeg -- 539.42kb -> 498.42kb (7.6%)
    /judge_pics/data/orig/taubman-daniel-1948-02-25.jpeg -- 103.93kb -> 96.04kb (7.59%)
    /judge_pics/data/512/trott-stephen-1939.jpeg -- 65.92kb -> 60.92kb (7.58%)
    /judge_pics/data/orig/skopil-otto-1919-06-03.jpeg -- 22.02kb -> 20.35kb (7.55%)
    /judge_pics/data/orig/rice-nancy-1950-06-02.jpeg -- 88.02kb -> 81.38kb (7.54%)
    /judge_pics/data/orig/grant-robert-1905-07-31.jpeg -- 23.55kb -> 21.77kb (7.53%)
    /judge_pics/data/orig/coffin-frank-1919-07-11.jpeg -- 88.96kb -> 82.27kb (7.52%)
    /judge_pics/data/orig/hatfield-paul-1928-04-29.jpeg -- 18.45kb -> 17.07kb (7.5%)
    /judge_pics/data/orig/goldberg-mitchell-1959.jpeg -- 300.65kb -> 278.11kb (7.5%)
    /judge_pics/data/orig/brotman-stanley-1924-07-27.jpeg -- 38.89kb -> 35.98kb (7.48%)
    /judge_pics/data/orig/paez-richard-1947.jpeg -- 4.12kb -> 3.82kb (7.48%)
    /judge_pics/data/512/mccune-barron-1915-02-19.jpeg -- 53.42kb -> 49.43kb (7.48%)
    /judge_pics/data/orig/kobayashi-leslie-1957.jpeg -- 90.42kb -> 83.66kb (7.48%)
    /judge_pics/data/512/rayfiel-leo-1888-03-22.jpeg -- 50.89kb -> 47.09kb (7.47%)
    /judge_pics/data/512/underwood-john-1809-03-14.jpeg -- 88.59kb -> 81.97kb (7.47%)
    /judge_pics/data/orig/marks-emily-1973.jpeg -- 16.74kb -> 15.50kb (7.46%)
    /judge_pics/data/512/biunno-vincent-1916-02-02.jpeg -- 77.94kb -> 72.13kb (7.45%)
    /judge_pics/data/orig/quarles-joseph-1843-12-16.jpeg -- 10.29kb -> 9.53kb (7.43%)
    /judge_pics/data/orig/peck-john-1874-02-05.jpeg -- 14.05kb -> 13.01kb (7.39%)
    /judge_pics/data/orig/ikuta-sandra-1954.jpeg -- 49.21kb -> 45.59kb (7.37%)
    /judge_pics/data/orig/luhring-oscar-1879-02-11.jpeg -- 7.35kb -> 6.81kb (7.36%)
    /judge_pics/data/256/lanning-william-1849-01-01.jpeg -- 22.37kb -> 20.72kb (7.36%)
    /judge_pics/data/orig/king-george-1951.jpeg -- 15.50kb -> 14.36kb (7.35%)
    /judge_pics/data/orig/thornton-thomas-1898-03-08.jpeg -- 232.42kb -> 215.38kb (7.33%)
    /judge_pics/data/orig/scudder-michael-1971.jpeg -- 92.70kb -> 85.91kb (7.32%)
    /judge_pics/data/512/baird-lourdes-1935.jpeg -- 65.05kb -> 60.29kb (7.32%)
    /judge_pics/data/orig/laporte-elizabeth.jpeg -- 4.59kb -> 4.25kb (7.32%)
    /judge_pics/data/orig/paine-elijah-1757-01-21.jpeg -- 10.31kb -> 9.55kb (7.31%)
    /judge_pics/data/orig/mehta-amit-1971.jpeg -- 66.80kb -> 61.92kb (7.31%)
    /judge_pics/data/orig/chhabria-vince-1969.jpeg -- 210.66kb -> 195.26kb (7.31%)
    /judge_pics/data/512/west-samuel-1872-07-17.jpeg -- 61.41kb -> 56.92kb (7.31%)
    /judge_pics/data/orig/orrick-william-1915-10-10.jpeg -- 5.73kb -> 5.32kb (7.29%)
    /judge_pics/data/orig/smalley-david-1809-04-06.jpeg -- 45.90kb -> 42.56kb (7.28%)
    /judge_pics/data/512/timlin-robert-1932-07-26.jpeg -- 66.09kb -> 61.30kb (7.25%)
    /judge_pics/data/orig/ishii-anthony-1946.jpeg -- 5.94kb -> 5.51kb (7.25%)
    /judge_pics/data/256/rives-alexander-1806-06-17.jpeg -- 27.32kb -> 25.35kb (7.22%)
    /judge_pics/data/512/rives-alexander-1806-06-17.jpeg -- 71.14kb -> 66.01kb (7.21%)
    /judge_pics/data/orig/pitney-mahlon-1858-02-05.jpeg -- 28.68kb -> 26.61kb (7.21%)
    /judge_pics/data/orig/patterson-robert-1891-02-12.jpeg -- 133.46kb -> 123.85kb (7.21%)
    /judge_pics/data/orig/eubanks-luther-1917-07-31.jpeg -- 13.72kb -> 12.73kb (7.2%)
    /judge_pics/data/orig/mayer-julius-1865-09-05.jpeg -- 372.50kb -> 345.68kb (7.2%)
    /judge_pics/data/orig/breyer-charles-1941.jpeg -- 4.53kb -> 4.21kb (7.19%)
    /judge_pics/data/orig/orrick-william-1953.jpeg -- 4.82kb -> 4.47kb (7.17%)
    /judge_pics/data/orig/milazzo-jane-1957.jpeg -- 146.61kb -> 136.10kb (7.17%)
    /judge_pics/data/orig/hickey-john-1911-08-22.jpeg -- 5.51kb -> 5.11kb (7.17%)
    /judge_pics/data/orig/agee-g-1952-11-12.jpeg -- 4.56kb -> 4.24kb (7.15%)
    /judge_pics/data/orig/reinhardt-stephen-1931.jpeg -- 502.02kb -> 466.16kb (7.14%)
    /judge_pics/data/orig/hood-denise-1952.jpeg -- 43.59kb -> 40.48kb (7.14%)
    /judge_pics/data/orig/frank-jerome-1889-09-10.jpeg -- 129.59kb -> 120.33kb (7.14%)
    /judge_pics/data/orig/bough-stephen-1970.jpeg -- 17.63kb -> 16.38kb (7.11%)
    /judge_pics/data/512/hall-peirson-1894-07-31.jpeg -- 39.61kb -> 36.80kb (7.1%)
    /judge_pics/data/orig/martini-william-1947.jpeg -- 13.38kb -> 12.43kb (7.1%)
    /judge_pics/data/orig/shwartz-patty-1961.jpeg -- 7.66kb -> 7.12kb (7.1%)
    /judge_pics/data/orig/choate-william-1830-08-30.jpeg -- 227.54kb -> 211.39kb (7.1%)
    /judge_pics/data/orig/battaglia-anthony-1949.jpeg -- 23.77kb -> 22.09kb (7.09%)
    /judge_pics/data/orig/gorsuch-neil-1967-08-29.jpeg -- 606.34kb -> 563.40kb (7.08%)
    /judge_pics/data/orig/howe-harland-1873-02-19.jpeg -- 117.64kb -> 109.31kb (7.08%)
    /judge_pics/data/512/lanning-william-1849-01-01.jpeg -- 74.56kb -> 69.29kb (7.06%)
    /judge_pics/data/orig/widener-hiram-1923-04-30.jpeg -- 29.01kb -> 26.96kb (7.05%)
    /judge_pics/data/orig/washington-bushrod-1762-06-05.jpeg -- 27.50kb -> 25.57kb (7.05%)
    /judge_pics/data/orig/betts-samuel-1786-06-08.jpeg -- 16.87kb -> 15.68kb (7.04%)
    /judge_pics/data/orig/jackson-howell-1832-04-08.jpeg -- 24.80kb -> 23.05kb (7.04%)
    /judge_pics/data/512/johnson-sterling-1934.jpeg -- 105.53kb -> 98.10kb (7.03%)
    /judge_pics/data/orig/lewis-timothy-1954.jpeg -- 1,563.16kb -> 1,453.35kb (7.02%)
    /judge_pics/data/orig/mack-julian-1866-07-19.jpeg -- 63.74kb -> 59.27kb (7.02%)
    /judge_pics/data/512/smith-william-1903-02-24.jpeg -- 59.32kb -> 55.16kb (7.02%)
    /judge_pics/data/orig/woodcock-john-1950.jpeg -- 7.96kb -> 7.40kb (7.01%)
    /judge_pics/data/orig/lord-miles-1919.jpeg -- 12.71kb -> 11.82kb (7.01%)
    /judge_pics/data/orig/jenkins-martin-1953.jpeg -- 4.98kb -> 4.63kb (7.01%)
    /judge_pics/data/orig/gilman-ronald-1942.jpeg -- 5.16kb -> 4.80kb (7.01%)
    /judge_pics/data/orig/karlton-lawrence-1935.jpeg -- 1,110.06kb -> 1,032.37kb (7%)
    /judge_pics/data/orig/ryan-james-1932-11-19.jpeg -- 6.27kb -> 5.83kb (7%)
    /judge_pics/data/orig/hargrove-john-1923-10-25.jpeg -- 36.63kb -> 34.07kb (7%)
    /judge_pics/data/orig/moore-kimberly-1968.jpeg -- 4.16kb -> 3.87kb (7%)
    /judge_pics/data/512/oconnor-earl-1922-10-06.jpeg -- 84.06kb -> 78.18kb (7%)
    /judge_pics/data/orig/bernard-steve-1952.jpeg -- 28.51kb -> 26.52kb (6.99%)
    /judge_pics/data/512/tashima-atsushi-1934.jpeg -- 64.16kb -> 59.69kb (6.98%)
    /judge_pics/data/orig/mccree-wade-1920-07-03.jpeg -- 8.95kb -> 8.33kb (6.95%)
    /judge_pics/data/orig/pennybacker-isaac-1805-09-03.jpeg -- 12.88kb -> 11.98kb (6.94%)
    /judge_pics/data/orig/williams-robert-1868-12-20.jpeg -- 1,655.42kb -> 1,540.71kb (6.93%)
    /judge_pics/data/orig/freeman-beth-1953.jpeg -- 176.70kb -> 164.45kb (6.93%)
    /judge_pics/data/orig/gertner-nancy-1946.jpeg -- 100.00kb -> 93.08kb (6.92%)
    /judge_pics/data/orig/tarnow-arthur-1942.jpeg -- 5.22kb -> 4.86kb (6.92%)
    /judge_pics/data/512/zapata-frank-1944.jpeg -- 84.67kb -> 78.81kb (6.92%)
    /judge_pics/data/orig/breyer-stephen-1938.jpeg -- 1,014.05kb -> 944.05kb (6.9%)
    /judge_pics/data/orig/freeman-ralph-1902-05-05.jpeg -- 21.45kb -> 19.97kb (6.9%)
    /judge_pics/data/orig/hagner-alexander-1826-07-13.jpeg -- 7.14kb -> 6.64kb (6.9%)
    /judge_pics/data/512/callahan-consuelo-1950-06-09.jpeg -- 69.51kb -> 64.72kb (6.89%)
    /judge_pics/data/orig/westenhaver-david-1865-01-13.jpeg -- 17.35kb -> 16.15kb (6.89%)
    /judge_pics/data/orig/kirkpatrick-william-1885-10-02.jpeg -- 50.39kb -> 46.92kb (6.89%)
    /judge_pics/data/512/zipps-jennifer-1964.jpeg -- 65.00kb -> 60.53kb (6.88%)
    /judge_pics/data/512/johnson-charles-1859-02-14.jpeg -- 51.67kb -> 48.12kb (6.87%)
    /judge_pics/data/512/lorenz-myron-1935.jpeg -- 80.21kb -> 74.71kb (6.86%)
    /judge_pics/data/orig/coleman-james-1914-01-09.jpeg -- 212.00kb -> 197.50kb (6.84%)
    /judge_pics/data/orig/haynes-catharina-1963.jpeg -- 5.49kb -> 5.11kb (6.84%)
    /judge_pics/data/orig/miller-andrew-1870-11-16.jpeg -- 5.12kb -> 4.77kb (6.83%)
    /judge_pics/data/512/underwood-mell-1892-01-30.jpeg -- 63.68kb -> 59.33kb (6.82%)
    /judge_pics/data/orig/walker-vaughn-1944.jpeg -- 101.00kb -> 94.11kb (6.82%)
    /judge_pics/data/orig/robinson-spottswood-1916-07-26.jpeg -- 8.84kb -> 8.24kb (6.81%)
    /judge_pics/data/512/tevrizian-dickran-1940.jpeg -- 58.29kb -> 54.32kb (6.8%)
    /judge_pics/data/256/hall-peirson-1894-07-31.jpeg -- 17.24kb -> 16.07kb (6.8%)
    /judge_pics/data/orig/echols-robert-1941.jpeg -- 6.09kb -> 5.68kb (6.8%)
    /judge_pics/data/orig/hunt-ward-1810-06-14.jpeg -- 28.63kb -> 26.69kb (6.78%)
    /judge_pics/data/orig/moreno-carlos-1948-11-04.jpeg -- 73.94kb -> 68.93kb (6.78%)
    /judge_pics/data/orig/degravelles-john-1949.jpeg -- 13.20kb -> 12.31kb (6.75%)
    /judge_pics/data/orig/loeb-alan-1946-12-27.jpeg -- 1,525.95kb -> 1,423.10kb (6.74%)
    /judge_pics/data/512/hand-augustus-1869-07-26.jpeg -- 91.49kb -> 85.33kb (6.73%)
    /judge_pics/data/orig/wood-diane-1950.jpeg -- 239.48kb -> 223.37kb (6.73%)
    /judge_pics/data/512/cooper-florence-marie-1940-02-09.jpeg -- 73.58kb -> 68.63kb (6.72%)
    /judge_pics/data/512/smith-norman-1949.jpeg -- 38.80kb -> 36.20kb (6.71%)
    /judge_pics/data/orig/bright-myron-1919.jpeg -- 99.85kb -> 93.15kb (6.71%)
    /judge_pics/data/orig/shepard-seth-1847-04-23.jpeg -- 393.92kb -> 367.53kb (6.7%)
    /judge_pics/data/orig/bohanon-luther-1902-08-09.jpeg -- 7.04kb -> 6.57kb (6.7%)
    /judge_pics/data/512/shaw-robert-1907-05-22.jpeg -- 58.28kb -> 54.38kb (6.69%)
    /judge_pics/data/512/miller-jack-1916-06-06.jpeg -- 62.97kb -> 58.75kb (6.69%)
    /judge_pics/data/512/jones-richard-1950.jpeg -- 50.41kb -> 47.04kb (6.69%)
    /judge_pics/data/orig/burrell-garland-1947.jpeg -- 6.40kb -> 5.97kb (6.67%)
    /judge_pics/data/orig/bledsoe-benjamin-1874-02-08.jpeg -- 149.94kb -> 139.97kb (6.65%)
    /judge_pics/data/orig/groner-duncan-1873-09-06.jpeg -- 1,011.77kb -> 944.52kb (6.65%)
    /judge_pics/data/512/kennedy-henry-1948.jpeg -- 59.82kb -> 55.84kb (6.65%)
    /judge_pics/data/orig/shapiro-norma-1928.jpeg -- 53.56kb -> 50.00kb (6.65%)
    /judge_pics/data/orig/runyon-william-1871-03-05.jpeg -- 45.84kb -> 42.79kb (6.64%)
    /judge_pics/data/512/duell-charles-1850-04-13.jpeg -- 59.85kb -> 55.88kb (6.63%)
    /judge_pics/data/orig/kenyon-william-1869-06-10.jpeg -- 20.36kb -> 19.01kb (6.63%)
    /judge_pics/data/512/snow-grant-1959-10-20.jpeg -- 100.92kb -> 94.23kb (6.62%)
    /judge_pics/data/orig/moskowitz-barry-1950.jpeg -- 24.90kb -> 23.25kb (6.62%)
    /judge_pics/data/orig/de-vries-marion-1865-08-15.jpeg -- 544.99kb -> 508.91kb (6.62%)
    /judge_pics/data/256/mccune-barron-1915-02-19.jpeg -- 22.01kb -> 20.56kb (6.61%)
    /judge_pics/data/orig/erickson-ralph-1959.jpeg -- 29.66kb -> 27.70kb (6.61%)
    /judge_pics/data/orig/rosenthal-lee-1952.jpeg -- 47.12kb -> 44.01kb (6.6%)
    /judge_pics/data/orig/story-joseph-1779-09-18.jpeg -- 32.11kb -> 29.99kb (6.6%)
    /judge_pics/data/256/ritter-halsted-1868-07-14.jpeg -- 15.81kb -> 14.77kb (6.59%)
    /judge_pics/data/256/duell-charles-1850-04-13.jpeg -- 17.17kb -> 16.04kb (6.59%)
    /judge_pics/data/256/rayfiel-leo-1888-03-22.jpeg -- 14.83kb -> 13.85kb (6.59%)
    /judge_pics/data/orig/hayes-william-1956.jpeg -- 26.09kb -> 24.37kb (6.59%)
    /judge_pics/data/orig/holland-hezekiah-1936.jpeg -- 71.81kb -> 67.08kb (6.58%)
    /judge_pics/data/512/king-garr-1936.jpeg -- 64.82kb -> 60.56kb (6.58%)
    /judge_pics/data/256/burns-james-1924-11-24.jpeg -- 15.84kb -> 14.80kb (6.57%)
    /judge_pics/data/orig/armstrong-saundra-1947.jpeg -- 4.25kb -> 3.97kb (6.57%)
    /judge_pics/data/512/roberts-richard-1953.jpeg -- 54.82kb -> 51.21kb (6.57%)
    /judge_pics/data/orig/ryu-donna.jpeg -- 4.70kb -> 4.39kb (6.56%)
    /judge_pics/data/orig/mcduffie-john-1883-09-25.jpeg -- 2,653.92kb -> 2,479.88kb (6.56%)
    /judge_pics/data/orig/hungate-william-1922-12-14.jpeg -- 5.65kb -> 5.28kb (6.56%)
    /judge_pics/data/512/jorgenson-cindy-1953.jpeg -- 103.02kb -> 96.28kb (6.55%)
    /judge_pics/data/orig/white-helene-1954.jpeg -- 4.88kb -> 4.56kb (6.54%)
    /judge_pics/data/orig/spero-joseph.jpeg -- 18.76kb -> 17.53kb (6.52%)
    /judge_pics/data/orig/kearney-mark-1963.jpeg -- 56.09kb -> 52.43kb (6.52%)
    /judge_pics/data/512/bea-carlos-1934.jpeg -- 57.43kb -> 53.69kb (6.52%)
    /judge_pics/data/orig/pisano-joel-1949.jpeg -- 49.02kb -> 45.83kb (6.51%)
    /judge_pics/data/512/marshall-consuelo-1936.jpeg -- 50.71kb -> 47.41kb (6.51%)
    /judge_pics/data/512/kenyon-william-1869-06-10.jpeg -- 51.72kb -> 48.36kb (6.5%)
    /judge_pics/data/orig/picard-frank-1889-10-19.jpeg -- 547.17kb -> 511.64kb (6.49%)
    /judge_pics/data/256/humphreys-west-1806-08-26.jpeg -- 14.93kb -> 13.96kb (6.49%)
    /judge_pics/data/orig/smith-walter-1862-07-10.jpeg -- 194.90kb -> 182.25kb (6.49%)
    /judge_pics/data/512/reeves-carlton-1964.jpeg -- 90.12kb -> 84.27kb (6.48%)
    /judge_pics/data/orig/bell-griffin-1918-10-31.jpeg -- 22.89kb -> 21.41kb (6.48%)
    /judge_pics/data/512/biddle-francis-1886-05-09.jpeg -- 63.94kb -> 59.80kb (6.48%)
    /judge_pics/data/512/ritter-willis-1899-01-24.jpeg -- 49.50kb -> 46.30kb (6.48%)
    /judge_pics/data/orig/bryan-george-1809-05-22.jpeg -- 69.71kb -> 65.20kb (6.47%)
    /judge_pics/data/orig/waddy-joseph-1911-05-26.jpeg -- 9.37kb -> 8.76kb (6.47%)
    /judge_pics/data/512/sirica-john-1904-03-19.jpeg -- 155.12kb -> 145.09kb (6.47%)
    /judge_pics/data/512/thomas-edward-1848-08-04.jpeg -- 64.33kb -> 60.17kb (6.47%)
    /judge_pics/data/512/jones-paul-1880-11-04.jpeg -- 102.30kb -> 95.68kb (6.47%)
    /judge_pics/data/orig/finkelnburg-gustavus-1837-04-06.jpeg -- 56.97kb -> 53.29kb (6.47%)
    /judge_pics/data/orig/hastings-alcee-1936.jpeg -- 8,494.88kb -> 7,945.55kb (6.47%)
    /judge_pics/data/orig/duval-stanwood-1942.jpeg -- 116.23kb -> 108.71kb (6.46%)
    /judge_pics/data/orig/hand-learned-1872-01-27.jpeg -- 350.91kb -> 328.23kb (6.46%)
    /judge_pics/data/orig/delahay-mark-1828.jpeg -- 41.30kb -> 38.63kb (6.46%)
    /judge_pics/data/512/bell-jesse-1906-04-01.jpeg -- 138.44kb -> 129.50kb (6.46%)
    /judge_pics/data/orig/reeves-carlton-1964.jpeg -- 475.26kb -> 444.61kb (6.45%)
    /judge_pics/data/orig/oberdorfer-louis-1919-02-21.jpeg -- 9.04kb -> 8.45kb (6.44%)
    /judge_pics/data/orig/cooper-irving-1902-02-07.jpeg -- 19.91kb -> 18.63kb (6.44%)
    /judge_pics/data/orig/kagan-elena-2.jpeg -- 1,473.38kb -> 1,378.59kb (6.43%)
    /judge_pics/data/512/hopkinson-joseph-1770-11-12.jpeg -- 70.91kb -> 66.35kb (6.43%)
    /judge_pics/data/orig/hogan-michael-1946.jpeg -- 4.62kb -> 4.32kb (6.43%)
    /judge_pics/data/512/hoffman-ogden-1822-10-16.jpeg -- 71.75kb -> 67.14kb (6.43%)
    /judge_pics/data/orig/fish-allen-1942.jpeg -- 9.22kb -> 8.63kb (6.42%)
    /judge_pics/data/256/trott-stephen-1939.jpeg -- 27.08kb -> 25.34kb (6.42%)
    /judge_pics/data/512/milazzo-jane-1957.jpeg -- 107.46kb -> 100.57kb (6.41%)
    /judge_pics/data/orig/mcclelland-charles-1854-12-19.jpeg -- 24.10kb -> 22.56kb (6.41%)
    /judge_pics/data/orig/saunders-eugene-1853-07-25.jpeg -- 1,134.66kb -> 1,062.03kb (6.4%)
    /judge_pics/data/orig/benitez-roger-1950.jpeg -- 26.35kb -> 24.66kb (6.4%)
    /judge_pics/data/512/mosman-michael-1956.jpeg -- 56.59kb -> 52.97kb (6.4%)
    /judge_pics/data/512/gilliam-earl-1931-08-17.jpeg -- 63.12kb -> 59.09kb (6.39%)
    /judge_pics/data/512/friendly-henry-1903-07-03.jpeg -- 67.77kb -> 63.44kb (6.39%)
    /judge_pics/data/256/simonton-charles-1829-07-11.jpeg -- 16.70kb -> 15.63kb (6.39%)
    /judge_pics/data/512/selna-james-1945.jpeg -- 50.29kb -> 47.08kb (6.38%)
    /judge_pics/data/512/sanborn-john-1883-11-09.jpeg -- 85.98kb -> 80.49kb (6.38%)
    /judge_pics/data/orig/rogers-john-1845-10-09.jpeg -- 15.92kb -> 14.91kb (6.38%)
    /judge_pics/data/128/nugent-donald-1948.jpeg -- 8.42kb -> 7.89kb (6.38%)
    /judge_pics/data/orig/anderson-aldon-1917-01-03.jpeg -- 6.57kb -> 6.15kb (6.38%)
    /judge_pics/data/512/johnson-jed-1888-07-31.jpeg -- 49.85kb -> 46.67kb (6.36%)
    /judge_pics/data/orig/dayton-alston-1857-10-18.jpeg -- 191.78kb -> 179.58kb (6.36%)
    /judge_pics/data/256/buckley-james-1923.jpeg -- 18.72kb -> 17.53kb (6.36%)
    /judge_pics/data/512/readler-chad-1972.jpeg -- 69.55kb -> 65.13kb (6.35%)
    /judge_pics/data/orig/ewart-hamilton-1849-10-23.jpeg -- 18.92kb -> 17.72kb (6.34%)
    /judge_pics/data/orig/sabraw-dana-1958.jpeg -- 31.24kb -> 29.27kb (6.33%)
    /judge_pics/data/256/underwood-john-1809-03-14.jpeg -- 25.25kb -> 23.66kb (6.32%)
    /judge_pics/data/orig/dallinger-fredrick-1871-10-02.jpeg -- 604.14kb -> 566.04kb (6.31%)
    /judge_pics/data/orig/diamond-gustave-1928.jpeg -- 13.44kb -> 12.59kb (6.31%)
    /judge_pics/data/orig/bryan-nathan-1872-04-23.jpeg -- 17.18kb -> 16.10kb (6.3%)
    /judge_pics/data/256/reeves-carlton-1964.jpeg -- 23.06kb -> 21.61kb (6.3%)
    /judge_pics/data/256/clark-chase-1883-08-21.jpeg -- 17.54kb -> 16.44kb (6.29%)
    /judge_pics/data/orig/beeler-laurel.jpeg -- 4.98kb -> 4.67kb (6.29%)
    /judge_pics/data/orig/johnson-charles-1859-02-14.jpeg -- 21.02kb -> 19.70kb (6.29%)
    /judge_pics/data/512/campbell-david-1952.jpeg -- 51.83kb -> 48.58kb (6.29%)
    /judge_pics/data/orig/colt-lebaron-1846-06-25.jpeg -- 125.95kb -> 118.03kb (6.29%)
    /judge_pics/data/orig/black-hugo-1886-02-27.jpeg -- 48.82kb -> 45.75kb (6.29%)
    /judge_pics/data/orig/pregerson-dean-1951.jpeg -- 463.16kb -> 434.05kb (6.29%)
    /judge_pics/data/512/clifton-richard-1950.jpeg -- 83.80kb -> 78.54kb (6.28%)
    /judge_pics/data/256/sanders-harold-1925-02-05.jpeg -- 18.78kb -> 17.60kb (6.28%)
    /judge_pics/data/256/huxman-walter-1887-02-16.jpeg -- 19.89kb -> 18.64kb (6.27%)
    /judge_pics/data/orig/bonner-robert-1942.jpeg -- 105.37kb -> 98.76kb (6.27%)
    /judge_pics/data/512/stotler-alicemarie-1942-05-29.jpeg -- 87.13kb -> 81.66kb (6.27%)
    /judge_pics/data/orig/crane-randy-1965.jpeg -- 22.36kb -> 20.96kb (6.27%)
    /judge_pics/data/orig/southwick-leslie-1950.jpeg -- 11.31kb -> 10.61kb (6.27%)
    /judge_pics/data/orig/mcdermott-george-1886-10-21.jpeg -- 6.90kb -> 6.47kb (6.27%)
    /judge_pics/data/256/kennedy-henry-1948.jpeg -- 24.85kb -> 23.29kb (6.26%)
    /judge_pics/data/…
pdxjohnny added a commit to pdxjohnny/dffml that referenced this issue Jun 22, 2022
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
pdxjohnny added a commit to pdxjohnny/dffml that referenced this issue Jun 22, 2022
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
pdxjohnny added a commit to pdxjohnny/dffml that referenced this issue Jun 22, 2022
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
pdxjohnny added a commit to pdxjohnny/dffml that referenced this issue Jun 23, 2022
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
pdxjohnny added a commit to intel/dffml that referenced this issue Jul 7, 2022
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
pdxjohnny added a commit to intel/dffml that referenced this issue Jul 7, 2022
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
pdxjohnny added a commit to pdxjohnny/dffml that referenced this issue Jan 5, 2023
Related: pypa/setuptools#1694
Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants