├── docs ├── .gitignore ├── source │ ├── conf.py │ ├── installation.rst │ ├── reference │ │ ├── 3-alpha.rst │ │ ├── 2-helper.rst │ │ └── 1-exiftool.rst │ ├── package.rst │ ├── index.rst │ ├── intro.rst │ ├── maintenance │ │ └── release-process.rst │ ├── faq.rst │ └── examples.rst ├── make.bat └── Makefile ├── scripts ├── mypy_reqiuirements.txt ├── pytest_requirements.txt ├── flake8_requirements.txt ├── unittest.bat ├── flake8.ini ├── mypy.bat ├── README.txt ├── windows.coveragerc ├── flake8.bat ├── pytest.bat └── sphinx_docs.bat ├── mypy.ini ├── tests ├── __init__.py ├── files │ ├── rose.jpg │ ├── skyblue.png │ ├── README.txt │ └── my_makernotes.config ├── README.txt ├── test_exiftool_logger.py ├── test_helper_misc.py ├── test_helper_run.py ├── test_exiftool_bytes.py ├── test_exiftool_configfile.py ├── test_helper_checkexecute.py ├── test_exiftool_misc.py ├── common_util.py ├── test_alpha.py ├── test_exiftool_attr.py ├── test_helper_checktagnames.py ├── test_exiftool_process.py ├── test_helper_gettags.py ├── test_helper_settags.py └── test_helper_tags_float.py ├── MANIFEST.in ├── setup.cfg ├── .gitignore ├── LICENSE ├── COPYING.BSD ├── COMPATIBILITY.txt ├── exiftool ├── __init__.py ├── constants.py ├── exceptions.py ├── experimental.py └── helper.py ├── .github └── workflows │ └── lint-and-test.yml ├── setup.py ├── README.rst └── CHANGELOG.md /docs/.gitignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | -------------------------------------------------------------------------------- /scripts/mypy_reqiuirements.txt: -------------------------------------------------------------------------------- 1 | mypy 2 | -------------------------------------------------------------------------------- /mypy.ini: -------------------------------------------------------------------------------- 1 | ;[mypy-json.*] 2 | ;ignore_no_redef = True 3 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Dummy file to make this directory a package. 2 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include README.rst COPYING doc/Makefile doc/conf.py doc/*.rst 2 | -------------------------------------------------------------------------------- /docs/source/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sylikc/pyexiftool/HEAD/docs/source/conf.py -------------------------------------------------------------------------------- /tests/files/rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sylikc/pyexiftool/HEAD/tests/files/rose.jpg -------------------------------------------------------------------------------- /tests/files/skyblue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sylikc/pyexiftool/HEAD/tests/files/skyblue.png -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | version = attr: exiftool.__version__ 3 | 4 | [bdist_rpm] 5 | requires = exiftool 6 | -------------------------------------------------------------------------------- /scripts/pytest_requirements.txt: -------------------------------------------------------------------------------- 1 | # pytest can run unittest scripts 2 | pytest 3 | # coverage addon 4 | pytest-cov 5 | -------------------------------------------------------------------------------- /docs/source/installation.rst: -------------------------------------------------------------------------------- 1 | ************ 2 | Installation 3 | ************ 4 | 5 | .. include:: ../../README.rst 6 | :start-after: INSTALLATION_START 7 | :end-before: INSTALLATION_END 8 | -------------------------------------------------------------------------------- /scripts/flake8_requirements.txt: -------------------------------------------------------------------------------- 1 | flake8 2 | # check for PEP8 Naming Conventions 3 | pep8-naming 4 | # warnings, not necessarily PEP8, but warn certain things 5 | # https://github.com/PyCQA/flake8-bugbear 6 | #flake8-bugbear 7 | -------------------------------------------------------------------------------- /scripts/unittest.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | pushd %~dp0.. 4 | 5 | echo ______________________ 6 | echo *** PyExifTool automation *** 7 | echo Python Built-in Unittest Script 8 | echo ______________________ 9 | 10 | python.exe -m unittest -v 11 | 12 | popd 13 | -------------------------------------------------------------------------------- /tests/files/README.txt: -------------------------------------------------------------------------------- 1 | This folder contains images/files used in tests. 2 | 3 | More may be added at a later time to test different file formats. 4 | 5 | Try to keep the files small (find or create smaller files!)... exiftool is for metdata manipulation, not image data! 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | __pycache__/ 3 | build/ 4 | dist/ 5 | MANIFEST 6 | 7 | *.egg-info/ 8 | 9 | # pytest-cov db 10 | .coverage 11 | 12 | # tests will be made to write to temp directories with this prefix 13 | tests/exiftool-tmp-* 14 | 15 | # IntelliJ 16 | .idea 17 | -------------------------------------------------------------------------------- /scripts/flake8.ini: -------------------------------------------------------------------------------- 1 | [flake8] 2 | ;x E302 expected 2 blank lines 3 | 4 | 5 | ; E303 too many blank lines 6 | ; E266 too many leading '#' for block comment 7 | ; E501 = error - line too long (* > 79 characters) 8 | ; W191 = warning - indentation contains tabs 9 | ; E301 expected 1 blank line 10 | ignore = E303,E266,E501,W191,E301 11 | -------------------------------------------------------------------------------- /docs/source/reference/3-alpha.rst: -------------------------------------------------------------------------------- 1 | **************************** 2 | Class exiftool.ExifToolAlpha 3 | **************************** 4 | 5 | .. inheritance-diagram:: exiftool.ExifToolAlpha 6 | 7 | .. autoapimodule:: exiftool.ExifToolAlpha 8 | :members: 9 | :undoc-members: 10 | :special-members: __init__ 11 | :show-inheritance: 12 | -------------------------------------------------------------------------------- /docs/source/reference/2-helper.rst: -------------------------------------------------------------------------------- 1 | ***************************** 2 | Class exiftool.ExifToolHelper 3 | ***************************** 4 | 5 | .. inheritance-diagram:: exiftool.ExifToolHelper 6 | 7 | .. autoapimodule:: exiftool.ExifToolHelper 8 | :members: 9 | :undoc-members: 10 | :special-members: __init__ 11 | :show-inheritance: 12 | -------------------------------------------------------------------------------- /scripts/mypy.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | pushd %~dp0.. 4 | 5 | echo ______________________ 6 | echo *** PyExifTool automation *** 7 | echo MyPy Static Analysis Script 8 | echo; 9 | echo pip's MyPy version 10 | python.exe -m pip show mypy | findstr /l /c:"Version:" 11 | echo ______________________ 12 | 13 | python.exe -m mypy --config-file mypy.ini --strict exiftool/ 14 | 15 | 16 | popd 17 | -------------------------------------------------------------------------------- /docs/source/reference/1-exiftool.rst: -------------------------------------------------------------------------------- 1 | *********************** 2 | Class exiftool.ExifTool 3 | *********************** 4 | 5 | .. inheritance-diagram:: exiftool.ExifTool 6 | 7 | .. autoapimodule:: exiftool.ExifTool 8 | :members: 9 | :undoc-members: 10 | :special-members: __init__ 11 | :show-inheritance: 12 | 13 | .. :private-members: 14 | .. currently excluding private members 15 | -------------------------------------------------------------------------------- /scripts/README.txt: -------------------------------------------------------------------------------- 1 | These are standardized scripts/batch files which run tests, code reviews, or other maintenance tasks in a repeatable way. 2 | 3 | 4 | While scripts could automatically install requirements, it is left up to the caller: 5 | 6 |