Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .DS_Store +0 -0
- .gitattributes +197 -0
- .gradio/certificate.pem +31 -0
- .idea/.gitignore +8 -0
- .idea/git_toolbox_blame.xml +6 -0
- .idea/git_toolbox_prj.xml +15 -0
- .idea/inspectionProfiles/Project_Default.xml +19 -0
- .idea/inspectionProfiles/profiles_settings.xml +6 -0
- .idea/misc.xml +7 -0
- .idea/modules.xml +8 -0
- .idea/unimoConvertPdfToExcel.iml +10 -0
- .idea/vcs.xml +6 -0
- .idea/workspace.xml +149 -0
- .venv/.DS_Store +0 -0
- .venv/.gitignore +2 -0
- .venv/bin/__pycache__/dumppdf.cpython-312.pyc +0 -0
- .venv/bin/__pycache__/pdf2txt.cpython-312.pyc +0 -0
- .venv/bin/activate +87 -0
- .venv/bin/activate.csh +55 -0
- .venv/bin/activate.fish +103 -0
- .venv/bin/activate.nu +96 -0
- .venv/bin/activate.ps1 +61 -0
- .venv/bin/activate_this.py +36 -0
- .venv/bin/dumppdf.py +473 -0
- .venv/bin/f2py +8 -0
- .venv/bin/fastapi +8 -0
- .venv/bin/gradio +8 -0
- .venv/bin/httpx +8 -0
- .venv/bin/huggingface-cli +8 -0
- .venv/bin/markdown-it +8 -0
- .venv/bin/normalizer +8 -0
- .venv/bin/numpy-config +8 -0
- .venv/bin/pdf2txt.py +317 -0
- .venv/bin/pdfplumber +8 -0
- .venv/bin/pip +8 -0
- .venv/bin/pip-3.12 +8 -0
- .venv/bin/pip3 +8 -0
- .venv/bin/pip3.12 +8 -0
- .venv/bin/pygmentize +8 -0
- .venv/bin/pypdfium2 +8 -0
- .venv/bin/python +3 -0
- .venv/bin/python3 +3 -0
- .venv/bin/python3.12 +3 -0
- .venv/bin/ruff +3 -0
- .venv/bin/tqdm +8 -0
- .venv/bin/typer +8 -0
- .venv/bin/upload_theme +8 -0
- .venv/bin/uvicorn +8 -0
- .venv/bin/websockets +8 -0
- .venv/lib/.DS_Store +0 -0
.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
.gitattributes
CHANGED
|
@@ -33,3 +33,200 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
.venv/bin/python filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
.venv/bin/python3 filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
.venv/bin/python3.12 filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
.venv/bin/ruff filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libbrotlicommon.1.1.0.dylib filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libbrotlidec.1.1.0.dylib filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libfreetype.6.dylib filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libharfbuzz.0.dylib filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libjpeg.62.4.0.dylib filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/liblcms2.2.dylib filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/liblzma.5.dylib filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libopenjp2.2.5.3.dylib filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libpng16.16.dylib filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libtiff.6.dylib filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libwebp.7.dylib filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libwebpmux.3.dylib filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libxcb.1.1.0.dylib filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
.venv/lib/python3.12/site-packages/PIL/.dylibs/libz.1.3.1.zlib-ng.dylib filter=lfs diff=lfs merge=lfs -text
|
| 54 |
+
.venv/lib/python3.12/site-packages/PIL/__pycache__/Image.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
.venv/lib/python3.12/site-packages/PIL/_imaging.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 56 |
+
.venv/lib/python3.12/site-packages/PIL/_imagingft.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 57 |
+
.venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 58 |
+
.venv/lib/python3.12/site-packages/_cffi_backend.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 59 |
+
.venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/_asyncio.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 60 |
+
.venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 61 |
+
.venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 62 |
+
.venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 63 |
+
.venv/lib/python3.12/site-packages/cryptography/hazmat/bindings/_rust.abi3.so filter=lfs diff=lfs merge=lfs -text
|
| 64 |
+
.venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/extensions.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 65 |
+
.venv/lib/python3.12/site-packages/gradio/__pycache__/blocks.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 66 |
+
.venv/lib/python3.12/site-packages/gradio/_frontend_code/lite/dist/assets/Canvas3D-BNUzHJMJ.js.map filter=lfs diff=lfs merge=lfs -text
|
| 67 |
+
.venv/lib/python3.12/site-packages/gradio/_frontend_code/lite/dist/assets/PlotlyPlot-CQtop1ne.js.map filter=lfs diff=lfs merge=lfs -text
|
| 68 |
+
.venv/lib/python3.12/site-packages/gradio/_frontend_code/lite/dist/assets/gradio-5.20.1-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
|
| 69 |
+
.venv/lib/python3.12/site-packages/gradio/_frontend_code/lite/dist/assets/gradio_client-1.7.2-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
|
| 70 |
+
.venv/lib/python3.12/site-packages/gradio/templates/frontend/assets/Canvas3D-B4hdlRYx.js.map filter=lfs diff=lfs merge=lfs -text
|
| 71 |
+
.venv/lib/python3.12/site-packages/gradio/templates/frontend/assets/PlotlyPlot-DSYhxG2K.js.map filter=lfs diff=lfs merge=lfs -text
|
| 72 |
+
.venv/lib/python3.12/site-packages/gradio/templates/frontend/static/fonts/Source[[:space:]]Sans[[:space:]]Pro/SourceSansPro-Bold.woff2 filter=lfs diff=lfs merge=lfs -text
|
| 73 |
+
.venv/lib/python3.12/site-packages/gradio/templates/frontend/static/fonts/Source[[:space:]]Sans[[:space:]]Pro/SourceSansPro-Regular.woff2 filter=lfs diff=lfs merge=lfs -text
|
| 74 |
+
.venv/lib/python3.12/site-packages/gradio/templates/frontend/static/img/Duck.glb filter=lfs diff=lfs merge=lfs -text
|
| 75 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/2.B3L4zow3.js.br filter=lfs diff=lfs merge=lfs -text
|
| 76 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/AltairPlot.7au1hBkw.js.br filter=lfs diff=lfs merge=lfs -text
|
| 77 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Canvas3D.DW1PYBQ2.js.br filter=lfs diff=lfs merge=lfs -text
|
| 78 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Index.CIaqC43S.js.br filter=lfs diff=lfs merge=lfs -text
|
| 79 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Index.D1QC_EcI.js.br filter=lfs diff=lfs merge=lfs -text
|
| 80 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/PlotlyPlot.DDNVrHQO.js.br filter=lfs diff=lfs merge=lfs -text
|
| 81 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/hls.CFPBCiRi.js.br filter=lfs diff=lfs merge=lfs -text
|
| 82 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/vega-embed.module.DMA2qfI3.js.br filter=lfs diff=lfs merge=lfs -text
|
| 83 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/vega-tooltip.module.Cy27XviU.js.br filter=lfs diff=lfs merge=lfs -text
|
| 84 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/server/chunks/Canvas3D-KPqQQZrD.js.map filter=lfs diff=lfs merge=lfs -text
|
| 85 |
+
.venv/lib/python3.12/site-packages/gradio/templates/node/build/server/chunks/PlotlyPlot-CCSoSx2P.js.map filter=lfs diff=lfs merge=lfs -text
|
| 86 |
+
.venv/lib/python3.12/site-packages/gradio_client/__pycache__/media_data.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 87 |
+
.venv/lib/python3.12/site-packages/huggingface_hub/__pycache__/hf_api.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 88 |
+
.venv/lib/python3.12/site-packages/huggingface_hub/inference/__pycache__/_client.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 89 |
+
.venv/lib/python3.12/site-packages/huggingface_hub/inference/_generated/__pycache__/_async_client.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 90 |
+
.venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 91 |
+
.venv/lib/python3.12/site-packages/jinja2/__pycache__/compiler.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 92 |
+
.venv/lib/python3.12/site-packages/markupsafe/_speedups.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 93 |
+
.venv/lib/python3.12/site-packages/numpy/_core/__pycache__/_add_newdocs.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 94 |
+
.venv/lib/python3.12/site-packages/numpy/_core/__pycache__/fromnumeric.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 95 |
+
.venv/lib/python3.12/site-packages/numpy/_core/_multiarray_tests.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 96 |
+
.venv/lib/python3.12/site-packages/numpy/_core/_multiarray_umath.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 97 |
+
.venv/lib/python3.12/site-packages/numpy/_core/_simd.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 98 |
+
.venv/lib/python3.12/site-packages/numpy/_core/tests/__pycache__/test_datetime.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 99 |
+
.venv/lib/python3.12/site-packages/numpy/_core/tests/__pycache__/test_dtype.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 100 |
+
.venv/lib/python3.12/site-packages/numpy/_core/tests/__pycache__/test_multiarray.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 101 |
+
.venv/lib/python3.12/site-packages/numpy/_core/tests/__pycache__/test_nditer.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 102 |
+
.venv/lib/python3.12/site-packages/numpy/_core/tests/__pycache__/test_numeric.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 103 |
+
.venv/lib/python3.12/site-packages/numpy/_core/tests/__pycache__/test_regression.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 104 |
+
.venv/lib/python3.12/site-packages/numpy/_core/tests/__pycache__/test_ufunc.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 105 |
+
.venv/lib/python3.12/site-packages/numpy/_core/tests/__pycache__/test_umath.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 106 |
+
.venv/lib/python3.12/site-packages/numpy/f2py/__pycache__/crackfortran.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 107 |
+
.venv/lib/python3.12/site-packages/numpy/fft/_pocketfft_umath.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 108 |
+
.venv/lib/python3.12/site-packages/numpy/lib/__pycache__/_function_base_impl.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 109 |
+
.venv/lib/python3.12/site-packages/numpy/lib/tests/__pycache__/test_function_base.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 110 |
+
.venv/lib/python3.12/site-packages/numpy/lib/tests/__pycache__/test_io.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 111 |
+
.venv/lib/python3.12/site-packages/numpy/linalg/__pycache__/_linalg.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 112 |
+
.venv/lib/python3.12/site-packages/numpy/linalg/_umath_linalg.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 113 |
+
.venv/lib/python3.12/site-packages/numpy/linalg/tests/__pycache__/test_linalg.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 114 |
+
.venv/lib/python3.12/site-packages/numpy/ma/__pycache__/core.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 115 |
+
.venv/lib/python3.12/site-packages/numpy/ma/tests/__pycache__/test_core.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 116 |
+
.venv/lib/python3.12/site-packages/numpy/ma/tests/__pycache__/test_extras.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 117 |
+
.venv/lib/python3.12/site-packages/numpy/random/_bounded_integers.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 118 |
+
.venv/lib/python3.12/site-packages/numpy/random/_common.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 119 |
+
.venv/lib/python3.12/site-packages/numpy/random/_generator.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 120 |
+
.venv/lib/python3.12/site-packages/numpy/random/_mt19937.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 121 |
+
.venv/lib/python3.12/site-packages/numpy/random/_pcg64.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 122 |
+
.venv/lib/python3.12/site-packages/numpy/random/_philox.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 123 |
+
.venv/lib/python3.12/site-packages/numpy/random/bit_generator.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 124 |
+
.venv/lib/python3.12/site-packages/numpy/random/mtrand.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 125 |
+
.venv/lib/python3.12/site-packages/numpy/random/tests/__pycache__/test_generator_mt19937.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 126 |
+
.venv/lib/python3.12/site-packages/numpy/random/tests/__pycache__/test_random.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 127 |
+
.venv/lib/python3.12/site-packages/numpy/random/tests/__pycache__/test_randomstate.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 128 |
+
.venv/lib/python3.12/site-packages/numpy/testing/_private/__pycache__/utils.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 129 |
+
.venv/lib/python3.12/site-packages/numpy/testing/tests/__pycache__/test_utils.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 130 |
+
.venv/lib/python3.12/site-packages/orjson/orjson.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 131 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/algos.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 132 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/arrays.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 133 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/groupby.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 134 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/hashing.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 135 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/hashtable.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 136 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/index.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 137 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/internals.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 138 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/interval.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 139 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/join.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 140 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/lib.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 141 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/missing.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 142 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/ops.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 143 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/parsers.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 144 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/properties.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 145 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/reshape.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 146 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/sas.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 147 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/sparse.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 148 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/testing.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 149 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslib.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 150 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/ccalendar.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 151 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/conversion.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 152 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/dtypes.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 153 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/fields.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 154 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/nattype.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 155 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/np_datetime.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 156 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/offsets.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 157 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/parsing.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 158 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/period.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 159 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/strptime.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 160 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/timedeltas.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 161 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/timestamps.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 162 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/timezones.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 163 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/tzconversion.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 164 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/tslibs/vectorized.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 165 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/window/aggregations.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 166 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/window/indexers.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 167 |
+
.venv/lib/python3.12/site-packages/pandas/_libs/writers.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 168 |
+
.venv/lib/python3.12/site-packages/pandas/core/__pycache__/frame.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 169 |
+
.venv/lib/python3.12/site-packages/pandas/core/__pycache__/generic.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 170 |
+
.venv/lib/python3.12/site-packages/pandas/core/__pycache__/indexing.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 171 |
+
.venv/lib/python3.12/site-packages/pandas/core/__pycache__/resample.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 172 |
+
.venv/lib/python3.12/site-packages/pandas/core/__pycache__/series.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 173 |
+
.venv/lib/python3.12/site-packages/pandas/core/arrays/__pycache__/categorical.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 174 |
+
.venv/lib/python3.12/site-packages/pandas/core/arrays/arrow/__pycache__/array.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 175 |
+
.venv/lib/python3.12/site-packages/pandas/core/groupby/__pycache__/generic.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 176 |
+
.venv/lib/python3.12/site-packages/pandas/core/groupby/__pycache__/groupby.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 177 |
+
.venv/lib/python3.12/site-packages/pandas/core/indexes/__pycache__/base.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 178 |
+
.venv/lib/python3.12/site-packages/pandas/core/indexes/__pycache__/multi.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 179 |
+
.venv/lib/python3.12/site-packages/pandas/core/strings/__pycache__/accessor.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 180 |
+
.venv/lib/python3.12/site-packages/pandas/io/__pycache__/pytables.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 181 |
+
.venv/lib/python3.12/site-packages/pandas/io/__pycache__/sql.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 182 |
+
.venv/lib/python3.12/site-packages/pandas/io/__pycache__/stata.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 183 |
+
.venv/lib/python3.12/site-packages/pandas/io/formats/__pycache__/style.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 184 |
+
.venv/lib/python3.12/site-packages/pandas/tests/__pycache__/test_algos.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 185 |
+
.venv/lib/python3.12/site-packages/pandas/tests/arithmetic/__pycache__/test_datetime64.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 186 |
+
.venv/lib/python3.12/site-packages/pandas/tests/arithmetic/__pycache__/test_timedelta64.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 187 |
+
.venv/lib/python3.12/site-packages/pandas/tests/computation/__pycache__/test_eval.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 188 |
+
.venv/lib/python3.12/site-packages/pandas/tests/copy_view/__pycache__/test_methods.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 189 |
+
.venv/lib/python3.12/site-packages/pandas/tests/dtypes/__pycache__/test_inference.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 190 |
+
.venv/lib/python3.12/site-packages/pandas/tests/extension/__pycache__/test_arrow.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 191 |
+
.venv/lib/python3.12/site-packages/pandas/tests/frame/__pycache__/test_arithmetic.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 192 |
+
.venv/lib/python3.12/site-packages/pandas/tests/frame/__pycache__/test_constructors.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 193 |
+
.venv/lib/python3.12/site-packages/pandas/tests/frame/__pycache__/test_reductions.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 194 |
+
.venv/lib/python3.12/site-packages/pandas/tests/frame/__pycache__/test_stack_unstack.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 195 |
+
.venv/lib/python3.12/site-packages/pandas/tests/frame/indexing/__pycache__/test_indexing.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 196 |
+
.venv/lib/python3.12/site-packages/pandas/tests/groupby/__pycache__/test_categorical.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 197 |
+
.venv/lib/python3.12/site-packages/pandas/tests/groupby/__pycache__/test_groupby.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 198 |
+
.venv/lib/python3.12/site-packages/pandas/tests/indexing/__pycache__/test_loc.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 199 |
+
.venv/lib/python3.12/site-packages/pandas/tests/io/__pycache__/test_sql.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 200 |
+
.venv/lib/python3.12/site-packages/pandas/tests/io/__pycache__/test_stata.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 201 |
+
.venv/lib/python3.12/site-packages/pandas/tests/io/formats/__pycache__/test_format.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 202 |
+
.venv/lib/python3.12/site-packages/pandas/tests/io/json/__pycache__/test_pandas.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 203 |
+
.venv/lib/python3.12/site-packages/pandas/tests/plotting/__pycache__/test_datetimelike.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 204 |
+
.venv/lib/python3.12/site-packages/pandas/tests/plotting/frame/__pycache__/test_frame.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 205 |
+
.venv/lib/python3.12/site-packages/pandas/tests/resample/__pycache__/test_datetime_index.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 206 |
+
.venv/lib/python3.12/site-packages/pandas/tests/reshape/__pycache__/test_pivot.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 207 |
+
.venv/lib/python3.12/site-packages/pandas/tests/reshape/merge/__pycache__/test_merge.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 208 |
+
.venv/lib/python3.12/site-packages/pandas/tests/series/__pycache__/test_constructors.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 209 |
+
.venv/lib/python3.12/site-packages/pandas/tests/tools/__pycache__/test_to_datetime.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 210 |
+
.venv/lib/python3.12/site-packages/pdfminer/__pycache__/fontmetrics.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 211 |
+
.venv/lib/python3.12/site-packages/pdfminer/__pycache__/glyphlist.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 212 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 213 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/distlib/t64-arm.exe filter=lfs diff=lfs merge=lfs -text
|
| 214 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/distlib/t64.exe filter=lfs diff=lfs merge=lfs -text
|
| 215 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/distlib/w64-arm.exe filter=lfs diff=lfs merge=lfs -text
|
| 216 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/distlib/w64.exe filter=lfs diff=lfs merge=lfs -text
|
| 217 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 218 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 219 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 220 |
+
.venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 221 |
+
.venv/lib/python3.12/site-packages/pycparser/__pycache__/yacctab.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 222 |
+
.venv/lib/python3.12/site-packages/pycparser/ply/__pycache__/yacc.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 223 |
+
.venv/lib/python3.12/site-packages/pydantic/__pycache__/json_schema.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 224 |
+
.venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_generate_schema.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 225 |
+
.venv/lib/python3.12/site-packages/pydantic_core/__pycache__/core_schema.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 226 |
+
.venv/lib/python3.12/site-packages/pydantic_core/_pydantic_core.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
| 227 |
+
.venv/lib/python3.12/site-packages/pygments/lexers/__pycache__/lisp.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 228 |
+
.venv/lib/python3.12/site-packages/pypdfium2_raw/__pycache__/bindings.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 229 |
+
.venv/lib/python3.12/site-packages/pypdfium2_raw/libpdfium.dylib filter=lfs diff=lfs merge=lfs -text
|
| 230 |
+
.venv/lib/python3.12/site-packages/rich/__pycache__/_emoji_codes.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 231 |
+
.venv/lib/python3.12/site-packages/rich/__pycache__/console.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
| 232 |
+
.venv/lib/python3.12/site-packages/yaml/_yaml.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
|
.gradio/certificate.pem
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
-----BEGIN CERTIFICATE-----
|
| 2 |
+
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
|
| 3 |
+
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
| 4 |
+
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
|
| 5 |
+
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
|
| 6 |
+
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
|
| 7 |
+
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
|
| 8 |
+
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
|
| 9 |
+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
|
| 10 |
+
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
|
| 11 |
+
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
|
| 12 |
+
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
|
| 13 |
+
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
|
| 14 |
+
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
|
| 15 |
+
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
|
| 16 |
+
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
|
| 17 |
+
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
|
| 18 |
+
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
| 19 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
|
| 20 |
+
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
|
| 21 |
+
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
|
| 22 |
+
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
|
| 23 |
+
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
|
| 24 |
+
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
|
| 25 |
+
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
|
| 26 |
+
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
|
| 27 |
+
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
|
| 28 |
+
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
|
| 29 |
+
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
|
| 30 |
+
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
|
| 31 |
+
-----END CERTIFICATE-----
|
.idea/.gitignore
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Default ignored files
|
| 2 |
+
/shelf/
|
| 3 |
+
/workspace.xml
|
| 4 |
+
# Editor-based HTTP Client requests
|
| 5 |
+
/httpRequests/
|
| 6 |
+
# Datasource local storage ignored files
|
| 7 |
+
/dataSources/
|
| 8 |
+
/dataSources.local.xml
|
.idea/git_toolbox_blame.xml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="GitToolBoxBlameSettings">
|
| 4 |
+
<option name="version" value="2" />
|
| 5 |
+
</component>
|
| 6 |
+
</project>
|
.idea/git_toolbox_prj.xml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="GitToolBoxProjectSettings">
|
| 4 |
+
<option name="commitMessageIssueKeyValidationOverride">
|
| 5 |
+
<BoolValueOverride>
|
| 6 |
+
<option name="enabled" value="true" />
|
| 7 |
+
</BoolValueOverride>
|
| 8 |
+
</option>
|
| 9 |
+
<option name="commitMessageValidationEnabledOverride">
|
| 10 |
+
<BoolValueOverride>
|
| 11 |
+
<option name="enabled" value="true" />
|
| 12 |
+
</BoolValueOverride>
|
| 13 |
+
</option>
|
| 14 |
+
</component>
|
| 15 |
+
</project>
|
.idea/inspectionProfiles/Project_Default.xml
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<component name="InspectionProjectProfileManager">
|
| 2 |
+
<profile version="1.0">
|
| 3 |
+
<option name="myName" value="Project Default" />
|
| 4 |
+
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
| 5 |
+
<option name="ignoredPackages">
|
| 6 |
+
<value>
|
| 7 |
+
<list size="6">
|
| 8 |
+
<item index="0" class="java.lang.String" itemvalue="tokenizers" />
|
| 9 |
+
<item index="1" class="java.lang.String" itemvalue="transformers" />
|
| 10 |
+
<item index="2" class="java.lang.String" itemvalue="triton" />
|
| 11 |
+
<item index="3" class="java.lang.String" itemvalue="torch" />
|
| 12 |
+
<item index="4" class="java.lang.String" itemvalue="torchvision" />
|
| 13 |
+
<item index="5" class="java.lang.String" itemvalue="torchaudio" />
|
| 14 |
+
</list>
|
| 15 |
+
</value>
|
| 16 |
+
</option>
|
| 17 |
+
</inspection_tool>
|
| 18 |
+
</profile>
|
| 19 |
+
</component>
|
.idea/inspectionProfiles/profiles_settings.xml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<component name="InspectionProjectProfileManager">
|
| 2 |
+
<settings>
|
| 3 |
+
<option name="USE_PROJECT_PROFILE" value="false" />
|
| 4 |
+
<version value="1.0" />
|
| 5 |
+
</settings>
|
| 6 |
+
</component>
|
.idea/misc.xml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="Black">
|
| 4 |
+
<option name="sdkName" value="Python 3.12 (unimoConvertPdfToExcel)" />
|
| 5 |
+
</component>
|
| 6 |
+
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (unimoConvertPdfToExcel)" project-jdk-type="Python SDK" />
|
| 7 |
+
</project>
|
.idea/modules.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="ProjectModuleManager">
|
| 4 |
+
<modules>
|
| 5 |
+
<module fileurl="file://$PROJECT_DIR$/.idea/unimoConvertPdfToExcel.iml" filepath="$PROJECT_DIR$/.idea/unimoConvertPdfToExcel.iml" />
|
| 6 |
+
</modules>
|
| 7 |
+
</component>
|
| 8 |
+
</project>
|
.idea/unimoConvertPdfToExcel.iml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<module type="PYTHON_MODULE" version="4">
|
| 3 |
+
<component name="NewModuleRootManager">
|
| 4 |
+
<content url="file://$MODULE_DIR$">
|
| 5 |
+
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
| 6 |
+
</content>
|
| 7 |
+
<orderEntry type="jdk" jdkName="Python 3.12 (unimoConvertPdfToExcel)" jdkType="Python SDK" />
|
| 8 |
+
<orderEntry type="sourceFolder" forTests="false" />
|
| 9 |
+
</component>
|
| 10 |
+
</module>
|
.idea/vcs.xml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="VcsDirectoryMappings">
|
| 4 |
+
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
| 5 |
+
</component>
|
| 6 |
+
</project>
|
.idea/workspace.xml
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project version="4">
|
| 3 |
+
<component name="AutoImportSettings">
|
| 4 |
+
<option name="autoReloadType" value="SELECTIVE" />
|
| 5 |
+
</component>
|
| 6 |
+
<component name="ChangeListManager">
|
| 7 |
+
<list default="true" id="d5879944-fd41-453b-9ce8-8ffb1872c926" name="Changes" comment="Refine PDF processing and dynamic output generation. Introduced timestamped dynamic filenames for Excel outputs and enhanced pattern matching for key data extraction. Improved handling of "VLR.COMISSAO" by dynamically identifying valid monetary values, and updated "NOME DO CLIENTE" formatting logic to support edge cases. These changes ensure better reliability and flexibility in data processing." />
|
| 8 |
+
<option name="SHOW_DIALOG" value="false" />
|
| 9 |
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
| 10 |
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
| 11 |
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
| 12 |
+
</component>
|
| 13 |
+
<component name="Git.Settings">
|
| 14 |
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
| 15 |
+
</component>
|
| 16 |
+
<component name="GitHubPullRequestSearchHistory">{
|
| 17 |
+
"lastFilter": {
|
| 18 |
+
"state": "OPEN",
|
| 19 |
+
"assignee": "Santos-Jefferson"
|
| 20 |
+
}
|
| 21 |
+
}</component>
|
| 22 |
+
<component name="GithubPullRequestsUISettings">{
|
| 23 |
+
"selectedUrlAndAccountId": {
|
| 24 |
+
"url": "https://github.com/Santos-Jefferson/unimoConvertPdfToExcel.git",
|
| 25 |
+
"accountId": "e63bb271-a277-4fac-8f22-2136b092c782"
|
| 26 |
+
}
|
| 27 |
+
}</component>
|
| 28 |
+
<component name="KubernetesApiPersistence">{}</component>
|
| 29 |
+
<component name="KubernetesApiProvider">{
|
| 30 |
+
"isMigrated": true
|
| 31 |
+
}</component>
|
| 32 |
+
<component name="ProjectColorInfo">{
|
| 33 |
+
"associatedIndex": 7
|
| 34 |
+
}</component>
|
| 35 |
+
<component name="ProjectId" id="2uBZHqTfVu8U3HRjyiccGmZByXx" />
|
| 36 |
+
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
| 37 |
+
<component name="ProjectViewState">
|
| 38 |
+
<option name="hideEmptyMiddlePackages" value="true" />
|
| 39 |
+
<option name="showLibraryContents" value="true" />
|
| 40 |
+
<option name="sortKey" value="BY_TIME_DESCENDING" />
|
| 41 |
+
</component>
|
| 42 |
+
<component name="PropertiesComponent">{
|
| 43 |
+
"keyToString": {
|
| 44 |
+
"Python.main.executor": "Run",
|
| 45 |
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
| 46 |
+
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
| 47 |
+
"git-widget-placeholder": "main",
|
| 48 |
+
"node.js.detected.package.eslint": "true",
|
| 49 |
+
"node.js.detected.package.tslint": "true",
|
| 50 |
+
"node.js.selected.package.eslint": "(autodetect)",
|
| 51 |
+
"node.js.selected.package.tslint": "(autodetect)",
|
| 52 |
+
"nodejs_package_manager_path": "npm",
|
| 53 |
+
"vue.rearranger.settings.migration": "true"
|
| 54 |
+
}
|
| 55 |
+
}</component>
|
| 56 |
+
<component name="RunManager">
|
| 57 |
+
<configuration name="main" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
|
| 58 |
+
<module name="unimoConvertPdfToExcel" />
|
| 59 |
+
<option name="ENV_FILES" value="" />
|
| 60 |
+
<option name="INTERPRETER_OPTIONS" value="" />
|
| 61 |
+
<option name="PARENT_ENVS" value="true" />
|
| 62 |
+
<envs>
|
| 63 |
+
<env name="PYTHONUNBUFFERED" value="1" />
|
| 64 |
+
</envs>
|
| 65 |
+
<option name="SDK_HOME" value="" />
|
| 66 |
+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
| 67 |
+
<option name="IS_MODULE_SDK" value="true" />
|
| 68 |
+
<option name="ADD_CONTENT_ROOTS" value="true" />
|
| 69 |
+
<option name="ADD_SOURCE_ROOTS" value="true" />
|
| 70 |
+
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
| 71 |
+
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/main.py" />
|
| 72 |
+
<option name="PARAMETERS" value="" />
|
| 73 |
+
<option name="SHOW_COMMAND_LINE" value="false" />
|
| 74 |
+
<option name="EMULATE_TERMINAL" value="false" />
|
| 75 |
+
<option name="MODULE_MODE" value="false" />
|
| 76 |
+
<option name="REDIRECT_INPUT" value="false" />
|
| 77 |
+
<option name="INPUT_FILE" value="" />
|
| 78 |
+
<method v="2" />
|
| 79 |
+
</configuration>
|
| 80 |
+
</component>
|
| 81 |
+
<component name="SharedIndexes">
|
| 82 |
+
<attachedChunks>
|
| 83 |
+
<set>
|
| 84 |
+
<option value="bundled-js-predefined-d6986cc7102b-5c90d61e3bab-JavaScript-PY-242.23726.102" />
|
| 85 |
+
<option value="bundled-python-sdk-5e1850174b45-399fe30bd8c1-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-242.23726.102" />
|
| 86 |
+
</set>
|
| 87 |
+
</attachedChunks>
|
| 88 |
+
</component>
|
| 89 |
+
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
| 90 |
+
<component name="TaskManager">
|
| 91 |
+
<task active="true" id="Default" summary="Default task">
|
| 92 |
+
<changelist id="d5879944-fd41-453b-9ce8-8ffb1872c926" name="Changes" comment="" />
|
| 93 |
+
<created>1741723843297</created>
|
| 94 |
+
<option name="number" value="Default" />
|
| 95 |
+
<option name="presentableId" value="Default" />
|
| 96 |
+
<updated>1741723843297</updated>
|
| 97 |
+
<workItem from="1741723845706" duration="7389000" />
|
| 98 |
+
</task>
|
| 99 |
+
<task id="LOCAL-00001" summary="Add PDF to Excel conversion with Gradio interface This commit introduces a Gradio-based application to convert financial PDFs into Brazilian-formatted Excel files. It extracts and processes structured data, ensures proper formatting, and allows users to upload PDFs and download the result seamlessly. Configuration for the Python SDK was also updated in project settings.">
|
| 100 |
+
<option name="closed" value="true" />
|
| 101 |
+
<created>1741724207474</created>
|
| 102 |
+
<option name="number" value="00001" />
|
| 103 |
+
<option name="presentableId" value="LOCAL-00001" />
|
| 104 |
+
<option name="project" value="LOCAL" />
|
| 105 |
+
<updated>1741724207474</updated>
|
| 106 |
+
</task>
|
| 107 |
+
<task id="LOCAL-00002" summary="Update data processing and Gradio UI outputs Added formatting adjustments for client names in the data pipeline and modified the function to return both the dataframe and file path. Updated Gradio UI to display a preview of extracted data alongside the downloadable file. Included IntelliJ project settings for Git Toolbox integration.">
|
| 108 |
+
<option name="closed" value="true" />
|
| 109 |
+
<created>1741726570668</created>
|
| 110 |
+
<option name="number" value="00002" />
|
| 111 |
+
<option name="presentableId" value="LOCAL-00002" />
|
| 112 |
+
<option name="project" value="LOCAL" />
|
| 113 |
+
<updated>1741726570668</updated>
|
| 114 |
+
</task>
|
| 115 |
+
<task id="LOCAL-00003" summary="Refine PDF processing and dynamic output generation. Introduced timestamped dynamic filenames for Excel outputs and enhanced pattern matching for key data extraction. Improved handling of "VLR.COMISSAO" by dynamically identifying valid monetary values, and updated "NOME DO CLIENTE" formatting logic to support edge cases. These changes ensure better reliability and flexibility in data processing.">
|
| 116 |
+
<option name="closed" value="true" />
|
| 117 |
+
<created>1741728036586</created>
|
| 118 |
+
<option name="number" value="00003" />
|
| 119 |
+
<option name="presentableId" value="LOCAL-00003" />
|
| 120 |
+
<option name="project" value="LOCAL" />
|
| 121 |
+
<updated>1741728036586</updated>
|
| 122 |
+
</task>
|
| 123 |
+
<option name="localTasksCounter" value="4" />
|
| 124 |
+
<servers />
|
| 125 |
+
</component>
|
| 126 |
+
<component name="TypeScriptGeneratedFilesManager">
|
| 127 |
+
<option name="version" value="3" />
|
| 128 |
+
</component>
|
| 129 |
+
<component name="VcsManagerConfiguration">
|
| 130 |
+
<MESSAGE value="Add PDF to Excel conversion with Gradio interface This commit introduces a Gradio-based application to convert financial PDFs into Brazilian-formatted Excel files. It extracts and processes structured data, ensures proper formatting, and allows users to upload PDFs and download the result seamlessly. Configuration for the Python SDK was also updated in project settings." />
|
| 131 |
+
<MESSAGE value="Update data processing and Gradio UI outputs Added formatting adjustments for client names in the data pipeline and modified the function to return both the dataframe and file path. Updated Gradio UI to display a preview of extracted data alongside the downloadable file. Included IntelliJ project settings for Git Toolbox integration." />
|
| 132 |
+
<MESSAGE value="Refine PDF processing and dynamic output generation. Introduced timestamped dynamic filenames for Excel outputs and enhanced pattern matching for key data extraction. Improved handling of "VLR.COMISSAO" by dynamically identifying valid monetary values, and updated "NOME DO CLIENTE" formatting logic to support edge cases. These changes ensure better reliability and flexibility in data processing." />
|
| 133 |
+
<option name="LAST_COMMIT_MESSAGE" value="Refine PDF processing and dynamic output generation. Introduced timestamped dynamic filenames for Excel outputs and enhanced pattern matching for key data extraction. Improved handling of "VLR.COMISSAO" by dynamically identifying valid monetary values, and updated "NOME DO CLIENTE" formatting logic to support edge cases. These changes ensure better reliability and flexibility in data processing." />
|
| 134 |
+
</component>
|
| 135 |
+
<component name="XDebuggerManager">
|
| 136 |
+
<breakpoint-manager>
|
| 137 |
+
<breakpoints>
|
| 138 |
+
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
| 139 |
+
<url>file://$PROJECT_DIR$/main.py</url>
|
| 140 |
+
<line>89</line>
|
| 141 |
+
<option name="timeStamp" value="1" />
|
| 142 |
+
</line-breakpoint>
|
| 143 |
+
</breakpoints>
|
| 144 |
+
</breakpoint-manager>
|
| 145 |
+
</component>
|
| 146 |
+
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
| 147 |
+
<SUITE FILE_PATH="coverage/unimoConvertPdfToExcel$main.coverage" NAME="main Coverage Results" MODIFIED="1741727988386" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
| 148 |
+
</component>
|
| 149 |
+
</project>
|
.venv/.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
.venv/.gitignore
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# created by virtualenv automatically
|
| 2 |
+
*
|
.venv/bin/__pycache__/dumppdf.cpython-312.pyc
ADDED
|
Binary file (19.3 kB). View file
|
|
|
.venv/bin/__pycache__/pdf2txt.cpython-312.pyc
ADDED
|
Binary file (11 kB). View file
|
|
|
.venv/bin/activate
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file must be used with "source bin/activate" *from bash*
|
| 2 |
+
# you cannot run it directly
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
if [ "${BASH_SOURCE-}" = "$0" ]; then
|
| 6 |
+
echo "You must source this script: \$ source $0" >&2
|
| 7 |
+
exit 33
|
| 8 |
+
fi
|
| 9 |
+
|
| 10 |
+
deactivate () {
|
| 11 |
+
unset -f pydoc >/dev/null 2>&1 || true
|
| 12 |
+
|
| 13 |
+
# reset old environment variables
|
| 14 |
+
# ! [ -z ${VAR+_} ] returns true if VAR is declared at all
|
| 15 |
+
if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then
|
| 16 |
+
PATH="$_OLD_VIRTUAL_PATH"
|
| 17 |
+
export PATH
|
| 18 |
+
unset _OLD_VIRTUAL_PATH
|
| 19 |
+
fi
|
| 20 |
+
if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
|
| 21 |
+
PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
|
| 22 |
+
export PYTHONHOME
|
| 23 |
+
unset _OLD_VIRTUAL_PYTHONHOME
|
| 24 |
+
fi
|
| 25 |
+
|
| 26 |
+
# The hash command must be called to get it to forget past
|
| 27 |
+
# commands. Without forgetting past commands the $PATH changes
|
| 28 |
+
# we made may not be respected
|
| 29 |
+
hash -r 2>/dev/null
|
| 30 |
+
|
| 31 |
+
if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
|
| 32 |
+
PS1="$_OLD_VIRTUAL_PS1"
|
| 33 |
+
export PS1
|
| 34 |
+
unset _OLD_VIRTUAL_PS1
|
| 35 |
+
fi
|
| 36 |
+
|
| 37 |
+
unset VIRTUAL_ENV
|
| 38 |
+
unset VIRTUAL_ENV_PROMPT
|
| 39 |
+
if [ ! "${1-}" = "nondestructive" ] ; then
|
| 40 |
+
# Self destruct!
|
| 41 |
+
unset -f deactivate
|
| 42 |
+
fi
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
# unset irrelevant variables
|
| 46 |
+
deactivate nondestructive
|
| 47 |
+
|
| 48 |
+
VIRTUAL_ENV='/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv'
|
| 49 |
+
if ([ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ]) && $(command -v cygpath &> /dev/null) ; then
|
| 50 |
+
VIRTUAL_ENV=$(cygpath -u "$VIRTUAL_ENV")
|
| 51 |
+
fi
|
| 52 |
+
export VIRTUAL_ENV
|
| 53 |
+
|
| 54 |
+
_OLD_VIRTUAL_PATH="$PATH"
|
| 55 |
+
PATH="$VIRTUAL_ENV/bin:$PATH"
|
| 56 |
+
export PATH
|
| 57 |
+
|
| 58 |
+
if [ "x" != x ] ; then
|
| 59 |
+
VIRTUAL_ENV_PROMPT=""
|
| 60 |
+
else
|
| 61 |
+
VIRTUAL_ENV_PROMPT=$(basename "$VIRTUAL_ENV")
|
| 62 |
+
fi
|
| 63 |
+
export VIRTUAL_ENV_PROMPT
|
| 64 |
+
|
| 65 |
+
# unset PYTHONHOME if set
|
| 66 |
+
if ! [ -z "${PYTHONHOME+_}" ] ; then
|
| 67 |
+
_OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
|
| 68 |
+
unset PYTHONHOME
|
| 69 |
+
fi
|
| 70 |
+
|
| 71 |
+
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
|
| 72 |
+
_OLD_VIRTUAL_PS1="${PS1-}"
|
| 73 |
+
PS1="(${VIRTUAL_ENV_PROMPT}) ${PS1-}"
|
| 74 |
+
export PS1
|
| 75 |
+
fi
|
| 76 |
+
|
| 77 |
+
# Make sure to unalias pydoc if it's already there
|
| 78 |
+
alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true
|
| 79 |
+
|
| 80 |
+
pydoc () {
|
| 81 |
+
python -m pydoc "$@"
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
# The hash command must be called to get it to forget past
|
| 85 |
+
# commands. Without forgetting past commands the $PATH changes
|
| 86 |
+
# we made may not be respected
|
| 87 |
+
hash -r 2>/dev/null
|
.venv/bin/activate.csh
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file must be used with "source bin/activate.csh" *from csh*.
|
| 2 |
+
# You cannot run it directly.
|
| 3 |
+
# Created by Davide Di Blasi <davidedb@gmail.com>.
|
| 4 |
+
|
| 5 |
+
set newline='\
|
| 6 |
+
'
|
| 7 |
+
|
| 8 |
+
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'
|
| 9 |
+
|
| 10 |
+
# Unset irrelevant variables.
|
| 11 |
+
deactivate nondestructive
|
| 12 |
+
|
| 13 |
+
setenv VIRTUAL_ENV '/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv'
|
| 14 |
+
|
| 15 |
+
set _OLD_VIRTUAL_PATH="$PATH:q"
|
| 16 |
+
setenv PATH "$VIRTUAL_ENV:q/bin:$PATH:q"
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
if ('' != "") then
|
| 21 |
+
setenv VIRTUAL_ENV_PROMPT ''
|
| 22 |
+
else
|
| 23 |
+
setenv VIRTUAL_ENV_PROMPT "$VIRTUAL_ENV:t:q"
|
| 24 |
+
endif
|
| 25 |
+
|
| 26 |
+
if ( $?VIRTUAL_ENV_DISABLE_PROMPT ) then
|
| 27 |
+
if ( $VIRTUAL_ENV_DISABLE_PROMPT == "" ) then
|
| 28 |
+
set do_prompt = "1"
|
| 29 |
+
else
|
| 30 |
+
set do_prompt = "0"
|
| 31 |
+
endif
|
| 32 |
+
else
|
| 33 |
+
set do_prompt = "1"
|
| 34 |
+
endif
|
| 35 |
+
|
| 36 |
+
if ( $do_prompt == "1" ) then
|
| 37 |
+
# Could be in a non-interactive environment,
|
| 38 |
+
# in which case, $prompt is undefined and we wouldn't
|
| 39 |
+
# care about the prompt anyway.
|
| 40 |
+
if ( $?prompt ) then
|
| 41 |
+
set _OLD_VIRTUAL_PROMPT="$prompt:q"
|
| 42 |
+
if ( "$prompt:q" =~ *"$newline:q"* ) then
|
| 43 |
+
:
|
| 44 |
+
else
|
| 45 |
+
set prompt = '('"$VIRTUAL_ENV_PROMPT:q"') '"$prompt:q"
|
| 46 |
+
endif
|
| 47 |
+
endif
|
| 48 |
+
endif
|
| 49 |
+
|
| 50 |
+
unset env_name
|
| 51 |
+
unset do_prompt
|
| 52 |
+
|
| 53 |
+
alias pydoc python -m pydoc
|
| 54 |
+
|
| 55 |
+
rehash
|
.venv/bin/activate.fish
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*.
|
| 2 |
+
# Do not run it directly.
|
| 3 |
+
|
| 4 |
+
function _bashify_path -d "Converts a fish path to something bash can recognize"
|
| 5 |
+
set fishy_path $argv
|
| 6 |
+
set bashy_path $fishy_path[1]
|
| 7 |
+
for path_part in $fishy_path[2..-1]
|
| 8 |
+
set bashy_path "$bashy_path:$path_part"
|
| 9 |
+
end
|
| 10 |
+
echo $bashy_path
|
| 11 |
+
end
|
| 12 |
+
|
| 13 |
+
function _fishify_path -d "Converts a bash path to something fish can recognize"
|
| 14 |
+
echo $argv | tr ':' '\n'
|
| 15 |
+
end
|
| 16 |
+
|
| 17 |
+
function deactivate -d 'Exit virtualenv mode and return to the normal environment.'
|
| 18 |
+
# reset old environment variables
|
| 19 |
+
if test -n "$_OLD_VIRTUAL_PATH"
|
| 20 |
+
# https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling
|
| 21 |
+
if test (echo $FISH_VERSION | head -c 1) -lt 3
|
| 22 |
+
set -gx PATH (_fishify_path "$_OLD_VIRTUAL_PATH")
|
| 23 |
+
else
|
| 24 |
+
set -gx PATH $_OLD_VIRTUAL_PATH
|
| 25 |
+
end
|
| 26 |
+
set -e _OLD_VIRTUAL_PATH
|
| 27 |
+
end
|
| 28 |
+
|
| 29 |
+
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
|
| 30 |
+
set -gx PYTHONHOME "$_OLD_VIRTUAL_PYTHONHOME"
|
| 31 |
+
set -e _OLD_VIRTUAL_PYTHONHOME
|
| 32 |
+
end
|
| 33 |
+
|
| 34 |
+
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
|
| 35 |
+
and functions -q _old_fish_prompt
|
| 36 |
+
# Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`.
|
| 37 |
+
set -l fish_function_path
|
| 38 |
+
|
| 39 |
+
# Erase virtualenv's `fish_prompt` and restore the original.
|
| 40 |
+
functions -e fish_prompt
|
| 41 |
+
functions -c _old_fish_prompt fish_prompt
|
| 42 |
+
functions -e _old_fish_prompt
|
| 43 |
+
set -e _OLD_FISH_PROMPT_OVERRIDE
|
| 44 |
+
end
|
| 45 |
+
|
| 46 |
+
set -e VIRTUAL_ENV
|
| 47 |
+
set -e VIRTUAL_ENV_PROMPT
|
| 48 |
+
|
| 49 |
+
if test "$argv[1]" != 'nondestructive'
|
| 50 |
+
# Self-destruct!
|
| 51 |
+
functions -e pydoc
|
| 52 |
+
functions -e deactivate
|
| 53 |
+
functions -e _bashify_path
|
| 54 |
+
functions -e _fishify_path
|
| 55 |
+
end
|
| 56 |
+
end
|
| 57 |
+
|
| 58 |
+
# Unset irrelevant variables.
|
| 59 |
+
deactivate nondestructive
|
| 60 |
+
|
| 61 |
+
set -gx VIRTUAL_ENV '/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv'
|
| 62 |
+
|
| 63 |
+
# https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling
|
| 64 |
+
if test (echo $FISH_VERSION | head -c 1) -lt 3
|
| 65 |
+
set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH)
|
| 66 |
+
else
|
| 67 |
+
set -gx _OLD_VIRTUAL_PATH $PATH
|
| 68 |
+
end
|
| 69 |
+
set -gx PATH "$VIRTUAL_ENV"'/bin' $PATH
|
| 70 |
+
|
| 71 |
+
# Prompt override provided?
|
| 72 |
+
# If not, just use the environment name.
|
| 73 |
+
if test -n ''
|
| 74 |
+
set -gx VIRTUAL_ENV_PROMPT ''
|
| 75 |
+
else
|
| 76 |
+
set -gx VIRTUAL_ENV_PROMPT (basename "$VIRTUAL_ENV")
|
| 77 |
+
end
|
| 78 |
+
|
| 79 |
+
# Unset `$PYTHONHOME` if set.
|
| 80 |
+
if set -q PYTHONHOME
|
| 81 |
+
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
|
| 82 |
+
set -e PYTHONHOME
|
| 83 |
+
end
|
| 84 |
+
|
| 85 |
+
function pydoc
|
| 86 |
+
python -m pydoc $argv
|
| 87 |
+
end
|
| 88 |
+
|
| 89 |
+
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
|
| 90 |
+
# Copy the current `fish_prompt` function as `_old_fish_prompt`.
|
| 91 |
+
functions -c fish_prompt _old_fish_prompt
|
| 92 |
+
|
| 93 |
+
function fish_prompt
|
| 94 |
+
# Run the user's prompt first; it might depend on (pipe)status.
|
| 95 |
+
set -l prompt (_old_fish_prompt)
|
| 96 |
+
|
| 97 |
+
printf '(%s) ' $VIRTUAL_ENV_PROMPT
|
| 98 |
+
|
| 99 |
+
string join -- \n $prompt # handle multi-line prompts
|
| 100 |
+
end
|
| 101 |
+
|
| 102 |
+
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
|
| 103 |
+
end
|
.venv/bin/activate.nu
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# virtualenv activation module
|
| 2 |
+
# Activate with `overlay use activate.nu`
|
| 3 |
+
# Deactivate with `deactivate`, as usual
|
| 4 |
+
#
|
| 5 |
+
# To customize the overlay name, you can call `overlay use activate.nu as foo`,
|
| 6 |
+
# but then simply `deactivate` won't work because it is just an alias to hide
|
| 7 |
+
# the "activate" overlay. You'd need to call `overlay hide foo` manually.
|
| 8 |
+
|
| 9 |
+
export-env {
|
| 10 |
+
def is-string [x] {
|
| 11 |
+
($x | describe) == 'string'
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
def has-env [...names] {
|
| 15 |
+
$names | each {|n|
|
| 16 |
+
$n in $env
|
| 17 |
+
} | all {|i| $i == true}
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
# Emulates a `test -z`, but btter as it handles e.g 'false'
|
| 21 |
+
def is-env-true [name: string] {
|
| 22 |
+
if (has-env $name) {
|
| 23 |
+
# Try to parse 'true', '0', '1', and fail if not convertible
|
| 24 |
+
let parsed = (do -i { $env | get $name | into bool })
|
| 25 |
+
if ($parsed | describe) == 'bool' {
|
| 26 |
+
$parsed
|
| 27 |
+
} else {
|
| 28 |
+
not ($env | get -i $name | is-empty)
|
| 29 |
+
}
|
| 30 |
+
} else {
|
| 31 |
+
false
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
let virtual_env = '/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv'
|
| 36 |
+
let bin = 'bin'
|
| 37 |
+
|
| 38 |
+
let is_windows = ($nu.os-info.family) == 'windows'
|
| 39 |
+
let path_name = (if (has-env 'Path') {
|
| 40 |
+
'Path'
|
| 41 |
+
} else {
|
| 42 |
+
'PATH'
|
| 43 |
+
}
|
| 44 |
+
)
|
| 45 |
+
|
| 46 |
+
let venv_path = ([$virtual_env $bin] | path join)
|
| 47 |
+
let new_path = ($env | get $path_name | prepend $venv_path)
|
| 48 |
+
|
| 49 |
+
# If there is no default prompt, then use the env name instead
|
| 50 |
+
let virtual_env_prompt = (if ('' | is-empty) {
|
| 51 |
+
($virtual_env | path basename)
|
| 52 |
+
} else {
|
| 53 |
+
''
|
| 54 |
+
})
|
| 55 |
+
|
| 56 |
+
let new_env = {
|
| 57 |
+
$path_name : $new_path
|
| 58 |
+
VIRTUAL_ENV : $virtual_env
|
| 59 |
+
VIRTUAL_ENV_PROMPT : $virtual_env_prompt
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
let new_env = (if (is-env-true 'VIRTUAL_ENV_DISABLE_PROMPT') {
|
| 63 |
+
$new_env
|
| 64 |
+
} else {
|
| 65 |
+
# Creating the new prompt for the session
|
| 66 |
+
let virtual_prefix = $'(char lparen)($virtual_env_prompt)(char rparen) '
|
| 67 |
+
|
| 68 |
+
# Back up the old prompt builder
|
| 69 |
+
let old_prompt_command = (if (has-env 'PROMPT_COMMAND') {
|
| 70 |
+
$env.PROMPT_COMMAND
|
| 71 |
+
} else {
|
| 72 |
+
''
|
| 73 |
+
})
|
| 74 |
+
|
| 75 |
+
let new_prompt = (if (has-env 'PROMPT_COMMAND') {
|
| 76 |
+
if 'closure' in ($old_prompt_command | describe) {
|
| 77 |
+
{|| $'($virtual_prefix)(do $old_prompt_command)' }
|
| 78 |
+
} else {
|
| 79 |
+
{|| $'($virtual_prefix)($old_prompt_command)' }
|
| 80 |
+
}
|
| 81 |
+
} else {
|
| 82 |
+
{|| $'($virtual_prefix)' }
|
| 83 |
+
})
|
| 84 |
+
|
| 85 |
+
$new_env | merge {
|
| 86 |
+
PROMPT_COMMAND : $new_prompt
|
| 87 |
+
VIRTUAL_PREFIX : $virtual_prefix
|
| 88 |
+
}
|
| 89 |
+
})
|
| 90 |
+
|
| 91 |
+
# Environment variables that will be loaded as the virtual env
|
| 92 |
+
load-env $new_env
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
export alias pydoc = python -m pydoc
|
| 96 |
+
export alias deactivate = overlay hide activate
|
.venv/bin/activate.ps1
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
$script:THIS_PATH = $myinvocation.mycommand.path
|
| 2 |
+
$script:BASE_DIR = Split-Path (Resolve-Path "$THIS_PATH/..") -Parent
|
| 3 |
+
|
| 4 |
+
function global:deactivate([switch] $NonDestructive) {
|
| 5 |
+
if (Test-Path variable:_OLD_VIRTUAL_PATH) {
|
| 6 |
+
$env:PATH = $variable:_OLD_VIRTUAL_PATH
|
| 7 |
+
Remove-Variable "_OLD_VIRTUAL_PATH" -Scope global
|
| 8 |
+
}
|
| 9 |
+
|
| 10 |
+
if (Test-Path function:_old_virtual_prompt) {
|
| 11 |
+
$function:prompt = $function:_old_virtual_prompt
|
| 12 |
+
Remove-Item function:\_old_virtual_prompt
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
if ($env:VIRTUAL_ENV) {
|
| 16 |
+
Remove-Item env:VIRTUAL_ENV -ErrorAction SilentlyContinue
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
if ($env:VIRTUAL_ENV_PROMPT) {
|
| 20 |
+
Remove-Item env:VIRTUAL_ENV_PROMPT -ErrorAction SilentlyContinue
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
if (!$NonDestructive) {
|
| 24 |
+
# Self destruct!
|
| 25 |
+
Remove-Item function:deactivate
|
| 26 |
+
Remove-Item function:pydoc
|
| 27 |
+
}
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
function global:pydoc {
|
| 31 |
+
python -m pydoc $args
|
| 32 |
+
}
|
| 33 |
+
|
| 34 |
+
# unset irrelevant variables
|
| 35 |
+
deactivate -nondestructive
|
| 36 |
+
|
| 37 |
+
$VIRTUAL_ENV = $BASE_DIR
|
| 38 |
+
$env:VIRTUAL_ENV = $VIRTUAL_ENV
|
| 39 |
+
|
| 40 |
+
if ("" -ne "") {
|
| 41 |
+
$env:VIRTUAL_ENV_PROMPT = ""
|
| 42 |
+
}
|
| 43 |
+
else {
|
| 44 |
+
$env:VIRTUAL_ENV_PROMPT = $( Split-Path $env:VIRTUAL_ENV -Leaf )
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
New-Variable -Scope global -Name _OLD_VIRTUAL_PATH -Value $env:PATH
|
| 48 |
+
|
| 49 |
+
$env:PATH = "$env:VIRTUAL_ENV/bin:" + $env:PATH
|
| 50 |
+
if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) {
|
| 51 |
+
function global:_old_virtual_prompt {
|
| 52 |
+
""
|
| 53 |
+
}
|
| 54 |
+
$function:_old_virtual_prompt = $function:prompt
|
| 55 |
+
|
| 56 |
+
function global:prompt {
|
| 57 |
+
# Add the custom prefix to the existing prompt
|
| 58 |
+
$previous_prompt_value = & $function:_old_virtual_prompt
|
| 59 |
+
("(" + $env:VIRTUAL_ENV_PROMPT + ") " + $previous_prompt_value)
|
| 60 |
+
}
|
| 61 |
+
}
|
.venv/bin/activate_this.py
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
Activate virtualenv for current interpreter:
|
| 3 |
+
|
| 4 |
+
Use exec(open(this_file).read(), {'__file__': this_file}).
|
| 5 |
+
|
| 6 |
+
This can be used when you must use an existing Python interpreter, not the virtualenv bin/python.
|
| 7 |
+
""" # noqa: D415
|
| 8 |
+
from __future__ import annotations
|
| 9 |
+
|
| 10 |
+
import os
|
| 11 |
+
import site
|
| 12 |
+
import sys
|
| 13 |
+
|
| 14 |
+
try:
|
| 15 |
+
abs_file = os.path.abspath(__file__)
|
| 16 |
+
except NameError as exc:
|
| 17 |
+
msg = "You must use exec(open(this_file).read(), {'__file__': this_file}))"
|
| 18 |
+
raise AssertionError(msg) from exc
|
| 19 |
+
|
| 20 |
+
bin_dir = os.path.dirname(abs_file)
|
| 21 |
+
base = bin_dir[: -len("bin") - 1] # strip away the bin part from the __file__, plus the path separator
|
| 22 |
+
|
| 23 |
+
# prepend bin to PATH (this file is inside the bin directory)
|
| 24 |
+
os.environ["PATH"] = os.pathsep.join([bin_dir, *os.environ.get("PATH", "").split(os.pathsep)])
|
| 25 |
+
os.environ["VIRTUAL_ENV"] = base # virtual env is right above bin directory
|
| 26 |
+
os.environ["VIRTUAL_ENV_PROMPT"] = "" or os.path.basename(base) # noqa: SIM222
|
| 27 |
+
|
| 28 |
+
# add the virtual environments libraries to the host python import mechanism
|
| 29 |
+
prev_length = len(sys.path)
|
| 30 |
+
for lib in "../lib/python3.12/site-packages".split(os.pathsep):
|
| 31 |
+
path = os.path.realpath(os.path.join(bin_dir, lib))
|
| 32 |
+
site.addsitedir(path.decode("utf-8") if "" else path)
|
| 33 |
+
sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]
|
| 34 |
+
|
| 35 |
+
sys.real_prefix = sys.prefix
|
| 36 |
+
sys.prefix = base
|
.venv/bin/dumppdf.py
ADDED
|
@@ -0,0 +1,473 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
"""Extract pdf structure in XML format"""
|
| 3 |
+
import logging
|
| 4 |
+
import os.path
|
| 5 |
+
import re
|
| 6 |
+
import sys
|
| 7 |
+
from typing import Any, Container, Dict, Iterable, List, Optional, TextIO, Union, cast
|
| 8 |
+
from argparse import ArgumentParser
|
| 9 |
+
|
| 10 |
+
import pdfminer
|
| 11 |
+
from pdfminer.pdfdocument import PDFDocument, PDFNoOutlines, PDFXRefFallback
|
| 12 |
+
from pdfminer.pdfpage import PDFPage
|
| 13 |
+
from pdfminer.pdfparser import PDFParser
|
| 14 |
+
from pdfminer.pdftypes import PDFObjectNotFound, PDFValueError
|
| 15 |
+
from pdfminer.pdftypes import PDFStream, PDFObjRef, resolve1, stream_value
|
| 16 |
+
from pdfminer.psparser import PSKeyword, PSLiteral, LIT
|
| 17 |
+
from pdfminer.utils import isnumber
|
| 18 |
+
|
| 19 |
+
logging.basicConfig()
|
| 20 |
+
logger = logging.getLogger(__name__)
|
| 21 |
+
|
| 22 |
+
ESC_PAT = re.compile(r'[\000-\037&<>()"\042\047\134\177-\377]')
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
def escape(s: Union[str, bytes]) -> str:
|
| 26 |
+
if isinstance(s, bytes):
|
| 27 |
+
us = str(s, "latin-1")
|
| 28 |
+
else:
|
| 29 |
+
us = s
|
| 30 |
+
return ESC_PAT.sub(lambda m: "&#%d;" % ord(m.group(0)), us)
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def dumpxml(out: TextIO, obj: object, codec: Optional[str] = None) -> None:
|
| 34 |
+
if obj is None:
|
| 35 |
+
out.write("<null />")
|
| 36 |
+
return
|
| 37 |
+
|
| 38 |
+
if isinstance(obj, dict):
|
| 39 |
+
out.write('<dict size="%d">\n' % len(obj))
|
| 40 |
+
for (k, v) in obj.items():
|
| 41 |
+
out.write("<key>%s</key>\n" % k)
|
| 42 |
+
out.write("<value>")
|
| 43 |
+
dumpxml(out, v)
|
| 44 |
+
out.write("</value>\n")
|
| 45 |
+
out.write("</dict>")
|
| 46 |
+
return
|
| 47 |
+
|
| 48 |
+
if isinstance(obj, list):
|
| 49 |
+
out.write('<list size="%d">\n' % len(obj))
|
| 50 |
+
for v in obj:
|
| 51 |
+
dumpxml(out, v)
|
| 52 |
+
out.write("\n")
|
| 53 |
+
out.write("</list>")
|
| 54 |
+
return
|
| 55 |
+
|
| 56 |
+
if isinstance(obj, (str, bytes)):
|
| 57 |
+
out.write('<string size="%d">%s</string>' % (len(obj), escape(obj)))
|
| 58 |
+
return
|
| 59 |
+
|
| 60 |
+
if isinstance(obj, PDFStream):
|
| 61 |
+
if codec == "raw":
|
| 62 |
+
# Bug: writing bytes to text I/O. This will raise TypeError.
|
| 63 |
+
out.write(obj.get_rawdata()) # type: ignore [arg-type]
|
| 64 |
+
elif codec == "binary":
|
| 65 |
+
# Bug: writing bytes to text I/O. This will raise TypeError.
|
| 66 |
+
out.write(obj.get_data()) # type: ignore [arg-type]
|
| 67 |
+
else:
|
| 68 |
+
out.write("<stream>\n<props>\n")
|
| 69 |
+
dumpxml(out, obj.attrs)
|
| 70 |
+
out.write("\n</props>\n")
|
| 71 |
+
if codec == "text":
|
| 72 |
+
data = obj.get_data()
|
| 73 |
+
out.write('<data size="%d">%s</data>\n' % (len(data), escape(data)))
|
| 74 |
+
out.write("</stream>")
|
| 75 |
+
return
|
| 76 |
+
|
| 77 |
+
if isinstance(obj, PDFObjRef):
|
| 78 |
+
out.write('<ref id="%d" />' % obj.objid)
|
| 79 |
+
return
|
| 80 |
+
|
| 81 |
+
if isinstance(obj, PSKeyword):
|
| 82 |
+
# Likely bug: obj.name is bytes, not str
|
| 83 |
+
out.write("<keyword>%s</keyword>" % obj.name) # type: ignore [str-bytes-safe]
|
| 84 |
+
return
|
| 85 |
+
|
| 86 |
+
if isinstance(obj, PSLiteral):
|
| 87 |
+
# Likely bug: obj.name may be bytes, not str
|
| 88 |
+
out.write("<literal>%s</literal>" % obj.name) # type: ignore [str-bytes-safe]
|
| 89 |
+
return
|
| 90 |
+
|
| 91 |
+
if isnumber(obj):
|
| 92 |
+
out.write("<number>%s</number>" % obj)
|
| 93 |
+
return
|
| 94 |
+
|
| 95 |
+
raise TypeError(obj)
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
def dumptrailers(
|
| 99 |
+
out: TextIO, doc: PDFDocument, show_fallback_xref: bool = False
|
| 100 |
+
) -> None:
|
| 101 |
+
for xref in doc.xrefs:
|
| 102 |
+
if not isinstance(xref, PDFXRefFallback) or show_fallback_xref:
|
| 103 |
+
out.write("<trailer>\n")
|
| 104 |
+
dumpxml(out, xref.get_trailer())
|
| 105 |
+
out.write("\n</trailer>\n\n")
|
| 106 |
+
no_xrefs = all(isinstance(xref, PDFXRefFallback) for xref in doc.xrefs)
|
| 107 |
+
if no_xrefs and not show_fallback_xref:
|
| 108 |
+
msg = (
|
| 109 |
+
"This PDF does not have an xref. Use --show-fallback-xref if "
|
| 110 |
+
"you want to display the content of a fallback xref that "
|
| 111 |
+
"contains all objects."
|
| 112 |
+
)
|
| 113 |
+
logger.warning(msg)
|
| 114 |
+
return
|
| 115 |
+
|
| 116 |
+
|
| 117 |
+
def dumpallobjs(
|
| 118 |
+
out: TextIO,
|
| 119 |
+
doc: PDFDocument,
|
| 120 |
+
codec: Optional[str] = None,
|
| 121 |
+
show_fallback_xref: bool = False,
|
| 122 |
+
) -> None:
|
| 123 |
+
visited = set()
|
| 124 |
+
out.write("<pdf>")
|
| 125 |
+
for xref in doc.xrefs:
|
| 126 |
+
for objid in xref.get_objids():
|
| 127 |
+
if objid in visited:
|
| 128 |
+
continue
|
| 129 |
+
visited.add(objid)
|
| 130 |
+
try:
|
| 131 |
+
obj = doc.getobj(objid)
|
| 132 |
+
if obj is None:
|
| 133 |
+
continue
|
| 134 |
+
out.write('<object id="%d">\n' % objid)
|
| 135 |
+
dumpxml(out, obj, codec=codec)
|
| 136 |
+
out.write("\n</object>\n\n")
|
| 137 |
+
except PDFObjectNotFound as e:
|
| 138 |
+
print("not found: %r" % e)
|
| 139 |
+
dumptrailers(out, doc, show_fallback_xref)
|
| 140 |
+
out.write("</pdf>")
|
| 141 |
+
return
|
| 142 |
+
|
| 143 |
+
|
| 144 |
+
def dumpoutline(
|
| 145 |
+
outfp: TextIO,
|
| 146 |
+
fname: str,
|
| 147 |
+
objids: Any,
|
| 148 |
+
pagenos: Container[int],
|
| 149 |
+
password: str = "",
|
| 150 |
+
dumpall: bool = False,
|
| 151 |
+
codec: Optional[str] = None,
|
| 152 |
+
extractdir: Optional[str] = None,
|
| 153 |
+
) -> None:
|
| 154 |
+
fp = open(fname, "rb")
|
| 155 |
+
parser = PDFParser(fp)
|
| 156 |
+
doc = PDFDocument(parser, password)
|
| 157 |
+
pages = {
|
| 158 |
+
page.pageid: pageno
|
| 159 |
+
for (pageno, page) in enumerate(PDFPage.create_pages(doc), 1)
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
def resolve_dest(dest: object) -> Any:
|
| 163 |
+
if isinstance(dest, (str, bytes)):
|
| 164 |
+
dest = resolve1(doc.get_dest(dest))
|
| 165 |
+
elif isinstance(dest, PSLiteral):
|
| 166 |
+
dest = resolve1(doc.get_dest(dest.name))
|
| 167 |
+
if isinstance(dest, dict):
|
| 168 |
+
dest = dest["D"]
|
| 169 |
+
if isinstance(dest, PDFObjRef):
|
| 170 |
+
dest = dest.resolve()
|
| 171 |
+
return dest
|
| 172 |
+
|
| 173 |
+
try:
|
| 174 |
+
outlines = doc.get_outlines()
|
| 175 |
+
outfp.write("<outlines>\n")
|
| 176 |
+
for (level, title, dest, a, se) in outlines:
|
| 177 |
+
pageno = None
|
| 178 |
+
if dest:
|
| 179 |
+
dest = resolve_dest(dest)
|
| 180 |
+
pageno = pages[dest[0].objid]
|
| 181 |
+
elif a:
|
| 182 |
+
action = a
|
| 183 |
+
if isinstance(action, dict):
|
| 184 |
+
subtype = action.get("S")
|
| 185 |
+
if subtype and repr(subtype) == "/'GoTo'" and action.get("D"):
|
| 186 |
+
dest = resolve_dest(action["D"])
|
| 187 |
+
pageno = pages[dest[0].objid]
|
| 188 |
+
s = escape(title)
|
| 189 |
+
outfp.write('<outline level="{!r}" title="{}">\n'.format(level, s))
|
| 190 |
+
if dest is not None:
|
| 191 |
+
outfp.write("<dest>")
|
| 192 |
+
dumpxml(outfp, dest)
|
| 193 |
+
outfp.write("</dest>\n")
|
| 194 |
+
if pageno is not None:
|
| 195 |
+
outfp.write("<pageno>%r</pageno>\n" % pageno)
|
| 196 |
+
outfp.write("</outline>\n")
|
| 197 |
+
outfp.write("</outlines>\n")
|
| 198 |
+
except PDFNoOutlines:
|
| 199 |
+
pass
|
| 200 |
+
parser.close()
|
| 201 |
+
fp.close()
|
| 202 |
+
return
|
| 203 |
+
|
| 204 |
+
|
| 205 |
+
LITERAL_FILESPEC = LIT("Filespec")
|
| 206 |
+
LITERAL_EMBEDDEDFILE = LIT("EmbeddedFile")
|
| 207 |
+
|
| 208 |
+
|
| 209 |
+
def extractembedded(fname: str, password: str, extractdir: str) -> None:
|
| 210 |
+
def extract1(objid: int, obj: Dict[str, Any]) -> None:
|
| 211 |
+
filename = os.path.basename(obj.get("UF") or cast(bytes, obj.get("F")).decode())
|
| 212 |
+
fileref = obj["EF"].get("UF") or obj["EF"].get("F")
|
| 213 |
+
fileobj = doc.getobj(fileref.objid)
|
| 214 |
+
if not isinstance(fileobj, PDFStream):
|
| 215 |
+
error_msg = (
|
| 216 |
+
"unable to process PDF: reference for %r is not a "
|
| 217 |
+
"PDFStream" % filename
|
| 218 |
+
)
|
| 219 |
+
raise PDFValueError(error_msg)
|
| 220 |
+
if fileobj.get("Type") is not LITERAL_EMBEDDEDFILE:
|
| 221 |
+
raise PDFValueError(
|
| 222 |
+
"unable to process PDF: reference for %r "
|
| 223 |
+
"is not an EmbeddedFile" % (filename)
|
| 224 |
+
)
|
| 225 |
+
path = os.path.join(extractdir, "%.6d-%s" % (objid, filename))
|
| 226 |
+
if os.path.exists(path):
|
| 227 |
+
raise IOError("file exists: %r" % path)
|
| 228 |
+
print("extracting: %r" % path)
|
| 229 |
+
os.makedirs(os.path.dirname(path), exist_ok=True)
|
| 230 |
+
out = open(path, "wb")
|
| 231 |
+
out.write(fileobj.get_data())
|
| 232 |
+
out.close()
|
| 233 |
+
return
|
| 234 |
+
|
| 235 |
+
with open(fname, "rb") as fp:
|
| 236 |
+
parser = PDFParser(fp)
|
| 237 |
+
doc = PDFDocument(parser, password)
|
| 238 |
+
extracted_objids = set()
|
| 239 |
+
for xref in doc.xrefs:
|
| 240 |
+
for objid in xref.get_objids():
|
| 241 |
+
obj = doc.getobj(objid)
|
| 242 |
+
if (
|
| 243 |
+
objid not in extracted_objids
|
| 244 |
+
and isinstance(obj, dict)
|
| 245 |
+
and obj.get("Type") is LITERAL_FILESPEC
|
| 246 |
+
):
|
| 247 |
+
extracted_objids.add(objid)
|
| 248 |
+
extract1(objid, obj)
|
| 249 |
+
return
|
| 250 |
+
|
| 251 |
+
|
| 252 |
+
def dumppdf(
|
| 253 |
+
outfp: TextIO,
|
| 254 |
+
fname: str,
|
| 255 |
+
objids: Iterable[int],
|
| 256 |
+
pagenos: Container[int],
|
| 257 |
+
password: str = "",
|
| 258 |
+
dumpall: bool = False,
|
| 259 |
+
codec: Optional[str] = None,
|
| 260 |
+
extractdir: Optional[str] = None,
|
| 261 |
+
show_fallback_xref: bool = False,
|
| 262 |
+
) -> None:
|
| 263 |
+
fp = open(fname, "rb")
|
| 264 |
+
parser = PDFParser(fp)
|
| 265 |
+
doc = PDFDocument(parser, password)
|
| 266 |
+
if objids:
|
| 267 |
+
for objid in objids:
|
| 268 |
+
obj = doc.getobj(objid)
|
| 269 |
+
dumpxml(outfp, obj, codec=codec)
|
| 270 |
+
if pagenos:
|
| 271 |
+
for (pageno, page) in enumerate(PDFPage.create_pages(doc)):
|
| 272 |
+
if pageno in pagenos:
|
| 273 |
+
if codec:
|
| 274 |
+
for obj in page.contents:
|
| 275 |
+
obj = stream_value(obj)
|
| 276 |
+
dumpxml(outfp, obj, codec=codec)
|
| 277 |
+
else:
|
| 278 |
+
dumpxml(outfp, page.attrs)
|
| 279 |
+
if dumpall:
|
| 280 |
+
dumpallobjs(outfp, doc, codec, show_fallback_xref)
|
| 281 |
+
if (not objids) and (not pagenos) and (not dumpall):
|
| 282 |
+
dumptrailers(outfp, doc, show_fallback_xref)
|
| 283 |
+
fp.close()
|
| 284 |
+
if codec not in ("raw", "binary"):
|
| 285 |
+
outfp.write("\n")
|
| 286 |
+
return
|
| 287 |
+
|
| 288 |
+
|
| 289 |
+
def create_parser() -> ArgumentParser:
|
| 290 |
+
parser = ArgumentParser(description=__doc__, add_help=True)
|
| 291 |
+
parser.add_argument(
|
| 292 |
+
"files",
|
| 293 |
+
type=str,
|
| 294 |
+
default=None,
|
| 295 |
+
nargs="+",
|
| 296 |
+
help="One or more paths to PDF files.",
|
| 297 |
+
)
|
| 298 |
+
|
| 299 |
+
parser.add_argument(
|
| 300 |
+
"--version",
|
| 301 |
+
"-v",
|
| 302 |
+
action="version",
|
| 303 |
+
version="pdfminer.six v{}".format(pdfminer.__version__),
|
| 304 |
+
)
|
| 305 |
+
parser.add_argument(
|
| 306 |
+
"--debug",
|
| 307 |
+
"-d",
|
| 308 |
+
default=False,
|
| 309 |
+
action="store_true",
|
| 310 |
+
help="Use debug logging level.",
|
| 311 |
+
)
|
| 312 |
+
procedure_parser = parser.add_mutually_exclusive_group()
|
| 313 |
+
procedure_parser.add_argument(
|
| 314 |
+
"--extract-toc",
|
| 315 |
+
"-T",
|
| 316 |
+
default=False,
|
| 317 |
+
action="store_true",
|
| 318 |
+
help="Extract structure of outline",
|
| 319 |
+
)
|
| 320 |
+
procedure_parser.add_argument(
|
| 321 |
+
"--extract-embedded", "-E", type=str, help="Extract embedded files"
|
| 322 |
+
)
|
| 323 |
+
|
| 324 |
+
parse_params = parser.add_argument_group(
|
| 325 |
+
"Parser", description="Used during PDF parsing"
|
| 326 |
+
)
|
| 327 |
+
parse_params.add_argument(
|
| 328 |
+
"--page-numbers",
|
| 329 |
+
type=int,
|
| 330 |
+
default=None,
|
| 331 |
+
nargs="+",
|
| 332 |
+
help="A space-seperated list of page numbers to parse.",
|
| 333 |
+
)
|
| 334 |
+
parse_params.add_argument(
|
| 335 |
+
"--pagenos",
|
| 336 |
+
"-p",
|
| 337 |
+
type=str,
|
| 338 |
+
help="A comma-separated list of page numbers to parse. Included for "
|
| 339 |
+
"legacy applications, use --page-numbers for more idiomatic "
|
| 340 |
+
"argument entry.",
|
| 341 |
+
)
|
| 342 |
+
parse_params.add_argument(
|
| 343 |
+
"--objects",
|
| 344 |
+
"-i",
|
| 345 |
+
type=str,
|
| 346 |
+
help="Comma separated list of object numbers to extract",
|
| 347 |
+
)
|
| 348 |
+
parse_params.add_argument(
|
| 349 |
+
"--all",
|
| 350 |
+
"-a",
|
| 351 |
+
default=False,
|
| 352 |
+
action="store_true",
|
| 353 |
+
help="If the structure of all objects should be extracted",
|
| 354 |
+
)
|
| 355 |
+
parse_params.add_argument(
|
| 356 |
+
"--show-fallback-xref",
|
| 357 |
+
action="store_true",
|
| 358 |
+
help="Additionally show the fallback xref. Use this if the PDF "
|
| 359 |
+
"has zero or only invalid xref's. This setting is ignored if "
|
| 360 |
+
"--extract-toc or --extract-embedded is used.",
|
| 361 |
+
)
|
| 362 |
+
parse_params.add_argument(
|
| 363 |
+
"--password",
|
| 364 |
+
"-P",
|
| 365 |
+
type=str,
|
| 366 |
+
default="",
|
| 367 |
+
help="The password to use for decrypting PDF file.",
|
| 368 |
+
)
|
| 369 |
+
|
| 370 |
+
output_params = parser.add_argument_group(
|
| 371 |
+
"Output", description="Used during output generation."
|
| 372 |
+
)
|
| 373 |
+
output_params.add_argument(
|
| 374 |
+
"--outfile",
|
| 375 |
+
"-o",
|
| 376 |
+
type=str,
|
| 377 |
+
default="-",
|
| 378 |
+
help='Path to file where output is written. Or "-" (default) to '
|
| 379 |
+
"write to stdout.",
|
| 380 |
+
)
|
| 381 |
+
codec_parser = output_params.add_mutually_exclusive_group()
|
| 382 |
+
codec_parser.add_argument(
|
| 383 |
+
"--raw-stream",
|
| 384 |
+
"-r",
|
| 385 |
+
default=False,
|
| 386 |
+
action="store_true",
|
| 387 |
+
help="Write stream objects without encoding",
|
| 388 |
+
)
|
| 389 |
+
codec_parser.add_argument(
|
| 390 |
+
"--binary-stream",
|
| 391 |
+
"-b",
|
| 392 |
+
default=False,
|
| 393 |
+
action="store_true",
|
| 394 |
+
help="Write stream objects with binary encoding",
|
| 395 |
+
)
|
| 396 |
+
codec_parser.add_argument(
|
| 397 |
+
"--text-stream",
|
| 398 |
+
"-t",
|
| 399 |
+
default=False,
|
| 400 |
+
action="store_true",
|
| 401 |
+
help="Write stream objects as plain text",
|
| 402 |
+
)
|
| 403 |
+
|
| 404 |
+
return parser
|
| 405 |
+
|
| 406 |
+
|
| 407 |
+
def main(argv: Optional[List[str]] = None) -> None:
|
| 408 |
+
parser = create_parser()
|
| 409 |
+
args = parser.parse_args(args=argv)
|
| 410 |
+
|
| 411 |
+
if args.debug:
|
| 412 |
+
logging.getLogger().setLevel(logging.DEBUG)
|
| 413 |
+
|
| 414 |
+
if args.outfile == "-":
|
| 415 |
+
outfp = sys.stdout
|
| 416 |
+
else:
|
| 417 |
+
outfp = open(args.outfile, "w")
|
| 418 |
+
|
| 419 |
+
if args.objects:
|
| 420 |
+
objids = [int(x) for x in args.objects.split(",")]
|
| 421 |
+
else:
|
| 422 |
+
objids = []
|
| 423 |
+
|
| 424 |
+
if args.page_numbers:
|
| 425 |
+
pagenos = {x - 1 for x in args.page_numbers}
|
| 426 |
+
elif args.pagenos:
|
| 427 |
+
pagenos = {int(x) - 1 for x in args.pagenos.split(",")}
|
| 428 |
+
else:
|
| 429 |
+
pagenos = set()
|
| 430 |
+
|
| 431 |
+
password = args.password
|
| 432 |
+
|
| 433 |
+
if args.raw_stream:
|
| 434 |
+
codec: Optional[str] = "raw"
|
| 435 |
+
elif args.binary_stream:
|
| 436 |
+
codec = "binary"
|
| 437 |
+
elif args.text_stream:
|
| 438 |
+
codec = "text"
|
| 439 |
+
else:
|
| 440 |
+
codec = None
|
| 441 |
+
|
| 442 |
+
for fname in args.files:
|
| 443 |
+
if args.extract_toc:
|
| 444 |
+
dumpoutline(
|
| 445 |
+
outfp,
|
| 446 |
+
fname,
|
| 447 |
+
objids,
|
| 448 |
+
pagenos,
|
| 449 |
+
password=password,
|
| 450 |
+
dumpall=args.all,
|
| 451 |
+
codec=codec,
|
| 452 |
+
extractdir=None,
|
| 453 |
+
)
|
| 454 |
+
elif args.extract_embedded:
|
| 455 |
+
extractembedded(fname, password=password, extractdir=args.extract_embedded)
|
| 456 |
+
else:
|
| 457 |
+
dumppdf(
|
| 458 |
+
outfp,
|
| 459 |
+
fname,
|
| 460 |
+
objids,
|
| 461 |
+
pagenos,
|
| 462 |
+
password=password,
|
| 463 |
+
dumpall=args.all,
|
| 464 |
+
codec=codec,
|
| 465 |
+
extractdir=None,
|
| 466 |
+
show_fallback_xref=args.show_fallback_xref,
|
| 467 |
+
)
|
| 468 |
+
|
| 469 |
+
outfp.close()
|
| 470 |
+
|
| 471 |
+
|
| 472 |
+
if __name__ == "__main__":
|
| 473 |
+
main()
|
.venv/bin/f2py
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from numpy.f2py.f2py2e import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/fastapi
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from fastapi.cli import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/gradio
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from gradio.cli import cli
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(cli())
|
.venv/bin/httpx
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from httpx import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/huggingface-cli
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from huggingface_hub.commands.huggingface_cli import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/markdown-it
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from markdown_it.cli.parse import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/normalizer
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from charset_normalizer import cli
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(cli.cli_detect())
|
.venv/bin/numpy-config
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from numpy._configtool import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/pdf2txt.py
ADDED
|
@@ -0,0 +1,317 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
"""A command line tool for extracting text and images from PDF and
|
| 3 |
+
output it to plain text, html, xml or tags."""
|
| 4 |
+
import argparse
|
| 5 |
+
import logging
|
| 6 |
+
import sys
|
| 7 |
+
from typing import Any, Container, Iterable, List, Optional
|
| 8 |
+
|
| 9 |
+
import pdfminer.high_level
|
| 10 |
+
from pdfminer.layout import LAParams
|
| 11 |
+
from pdfminer.utils import AnyIO
|
| 12 |
+
|
| 13 |
+
logging.basicConfig()
|
| 14 |
+
|
| 15 |
+
OUTPUT_TYPES = ((".htm", "html"), (".html", "html"), (".xml", "xml"), (".tag", "tag"))
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def float_or_disabled(x: str) -> Optional[float]:
|
| 19 |
+
if x.lower().strip() == "disabled":
|
| 20 |
+
return None
|
| 21 |
+
try:
|
| 22 |
+
return float(x)
|
| 23 |
+
except ValueError:
|
| 24 |
+
raise argparse.ArgumentTypeError("invalid float value: {}".format(x))
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def extract_text(
|
| 28 |
+
files: Iterable[str] = [],
|
| 29 |
+
outfile: str = "-",
|
| 30 |
+
laparams: Optional[LAParams] = None,
|
| 31 |
+
output_type: str = "text",
|
| 32 |
+
codec: str = "utf-8",
|
| 33 |
+
strip_control: bool = False,
|
| 34 |
+
maxpages: int = 0,
|
| 35 |
+
page_numbers: Optional[Container[int]] = None,
|
| 36 |
+
password: str = "",
|
| 37 |
+
scale: float = 1.0,
|
| 38 |
+
rotation: int = 0,
|
| 39 |
+
layoutmode: str = "normal",
|
| 40 |
+
output_dir: Optional[str] = None,
|
| 41 |
+
debug: bool = False,
|
| 42 |
+
disable_caching: bool = False,
|
| 43 |
+
**kwargs: Any
|
| 44 |
+
) -> AnyIO:
|
| 45 |
+
if not files:
|
| 46 |
+
raise ValueError("Must provide files to work upon!")
|
| 47 |
+
|
| 48 |
+
if output_type == "text" and outfile != "-":
|
| 49 |
+
for override, alttype in OUTPUT_TYPES:
|
| 50 |
+
if outfile.endswith(override):
|
| 51 |
+
output_type = alttype
|
| 52 |
+
|
| 53 |
+
if outfile == "-":
|
| 54 |
+
outfp: AnyIO = sys.stdout
|
| 55 |
+
if sys.stdout.encoding is not None:
|
| 56 |
+
codec = "utf-8"
|
| 57 |
+
else:
|
| 58 |
+
outfp = open(outfile, "wb")
|
| 59 |
+
|
| 60 |
+
for fname in files:
|
| 61 |
+
with open(fname, "rb") as fp:
|
| 62 |
+
pdfminer.high_level.extract_text_to_fp(fp, **locals())
|
| 63 |
+
return outfp
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
def create_parser() -> argparse.ArgumentParser:
|
| 67 |
+
parser = argparse.ArgumentParser(description=__doc__, add_help=True)
|
| 68 |
+
parser.add_argument(
|
| 69 |
+
"files",
|
| 70 |
+
type=str,
|
| 71 |
+
default=None,
|
| 72 |
+
nargs="+",
|
| 73 |
+
help="One or more paths to PDF files.",
|
| 74 |
+
)
|
| 75 |
+
|
| 76 |
+
parser.add_argument(
|
| 77 |
+
"--version",
|
| 78 |
+
"-v",
|
| 79 |
+
action="version",
|
| 80 |
+
version="pdfminer.six v{}".format(pdfminer.__version__),
|
| 81 |
+
)
|
| 82 |
+
parser.add_argument(
|
| 83 |
+
"--debug",
|
| 84 |
+
"-d",
|
| 85 |
+
default=False,
|
| 86 |
+
action="store_true",
|
| 87 |
+
help="Use debug logging level.",
|
| 88 |
+
)
|
| 89 |
+
parser.add_argument(
|
| 90 |
+
"--disable-caching",
|
| 91 |
+
"-C",
|
| 92 |
+
default=False,
|
| 93 |
+
action="store_true",
|
| 94 |
+
help="If caching or resources, such as fonts, should be disabled.",
|
| 95 |
+
)
|
| 96 |
+
|
| 97 |
+
parse_params = parser.add_argument_group(
|
| 98 |
+
"Parser", description="Used during PDF parsing"
|
| 99 |
+
)
|
| 100 |
+
parse_params.add_argument(
|
| 101 |
+
"--page-numbers",
|
| 102 |
+
type=int,
|
| 103 |
+
default=None,
|
| 104 |
+
nargs="+",
|
| 105 |
+
help="A space-seperated list of page numbers to parse.",
|
| 106 |
+
)
|
| 107 |
+
parse_params.add_argument(
|
| 108 |
+
"--pagenos",
|
| 109 |
+
"-p",
|
| 110 |
+
type=str,
|
| 111 |
+
help="A comma-separated list of page numbers to parse. "
|
| 112 |
+
"Included for legacy applications, use --page-numbers "
|
| 113 |
+
"for more idiomatic argument entry.",
|
| 114 |
+
)
|
| 115 |
+
parse_params.add_argument(
|
| 116 |
+
"--maxpages",
|
| 117 |
+
"-m",
|
| 118 |
+
type=int,
|
| 119 |
+
default=0,
|
| 120 |
+
help="The maximum number of pages to parse.",
|
| 121 |
+
)
|
| 122 |
+
parse_params.add_argument(
|
| 123 |
+
"--password",
|
| 124 |
+
"-P",
|
| 125 |
+
type=str,
|
| 126 |
+
default="",
|
| 127 |
+
help="The password to use for decrypting PDF file.",
|
| 128 |
+
)
|
| 129 |
+
parse_params.add_argument(
|
| 130 |
+
"--rotation",
|
| 131 |
+
"-R",
|
| 132 |
+
default=0,
|
| 133 |
+
type=int,
|
| 134 |
+
help="The number of degrees to rotate the PDF "
|
| 135 |
+
"before other types of processing.",
|
| 136 |
+
)
|
| 137 |
+
|
| 138 |
+
la_params = LAParams() # will be used for defaults
|
| 139 |
+
la_param_group = parser.add_argument_group(
|
| 140 |
+
"Layout analysis", description="Used during layout analysis."
|
| 141 |
+
)
|
| 142 |
+
la_param_group.add_argument(
|
| 143 |
+
"--no-laparams",
|
| 144 |
+
"-n",
|
| 145 |
+
default=False,
|
| 146 |
+
action="store_true",
|
| 147 |
+
help="If layout analysis parameters should be ignored.",
|
| 148 |
+
)
|
| 149 |
+
la_param_group.add_argument(
|
| 150 |
+
"--detect-vertical",
|
| 151 |
+
"-V",
|
| 152 |
+
default=la_params.detect_vertical,
|
| 153 |
+
action="store_true",
|
| 154 |
+
help="If vertical text should be considered during layout analysis",
|
| 155 |
+
)
|
| 156 |
+
la_param_group.add_argument(
|
| 157 |
+
"--line-overlap",
|
| 158 |
+
type=float,
|
| 159 |
+
default=la_params.line_overlap,
|
| 160 |
+
help="If two characters have more overlap than this they "
|
| 161 |
+
"are considered to be on the same line. The overlap is specified "
|
| 162 |
+
"relative to the minimum height of both characters.",
|
| 163 |
+
)
|
| 164 |
+
la_param_group.add_argument(
|
| 165 |
+
"--char-margin",
|
| 166 |
+
"-M",
|
| 167 |
+
type=float,
|
| 168 |
+
default=la_params.char_margin,
|
| 169 |
+
help="If two characters are closer together than this margin they "
|
| 170 |
+
"are considered to be part of the same line. The margin is "
|
| 171 |
+
"specified relative to the width of the character.",
|
| 172 |
+
)
|
| 173 |
+
la_param_group.add_argument(
|
| 174 |
+
"--word-margin",
|
| 175 |
+
"-W",
|
| 176 |
+
type=float,
|
| 177 |
+
default=la_params.word_margin,
|
| 178 |
+
help="If two characters on the same line are further apart than this "
|
| 179 |
+
"margin then they are considered to be two separate words, and "
|
| 180 |
+
"an intermediate space will be added for readability. The margin "
|
| 181 |
+
"is specified relative to the width of the character.",
|
| 182 |
+
)
|
| 183 |
+
la_param_group.add_argument(
|
| 184 |
+
"--line-margin",
|
| 185 |
+
"-L",
|
| 186 |
+
type=float,
|
| 187 |
+
default=la_params.line_margin,
|
| 188 |
+
help="If two lines are close together they are considered to "
|
| 189 |
+
"be part of the same paragraph. The margin is specified "
|
| 190 |
+
"relative to the height of a line.",
|
| 191 |
+
)
|
| 192 |
+
la_param_group.add_argument(
|
| 193 |
+
"--boxes-flow",
|
| 194 |
+
"-F",
|
| 195 |
+
type=float_or_disabled,
|
| 196 |
+
default=la_params.boxes_flow,
|
| 197 |
+
help="Specifies how much a horizontal and vertical position of a "
|
| 198 |
+
"text matters when determining the order of lines. The value "
|
| 199 |
+
"should be within the range of -1.0 (only horizontal position "
|
| 200 |
+
"matters) to +1.0 (only vertical position matters). You can also "
|
| 201 |
+
"pass `disabled` to disable advanced layout analysis, and "
|
| 202 |
+
"instead return text based on the position of the bottom left "
|
| 203 |
+
"corner of the text box.",
|
| 204 |
+
)
|
| 205 |
+
la_param_group.add_argument(
|
| 206 |
+
"--all-texts",
|
| 207 |
+
"-A",
|
| 208 |
+
default=la_params.all_texts,
|
| 209 |
+
action="store_true",
|
| 210 |
+
help="If layout analysis should be performed on text in figures.",
|
| 211 |
+
)
|
| 212 |
+
|
| 213 |
+
output_params = parser.add_argument_group(
|
| 214 |
+
"Output", description="Used during output generation."
|
| 215 |
+
)
|
| 216 |
+
output_params.add_argument(
|
| 217 |
+
"--outfile",
|
| 218 |
+
"-o",
|
| 219 |
+
type=str,
|
| 220 |
+
default="-",
|
| 221 |
+
help="Path to file where output is written. "
|
| 222 |
+
'Or "-" (default) to write to stdout.',
|
| 223 |
+
)
|
| 224 |
+
output_params.add_argument(
|
| 225 |
+
"--output_type",
|
| 226 |
+
"-t",
|
| 227 |
+
type=str,
|
| 228 |
+
default="text",
|
| 229 |
+
help="Type of output to generate {text,html,xml,tag}.",
|
| 230 |
+
)
|
| 231 |
+
output_params.add_argument(
|
| 232 |
+
"--codec",
|
| 233 |
+
"-c",
|
| 234 |
+
type=str,
|
| 235 |
+
default="utf-8",
|
| 236 |
+
help="Text encoding to use in output file.",
|
| 237 |
+
)
|
| 238 |
+
output_params.add_argument(
|
| 239 |
+
"--output-dir",
|
| 240 |
+
"-O",
|
| 241 |
+
default=None,
|
| 242 |
+
help="The output directory to put extracted images in. If not given, "
|
| 243 |
+
"images are not extracted.",
|
| 244 |
+
)
|
| 245 |
+
output_params.add_argument(
|
| 246 |
+
"--layoutmode",
|
| 247 |
+
"-Y",
|
| 248 |
+
default="normal",
|
| 249 |
+
type=str,
|
| 250 |
+
help="Type of layout to use when generating html "
|
| 251 |
+
"{normal,exact,loose}. If normal,each line is"
|
| 252 |
+
" positioned separately in the html. If exact"
|
| 253 |
+
", each character is positioned separately in"
|
| 254 |
+
" the html. If loose, same result as normal "
|
| 255 |
+
"but with an additional newline after each "
|
| 256 |
+
"text line. Only used when output_type is html.",
|
| 257 |
+
)
|
| 258 |
+
output_params.add_argument(
|
| 259 |
+
"--scale",
|
| 260 |
+
"-s",
|
| 261 |
+
type=float,
|
| 262 |
+
default=1.0,
|
| 263 |
+
help="The amount of zoom to use when generating html file. "
|
| 264 |
+
"Only used when output_type is html.",
|
| 265 |
+
)
|
| 266 |
+
output_params.add_argument(
|
| 267 |
+
"--strip-control",
|
| 268 |
+
"-S",
|
| 269 |
+
default=False,
|
| 270 |
+
action="store_true",
|
| 271 |
+
help="Remove control statement from text. "
|
| 272 |
+
"Only used when output_type is xml.",
|
| 273 |
+
)
|
| 274 |
+
|
| 275 |
+
return parser
|
| 276 |
+
|
| 277 |
+
|
| 278 |
+
def parse_args(args: Optional[List[str]]) -> argparse.Namespace:
|
| 279 |
+
parsed_args = create_parser().parse_args(args=args)
|
| 280 |
+
|
| 281 |
+
# Propagate parsed layout parameters to LAParams object
|
| 282 |
+
if parsed_args.no_laparams:
|
| 283 |
+
parsed_args.laparams = None
|
| 284 |
+
else:
|
| 285 |
+
parsed_args.laparams = LAParams(
|
| 286 |
+
line_overlap=parsed_args.line_overlap,
|
| 287 |
+
char_margin=parsed_args.char_margin,
|
| 288 |
+
line_margin=parsed_args.line_margin,
|
| 289 |
+
word_margin=parsed_args.word_margin,
|
| 290 |
+
boxes_flow=parsed_args.boxes_flow,
|
| 291 |
+
detect_vertical=parsed_args.detect_vertical,
|
| 292 |
+
all_texts=parsed_args.all_texts,
|
| 293 |
+
)
|
| 294 |
+
|
| 295 |
+
if parsed_args.page_numbers:
|
| 296 |
+
parsed_args.page_numbers = {x - 1 for x in parsed_args.page_numbers}
|
| 297 |
+
|
| 298 |
+
if parsed_args.pagenos:
|
| 299 |
+
parsed_args.page_numbers = {int(x) - 1 for x in parsed_args.pagenos.split(",")}
|
| 300 |
+
|
| 301 |
+
if parsed_args.output_type == "text" and parsed_args.outfile != "-":
|
| 302 |
+
for override, alttype in OUTPUT_TYPES:
|
| 303 |
+
if parsed_args.outfile.endswith(override):
|
| 304 |
+
parsed_args.output_type = alttype
|
| 305 |
+
|
| 306 |
+
return parsed_args
|
| 307 |
+
|
| 308 |
+
|
| 309 |
+
def main(args: Optional[List[str]] = None) -> int:
|
| 310 |
+
parsed_args = parse_args(args)
|
| 311 |
+
outfp = extract_text(**vars(parsed_args))
|
| 312 |
+
outfp.close()
|
| 313 |
+
return 0
|
| 314 |
+
|
| 315 |
+
|
| 316 |
+
if __name__ == "__main__":
|
| 317 |
+
sys.exit(main())
|
.venv/bin/pdfplumber
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from pdfplumber.cli import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/pip
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from pip._internal.cli.main import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/pip-3.12
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from pip._internal.cli.main import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/pip3
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from pip._internal.cli.main import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/pip3.12
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from pip._internal.cli.main import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/pygmentize
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from pygments.cmdline import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/pypdfium2
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from pypdfium2.__main__ import cli_main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(cli_main())
|
.venv/bin/python
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:80ee2dd97bc26259d4e30853336f72ad38aa4aa0531bb196cc444d899422689d
|
| 3 |
+
size 152624
|
.venv/bin/python3
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:80ee2dd97bc26259d4e30853336f72ad38aa4aa0531bb196cc444d899422689d
|
| 3 |
+
size 152624
|
.venv/bin/python3.12
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:80ee2dd97bc26259d4e30853336f72ad38aa4aa0531bb196cc444d899422689d
|
| 3 |
+
size 152624
|
.venv/bin/ruff
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b7977225ec13b371d01e5da788125ecada8868bcb6bc05d307e493ae90fb4141
|
| 3 |
+
size 26503584
|
.venv/bin/tqdm
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from tqdm.cli import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/typer
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from typer.cli import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/upload_theme
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from gradio.themes.upload_theme import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/uvicorn
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from uvicorn.main import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/bin/websockets
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/Users/jsan0043/PycharmProjects/unimoConvertPdfToExcel/.venv/bin/python
|
| 2 |
+
# -*- coding: utf-8 -*-
|
| 3 |
+
import re
|
| 4 |
+
import sys
|
| 5 |
+
from websockets.cli import main
|
| 6 |
+
if __name__ == '__main__':
|
| 7 |
+
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
| 8 |
+
sys.exit(main())
|
.venv/lib/.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|