Metadata-Version: 2.1
Name: ppmd-cffi
Version: 0.2.4
Summary: PPMd compression/decompression library
Home-page: http://github.com/miurahr/ppmd
Author: Hiroshi Miura
Author-email: miurahr@linux.com
License: LGPL-2.1+
Keywords: ppmd,7-zip,compression
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Description-Content-Type: text/x-rst
Requires-Dist: cffi (>=1.14.0)
Provides-Extra: check
Requires-Dist: mypy (>=0.701) ; extra == 'check'
Requires-Dist: mypy-extensions (>=0.4.1) ; extra == 'check'
Requires-Dist: check-manifest ; extra == 'check'
Requires-Dist: flake8 ; extra == 'check'
Requires-Dist: readme-renderer ; extra == 'check'
Requires-Dist: pygments ; extra == 'check'
Requires-Dist: isort (>=5.0.3) ; extra == 'check'
Requires-Dist: twine ; extra == 'check'
Provides-Extra: docs
Requires-Dist: sphinx (>=1.8) ; extra == 'docs'
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'

===============
PPMd for python
===============

PPM(Prediction by partial matching) is a compression algorithm which has several variations of implementations.
PPMd is the implementation by Dmitry Shkarin. It is used in the RAR by default and by 7-Zip as one of several possible methods.

ppmd, aka. ppmd-cffi, is a python bindings with PPMd implementation by C language.
Core codes are derived from p7zip, portable 7-zip implementation, and now only consist of Ppmd7, PPMd ver.H.

Since 7-zip uses PPMd ver.H and RAR uses PPMd ver.I, the ppmd-cffi is considered compatible with 7-zip's implementation. 

Installation
============

As usual, you can install ppmd-cffi using python standard pip command.
CAUTION: Since it is a bindings with C source code, C compiler should be installed on your operating system.

```
pip install ppmd-cffi
```

All C source codes are bundled with ppmd-cffi package.

Usage
=====

ppmd-cffi provide two classes. Both class supports context manager, ie. `with ... as ..` syntax.

Encoder
-------

Encoder class provide PPMd encoder. It has `encode()`, `flush()` and `close()` methos.

Decoder
-------

Decoder class pvoride PPMd decoder. It has `decode()` and `close()` methods.

Please see test code for a detailed usage.


License
=======

* Copyright (C) 2020 Hiroshi Miura

* 7-Zip Copyright (C) 1999-2010 Igor Pavlov
* LZMA SDK Copyright (C) 1999-2010 Igor Pavlov

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301  USA


