Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ pip install pybit7z
### Extract Files from an Archive

```python
from pybit7z import core
import pybit7z

try:
extractor = core.BitFileExtractor(core.FormatSevenZip)
extractor = pybit7z.BitFileExtractor(pybit7z.FormatSevenZip)
extractor.extract("path/to/archive.7z", "out/dir/")

# Extracting a specific file inside an archive
Expand All @@ -55,35 +55,35 @@ try:
# Extracting an encrypted archive
extractor.set_password("password")
extractor.extract("path/to/another/archive.7z", "out/dir/")
except core.BitException as e:
except pybit7z.BitException as e:
... # handle the exception
```

Work on a single archive:

```python
from pybit7z import core
import pybit7z

try:
# Opening the archive
archive = core.BitArchiveReader("path/to/archive.gz", core.FormatGZip)
archive = pybit7z.BitArchiveReader("path/to/archive.gz", pybit7z.FormatGZip)

# Testing the archive
archive.test()

# Extracting the archive
archive.extract_to("out/dir/")
except core.BitException as e:
except pybit7z.BitException as e:
... # handle the exception
```

### Compress Files into an Archive

```python
from pybit7z import core
import pybit7z

try:
compressor = core.BitFileCompressor(core.FormatSevenZip)
compressor = pybit7z.BitFileCompressor(pybit7z.FormatSevenZip)

files = ["path/to/file1.jpg", "path/to/file2.pdf"]

Expand All @@ -105,41 +105,41 @@ try:
compressor.compress_files(files, "protected_archive.zip")

# Updating an existing zip archive
compressor.set_update_mode(core.UpdateMode.Append)
compressor.set_update_mode(pybit7z.UpdateMode.Append)
compressor.compress_files(files, "existing_archive.zip")

# Compressing a single file into a buffer
compressor2 = core.BitFileCompressor(core.FormatBZip2)
compressor2 = pybit7z.BitFileCompressor(pybit7z.FormatBZip2)
buffer: bytes = compressor2.compress_file(files[0])
except core.BitException as e:
except pybit7z.BitException as e:
... # handle the exception
```

Work on a single archive:

```python
from pybit7z import core
import pybit7z

try:
archive = core.BitArchiveWriter(core.FormatSevenZip)
archive = pybit7z.BitArchiveWriter(pybit7z.FormatSevenZip)

# Adding the items to be compressed (no compression is performed here)
archive.add_file("path/to/file.txt")
archive.add_directory("path/to/dir/")

# Compressing the added items to the output archive
archive.compress_to("output.7z")
except core.BitException as e:
except pybit7z.BitException as e:
... # handle the exception
```

### Read Archive Metadata

```python
from pybit7z import core
import pybit7z

try:
arc = core.BitArchiveReader("archive.7z", core.FormatSevenZip)
arc = pybit7z.BitArchiveReader("archive.7z", pybit7z.FormatSevenZip)

# Printing archive metadata
print("Archive properties:",
Expand All @@ -160,7 +160,7 @@ try:
"\n Size: " , item.size(),
"\n Packed size: " , item.pack_size(),
"\n CRC: " , item.crc())
except core.BitException as e:
except pybit7z.BitException as e:
... # handle the exception
```

Expand Down
9 changes: 0 additions & 9 deletions docs/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,3 @@
:undoc-members:
:show-inheritance:
```

## Submodules

```{eval-rst}
.. automodule:: pybit7z._core
:members:
:undoc-members:
:show-inheritance:
```
193 changes: 186 additions & 7 deletions src/pybit7z/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,199 @@

from __future__ import annotations

from pathlib import Path
import pathlib

from importlib_metadata import distribution

from pybit7z import _core as core
from pybit7z._core import (
BitAbstractArchiveCreator,
BitAbstractArchiveHandler,
BitAbstractArchiveOpener,
BitArchiveEditor,
BitArchiveItem,
BitArchiveItemInfo,
BitArchiveItemOffset,
BitArchiveReader,
BitArchiveWriter,
BitCompressionLevel,
BitCompressionMethod,
BitException,
BitFileCompressor,
BitFileExtractor,
BitGenericItem,
BitInFormat,
BitInOutFormat,
BitInputArchive,
BitMemCompressor,
BitMemExtractor,
BitOutputArchive,
BitProperty,
BitPropVariant,
BitPropVariantType,
BitStringCompressor,
BitStringExtractor,
DeletePolicy,
FilterPolicy,
FormatAPM,
FormatArj,
FormatAuto,
FormatBZip2,
FormatCab,
FormatChm,
FormatCoff,
FormatCompound,
FormatCpio,
FormatCramFS,
FormatDeb,
FormatDmg,
FormatElf,
FormatExt,
FormatFat,
FormatFeatures,
FormatFlv,
FormatGpt,
FormatGZip,
FormatHfs,
FormatHxs,
FormatIHex,
FormatIso,
FormatLzh,
FormatLzma,
FormatLzma86,
FormatMacho,
FormatMbr,
FormatMslz,
FormatMub,
FormatNsis,
FormatNtfs,
FormatPe,
FormatPpmd,
FormatQcow,
FormatRar,
FormatRar5,
FormatRpm,
FormatSevenZip,
FormatSplit,
FormatSquashFS,
FormatSwf,
FormatSwfc,
FormatTar,
FormatTE,
FormatUdf,
FormatUEFIc,
FormatUEFIs,
FormatVdi,
FormatVhd,
FormatVhdx,
FormatVmdk,
FormatWim,
FormatXar,
FormatXz,
FormatZ,
FormatZip,
OverwriteMode,
UpdateMode,
set_large_page_mode,
set_lib7zip_path,
)

from ._version import version as __version__

__all__ = ["__version__", "core"]
__all__ = [
"BitAbstractArchiveCreator",
"BitAbstractArchiveHandler",
"BitAbstractArchiveOpener",
"BitArchiveEditor",
"BitArchiveItem",
"BitArchiveItemInfo",
"BitArchiveItemOffset",
"BitArchiveReader",
"BitArchiveWriter",
"BitCompressionLevel",
"BitCompressionMethod",
"BitException",
"BitFileCompressor",
"BitFileExtractor",
"BitGenericItem",
"BitInFormat",
"BitInOutFormat",
"BitInputArchive",
"BitMemCompressor",
"BitMemExtractor",
"BitOutputArchive",
"BitPropVariant",
"BitPropVariantType",
"BitProperty",
"BitStringCompressor",
"BitStringExtractor",
"DeletePolicy",
"FilterPolicy",
"FormatAPM",
"FormatArj",
"FormatAuto",
"FormatBZip2",
"FormatCab",
"FormatChm",
"FormatCoff",
"FormatCompound",
"FormatCpio",
"FormatCramFS",
"FormatDeb",
"FormatDmg",
"FormatElf",
"FormatExt",
"FormatFat",
"FormatFeatures",
"FormatFlv",
"FormatGZip",
"FormatGpt",
"FormatHfs",
"FormatHxs",
"FormatIHex",
"FormatIso",
"FormatLzh",
"FormatLzma",
"FormatLzma86",
"FormatMacho",
"FormatMbr",
"FormatMslz",
"FormatMub",
"FormatNsis",
"FormatNtfs",
"FormatPe",
"FormatPpmd",
"FormatQcow",
"FormatRar",
"FormatRar5",
"FormatRpm",
"FormatSevenZip",
"FormatSplit",
"FormatSquashFS",
"FormatSwf",
"FormatSwfc",
"FormatTE",
"FormatTar",
"FormatUEFIc",
"FormatUEFIs",
"FormatUdf",
"FormatVdi",
"FormatVhd",
"FormatVhdx",
"FormatVmdk",
"FormatWim",
"FormatXar",
"FormatXz",
"FormatZ",
"FormatZip",
"OverwriteMode",
"UpdateMode",
"__version__",
]

if not Path(core.set_lib7zip_path()).exists():
if not pathlib.Path(set_lib7zip_path()).exists():
lib7zip_path = (
distribution(__package__).locate_file(__package__) / core.set_lib7zip_path()
distribution(__package__).locate_file(__package__) / set_lib7zip_path()
)
if lib7zip_path.exists():
core.set_lib7zip_path(str(lib7zip_path))
core.set_large_page_mode()
set_lib7zip_path(str(lib7zip_path))
set_large_page_mode()
Loading
Loading