From 0f5554d67dfb756c14c8e0aaec2b2052fe3db670 Mon Sep 17 00:00:00 2001 From: Adam Fourney Date: Sun, 9 Feb 2025 23:23:53 -0800 Subject: [PATCH] Moved everything to a packages subfolder. --- packages/markitdown/CODE_OF_CONDUCT.md | 9 + packages/markitdown/README.md | 178 ++++++++++++++++++ packages/markitdown/SECURITY.md | 41 ++++ packages/markitdown/SUPPORT.md | 25 +++ .../markitdown/pyproject.toml | 0 .../markitdown/src}/markitdown/__about__.py | 0 .../markitdown/src}/markitdown/__init__.py | 0 .../markitdown/src}/markitdown/__main__.py | 0 .../markitdown/src}/markitdown/_exceptions.py | 0 .../markitdown/src}/markitdown/_markitdown.py | 0 .../src}/markitdown/converters/__init__.py | 0 .../src}/markitdown/converters/_base.py | 0 .../converters/_bing_serp_converter.py | 0 .../converters/_doc_intel_converter.py | 0 .../markitdown/converters/_docx_converter.py | 0 .../markitdown/converters/_html_converter.py | 0 .../markitdown/converters/_image_converter.py | 0 .../markitdown/converters/_ipynb_converter.py | 0 .../markitdown/converters/_markdownify.py | 0 .../markitdown/converters/_media_converter.py | 0 .../markitdown/converters/_mp3_converter.py | 0 .../converters/_outlook_msg_converter.py | 0 .../markitdown/converters/_pdf_converter.py | 0 .../converters/_plain_text_converter.py | 0 .../markitdown/converters/_pptx_converter.py | 0 .../markitdown/converters/_rss_converter.py | 0 .../markitdown/converters/_wav_converter.py | 0 .../converters/_wikipedia_converter.py | 0 .../markitdown/converters/_xlsx_converter.py | 0 .../converters/_youtube_converter.py | 0 .../markitdown/converters/_zip_converter.py | 0 .../markitdown/src}/markitdown/py.typed | 0 .../markitdown/tests}/__init__.py | 0 .../markitdown/tests}/test_files/test.docx | Bin .../markitdown/tests}/test_files/test.jpg | Bin .../markitdown/tests}/test_files/test.json | 0 .../markitdown/tests}/test_files/test.pptx | Bin .../markitdown/tests}/test_files/test.xls | Bin .../markitdown/tests}/test_files/test.xlsx | Bin .../tests}/test_files/test_blog.html | 0 .../tests}/test_files/test_files.zip | Bin .../markitdown/tests}/test_files/test_llm.jpg | Bin .../tests}/test_files/test_mskanji.csv | 0 .../tests}/test_files/test_notebook.ipynb | 0 .../tests}/test_files/test_outlook_msg.msg | Bin .../markitdown/tests}/test_files/test_rss.xml | 0 .../tests}/test_files/test_serp.html | 0 .../tests}/test_files/test_wikipedia.html | 0 .../tests}/test_files/test_with_comment.docx | Bin .../markitdown/tests}/test_markitdown.py | 0 50 files changed, 253 insertions(+) create mode 100644 packages/markitdown/CODE_OF_CONDUCT.md create mode 100644 packages/markitdown/README.md create mode 100644 packages/markitdown/SECURITY.md create mode 100644 packages/markitdown/SUPPORT.md rename pyproject.toml => packages/markitdown/pyproject.toml (100%) rename {src => packages/markitdown/src}/markitdown/__about__.py (100%) rename {src => packages/markitdown/src}/markitdown/__init__.py (100%) rename {src => packages/markitdown/src}/markitdown/__main__.py (100%) rename {src => packages/markitdown/src}/markitdown/_exceptions.py (100%) rename {src => packages/markitdown/src}/markitdown/_markitdown.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/__init__.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_base.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_bing_serp_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_doc_intel_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_docx_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_html_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_image_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_ipynb_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_markdownify.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_media_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_mp3_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_outlook_msg_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_pdf_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_plain_text_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_pptx_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_rss_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_wav_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_wikipedia_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_xlsx_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_youtube_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/converters/_zip_converter.py (100%) rename {src => packages/markitdown/src}/markitdown/py.typed (100%) rename {tests => packages/markitdown/tests}/__init__.py (100%) rename {tests => packages/markitdown/tests}/test_files/test.docx (100%) rename {tests => packages/markitdown/tests}/test_files/test.jpg (100%) rename {tests => packages/markitdown/tests}/test_files/test.json (100%) rename {tests => packages/markitdown/tests}/test_files/test.pptx (100%) rename {tests => packages/markitdown/tests}/test_files/test.xls (100%) rename {tests => packages/markitdown/tests}/test_files/test.xlsx (100%) rename {tests => packages/markitdown/tests}/test_files/test_blog.html (100%) rename {tests => packages/markitdown/tests}/test_files/test_files.zip (100%) rename {tests => packages/markitdown/tests}/test_files/test_llm.jpg (100%) rename {tests => packages/markitdown/tests}/test_files/test_mskanji.csv (100%) rename {tests => packages/markitdown/tests}/test_files/test_notebook.ipynb (100%) rename {tests => packages/markitdown/tests}/test_files/test_outlook_msg.msg (100%) rename {tests => packages/markitdown/tests}/test_files/test_rss.xml (100%) rename {tests => packages/markitdown/tests}/test_files/test_serp.html (100%) rename {tests => packages/markitdown/tests}/test_files/test_wikipedia.html (100%) rename {tests => packages/markitdown/tests}/test_files/test_with_comment.docx (100%) rename {tests => packages/markitdown/tests}/test_markitdown.py (100%) diff --git a/packages/markitdown/CODE_OF_CONDUCT.md b/packages/markitdown/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..f9ba8cf --- /dev/null +++ b/packages/markitdown/CODE_OF_CONDUCT.md @@ -0,0 +1,9 @@ +# Microsoft Open Source Code of Conduct + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). + +Resources: + +- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns diff --git a/packages/markitdown/README.md b/packages/markitdown/README.md new file mode 100644 index 0000000..76a4d3f --- /dev/null +++ b/packages/markitdown/README.md @@ -0,0 +1,178 @@ +# MarkItDown + +[![PyPI](https://img.shields.io/pypi/v/markitdown.svg)](https://pypi.org/project/markitdown/) +![PyPI - Downloads](https://img.shields.io/pypi/dd/markitdown) +[![Built by AutoGen Team](https://img.shields.io/badge/Built%20by-AutoGen%20Team-blue)](https://github.com/microsoft/autogen) + + +MarkItDown is a utility for converting various files to Markdown (e.g., for indexing, text analysis, etc). +It supports: +- PDF +- PowerPoint +- Word +- Excel +- Images (EXIF metadata and OCR) +- Audio (EXIF metadata and speech transcription) +- HTML +- Text-based formats (CSV, JSON, XML) +- ZIP files (iterates over contents) + +To install MarkItDown, use pip: `pip install markitdown`. Alternatively, you can install it from the source: `pip install -e .` + +## Usage + +### Command-Line + +```bash +markitdown path-to-file.pdf > document.md +``` + +Or use `-o` to specify the output file: + +```bash +markitdown path-to-file.pdf -o document.md +``` + +To use Document Intelligence conversion: + +```bash +markitdown path-to-file.pdf -o document.md -d -e "" +``` + +You can also pipe content: + +```bash +cat path-to-file.pdf | markitdown +``` + +More information about how to set up an Azure Document Intelligence Resource can be found [here](https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/how-to-guides/create-document-intelligence-resource?view=doc-intel-4.0.0) + +### Python API + +Basic usage in Python: + +```python +from markitdown import MarkItDown + +md = MarkItDown() +result = md.convert("test.xlsx") +print(result.text_content) +``` + +Document Intelligence conversion in Python: + +```python +from markitdown import MarkItDown + +md = MarkItDown(docintel_endpoint="") +result = md.convert("test.pdf") +print(result.text_content) +``` + +To use Large Language Models for image descriptions, provide `llm_client` and `llm_model`: + +```python +from markitdown import MarkItDown +from openai import OpenAI + +client = OpenAI() +md = MarkItDown(llm_client=client, llm_model="gpt-4o") +result = md.convert("example.jpg") +print(result.text_content) +``` + +### Docker + +```sh +docker build -t markitdown:latest . +docker run --rm -i markitdown:latest < ~/your-file.pdf > output.md +``` +
+ +Batch Processing Multiple Files + +This example shows how to convert multiple files to markdown format in a single run. The script processes all supported files in a directory and creates corresponding markdown files. + + +```python convert.py +from markitdown import MarkItDown +from openai import OpenAI +import os +client = OpenAI(api_key="your-api-key-here") +md = MarkItDown(llm_client=client, llm_model="gpt-4o-2024-11-20") +supported_extensions = ('.pptx', '.docx', '.pdf', '.jpg', '.jpeg', '.png') +files_to_convert = [f for f in os.listdir('.') if f.lower().endswith(supported_extensions)] +for file in files_to_convert: + print(f"\nConverting {file}...") + try: + md_file = os.path.splitext(file)[0] + '.md' + result = md.convert(file) + with open(md_file, 'w') as f: + f.write(result.text_content) + + print(f"Successfully converted {file} to {md_file}") + except Exception as e: + print(f"Error converting {file}: {str(e)}") + +print("\nAll conversions completed!") +``` +2. Place the script in the same directory as your files +3. Install required packages: like openai +4. Run script ```bash python convert.py ``` + +Note that original files will remain unchanged and new markdown files are created with the same base name. + +
+ +## Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. + +When you submit a pull request, a CLA bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +### How to Contribute + +You can help by looking at issues or helping review PRs. Any issue or PR is welcome, but we have also marked some as 'open for contribution' and 'open for reviewing' to help facilitate community contributions. These are ofcourse just suggestions and you are welcome to contribute in any way you like. + + +
+ +| | All | Especially Needs Help from Community | +|-----------------------|------------------------------------------|------------------------------------------------------------------------------------------| +| **Issues** | [All Issues](https://github.com/microsoft/markitdown/issues) | [Issues open for contribution](https://github.com/microsoft/markitdown/issues?q=is%3Aissue+is%3Aopen+label%3A%22open+for+contribution%22) | +| **PRs** | [All PRs](https://github.com/microsoft/markitdown/pulls) | [PRs open for reviewing](https://github.com/microsoft/markitdown/pulls?q=is%3Apr+is%3Aopen+label%3A%22open+for+reviewing%22) | + +
+ +### Running Tests and Checks + +- Install `hatch` in your environment and run tests: + ```sh + pip install hatch # Other ways of installing hatch: https://hatch.pypa.io/dev/install/ + hatch shell + hatch test + ``` + + (Alternative) Use the Devcontainer which has all the dependencies installed: + ```sh + # Reopen the project in Devcontainer and run: + hatch test + ``` + +- Run pre-commit checks before submitting a PR: `pre-commit run --all-files` + +## Trademarks + +This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft +trademarks or logos is subject to and must follow +[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general). +Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. +Any use of third-party trademarks or logos are subject to those third-party's policies. diff --git a/packages/markitdown/SECURITY.md b/packages/markitdown/SECURITY.md new file mode 100644 index 0000000..b3c89ef --- /dev/null +++ b/packages/markitdown/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet) and [Xamarin](https://github.com/xamarin). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/security.md/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/security.md/msrc/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/security.md/msrc/pgp). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/security.md/msrc/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/security.md/cvd). + + diff --git a/packages/markitdown/SUPPORT.md b/packages/markitdown/SUPPORT.md new file mode 100644 index 0000000..291d4d4 --- /dev/null +++ b/packages/markitdown/SUPPORT.md @@ -0,0 +1,25 @@ +# TODO: The maintainer of this repo has not yet edited this file + +**REPO OWNER**: Do you want Customer Service & Support (CSS) support for this product/project? + +- **No CSS support:** Fill out this template with information about how to file issues and get help. +- **Yes CSS support:** Fill out an intake form at [aka.ms/onboardsupport](https://aka.ms/onboardsupport). CSS will work with/help you to determine next steps. +- **Not sure?** Fill out an intake as though the answer were "Yes". CSS will help you decide. + +*Then remove this first heading from this SUPPORT.MD file before publishing your repo.* + +# Support + +## How to file issues and get help + +This project uses GitHub Issues to track bugs and feature requests. Please search the existing +issues before filing new issues to avoid duplicates. For new issues, file your bug or +feature request as a new Issue. + +For help and questions about using this project, please **REPO MAINTAINER: INSERT INSTRUCTIONS HERE +FOR HOW TO ENGAGE REPO OWNERS OR COMMUNITY FOR HELP. COULD BE A STACK OVERFLOW TAG OR OTHER +CHANNEL. WHERE WILL YOU HELP PEOPLE?**. + +## Microsoft Support Policy + +Support for this **PROJECT or PRODUCT** is limited to the resources listed above. diff --git a/pyproject.toml b/packages/markitdown/pyproject.toml similarity index 100% rename from pyproject.toml rename to packages/markitdown/pyproject.toml diff --git a/src/markitdown/__about__.py b/packages/markitdown/src/markitdown/__about__.py similarity index 100% rename from src/markitdown/__about__.py rename to packages/markitdown/src/markitdown/__about__.py diff --git a/src/markitdown/__init__.py b/packages/markitdown/src/markitdown/__init__.py similarity index 100% rename from src/markitdown/__init__.py rename to packages/markitdown/src/markitdown/__init__.py diff --git a/src/markitdown/__main__.py b/packages/markitdown/src/markitdown/__main__.py similarity index 100% rename from src/markitdown/__main__.py rename to packages/markitdown/src/markitdown/__main__.py diff --git a/src/markitdown/_exceptions.py b/packages/markitdown/src/markitdown/_exceptions.py similarity index 100% rename from src/markitdown/_exceptions.py rename to packages/markitdown/src/markitdown/_exceptions.py diff --git a/src/markitdown/_markitdown.py b/packages/markitdown/src/markitdown/_markitdown.py similarity index 100% rename from src/markitdown/_markitdown.py rename to packages/markitdown/src/markitdown/_markitdown.py diff --git a/src/markitdown/converters/__init__.py b/packages/markitdown/src/markitdown/converters/__init__.py similarity index 100% rename from src/markitdown/converters/__init__.py rename to packages/markitdown/src/markitdown/converters/__init__.py diff --git a/src/markitdown/converters/_base.py b/packages/markitdown/src/markitdown/converters/_base.py similarity index 100% rename from src/markitdown/converters/_base.py rename to packages/markitdown/src/markitdown/converters/_base.py diff --git a/src/markitdown/converters/_bing_serp_converter.py b/packages/markitdown/src/markitdown/converters/_bing_serp_converter.py similarity index 100% rename from src/markitdown/converters/_bing_serp_converter.py rename to packages/markitdown/src/markitdown/converters/_bing_serp_converter.py diff --git a/src/markitdown/converters/_doc_intel_converter.py b/packages/markitdown/src/markitdown/converters/_doc_intel_converter.py similarity index 100% rename from src/markitdown/converters/_doc_intel_converter.py rename to packages/markitdown/src/markitdown/converters/_doc_intel_converter.py diff --git a/src/markitdown/converters/_docx_converter.py b/packages/markitdown/src/markitdown/converters/_docx_converter.py similarity index 100% rename from src/markitdown/converters/_docx_converter.py rename to packages/markitdown/src/markitdown/converters/_docx_converter.py diff --git a/src/markitdown/converters/_html_converter.py b/packages/markitdown/src/markitdown/converters/_html_converter.py similarity index 100% rename from src/markitdown/converters/_html_converter.py rename to packages/markitdown/src/markitdown/converters/_html_converter.py diff --git a/src/markitdown/converters/_image_converter.py b/packages/markitdown/src/markitdown/converters/_image_converter.py similarity index 100% rename from src/markitdown/converters/_image_converter.py rename to packages/markitdown/src/markitdown/converters/_image_converter.py diff --git a/src/markitdown/converters/_ipynb_converter.py b/packages/markitdown/src/markitdown/converters/_ipynb_converter.py similarity index 100% rename from src/markitdown/converters/_ipynb_converter.py rename to packages/markitdown/src/markitdown/converters/_ipynb_converter.py diff --git a/src/markitdown/converters/_markdownify.py b/packages/markitdown/src/markitdown/converters/_markdownify.py similarity index 100% rename from src/markitdown/converters/_markdownify.py rename to packages/markitdown/src/markitdown/converters/_markdownify.py diff --git a/src/markitdown/converters/_media_converter.py b/packages/markitdown/src/markitdown/converters/_media_converter.py similarity index 100% rename from src/markitdown/converters/_media_converter.py rename to packages/markitdown/src/markitdown/converters/_media_converter.py diff --git a/src/markitdown/converters/_mp3_converter.py b/packages/markitdown/src/markitdown/converters/_mp3_converter.py similarity index 100% rename from src/markitdown/converters/_mp3_converter.py rename to packages/markitdown/src/markitdown/converters/_mp3_converter.py diff --git a/src/markitdown/converters/_outlook_msg_converter.py b/packages/markitdown/src/markitdown/converters/_outlook_msg_converter.py similarity index 100% rename from src/markitdown/converters/_outlook_msg_converter.py rename to packages/markitdown/src/markitdown/converters/_outlook_msg_converter.py diff --git a/src/markitdown/converters/_pdf_converter.py b/packages/markitdown/src/markitdown/converters/_pdf_converter.py similarity index 100% rename from src/markitdown/converters/_pdf_converter.py rename to packages/markitdown/src/markitdown/converters/_pdf_converter.py diff --git a/src/markitdown/converters/_plain_text_converter.py b/packages/markitdown/src/markitdown/converters/_plain_text_converter.py similarity index 100% rename from src/markitdown/converters/_plain_text_converter.py rename to packages/markitdown/src/markitdown/converters/_plain_text_converter.py diff --git a/src/markitdown/converters/_pptx_converter.py b/packages/markitdown/src/markitdown/converters/_pptx_converter.py similarity index 100% rename from src/markitdown/converters/_pptx_converter.py rename to packages/markitdown/src/markitdown/converters/_pptx_converter.py diff --git a/src/markitdown/converters/_rss_converter.py b/packages/markitdown/src/markitdown/converters/_rss_converter.py similarity index 100% rename from src/markitdown/converters/_rss_converter.py rename to packages/markitdown/src/markitdown/converters/_rss_converter.py diff --git a/src/markitdown/converters/_wav_converter.py b/packages/markitdown/src/markitdown/converters/_wav_converter.py similarity index 100% rename from src/markitdown/converters/_wav_converter.py rename to packages/markitdown/src/markitdown/converters/_wav_converter.py diff --git a/src/markitdown/converters/_wikipedia_converter.py b/packages/markitdown/src/markitdown/converters/_wikipedia_converter.py similarity index 100% rename from src/markitdown/converters/_wikipedia_converter.py rename to packages/markitdown/src/markitdown/converters/_wikipedia_converter.py diff --git a/src/markitdown/converters/_xlsx_converter.py b/packages/markitdown/src/markitdown/converters/_xlsx_converter.py similarity index 100% rename from src/markitdown/converters/_xlsx_converter.py rename to packages/markitdown/src/markitdown/converters/_xlsx_converter.py diff --git a/src/markitdown/converters/_youtube_converter.py b/packages/markitdown/src/markitdown/converters/_youtube_converter.py similarity index 100% rename from src/markitdown/converters/_youtube_converter.py rename to packages/markitdown/src/markitdown/converters/_youtube_converter.py diff --git a/src/markitdown/converters/_zip_converter.py b/packages/markitdown/src/markitdown/converters/_zip_converter.py similarity index 100% rename from src/markitdown/converters/_zip_converter.py rename to packages/markitdown/src/markitdown/converters/_zip_converter.py diff --git a/src/markitdown/py.typed b/packages/markitdown/src/markitdown/py.typed similarity index 100% rename from src/markitdown/py.typed rename to packages/markitdown/src/markitdown/py.typed diff --git a/tests/__init__.py b/packages/markitdown/tests/__init__.py similarity index 100% rename from tests/__init__.py rename to packages/markitdown/tests/__init__.py diff --git a/tests/test_files/test.docx b/packages/markitdown/tests/test_files/test.docx similarity index 100% rename from tests/test_files/test.docx rename to packages/markitdown/tests/test_files/test.docx diff --git a/tests/test_files/test.jpg b/packages/markitdown/tests/test_files/test.jpg similarity index 100% rename from tests/test_files/test.jpg rename to packages/markitdown/tests/test_files/test.jpg diff --git a/tests/test_files/test.json b/packages/markitdown/tests/test_files/test.json similarity index 100% rename from tests/test_files/test.json rename to packages/markitdown/tests/test_files/test.json diff --git a/tests/test_files/test.pptx b/packages/markitdown/tests/test_files/test.pptx similarity index 100% rename from tests/test_files/test.pptx rename to packages/markitdown/tests/test_files/test.pptx diff --git a/tests/test_files/test.xls b/packages/markitdown/tests/test_files/test.xls similarity index 100% rename from tests/test_files/test.xls rename to packages/markitdown/tests/test_files/test.xls diff --git a/tests/test_files/test.xlsx b/packages/markitdown/tests/test_files/test.xlsx similarity index 100% rename from tests/test_files/test.xlsx rename to packages/markitdown/tests/test_files/test.xlsx diff --git a/tests/test_files/test_blog.html b/packages/markitdown/tests/test_files/test_blog.html similarity index 100% rename from tests/test_files/test_blog.html rename to packages/markitdown/tests/test_files/test_blog.html diff --git a/tests/test_files/test_files.zip b/packages/markitdown/tests/test_files/test_files.zip similarity index 100% rename from tests/test_files/test_files.zip rename to packages/markitdown/tests/test_files/test_files.zip diff --git a/tests/test_files/test_llm.jpg b/packages/markitdown/tests/test_files/test_llm.jpg similarity index 100% rename from tests/test_files/test_llm.jpg rename to packages/markitdown/tests/test_files/test_llm.jpg diff --git a/tests/test_files/test_mskanji.csv b/packages/markitdown/tests/test_files/test_mskanji.csv similarity index 100% rename from tests/test_files/test_mskanji.csv rename to packages/markitdown/tests/test_files/test_mskanji.csv diff --git a/tests/test_files/test_notebook.ipynb b/packages/markitdown/tests/test_files/test_notebook.ipynb similarity index 100% rename from tests/test_files/test_notebook.ipynb rename to packages/markitdown/tests/test_files/test_notebook.ipynb diff --git a/tests/test_files/test_outlook_msg.msg b/packages/markitdown/tests/test_files/test_outlook_msg.msg similarity index 100% rename from tests/test_files/test_outlook_msg.msg rename to packages/markitdown/tests/test_files/test_outlook_msg.msg diff --git a/tests/test_files/test_rss.xml b/packages/markitdown/tests/test_files/test_rss.xml similarity index 100% rename from tests/test_files/test_rss.xml rename to packages/markitdown/tests/test_files/test_rss.xml diff --git a/tests/test_files/test_serp.html b/packages/markitdown/tests/test_files/test_serp.html similarity index 100% rename from tests/test_files/test_serp.html rename to packages/markitdown/tests/test_files/test_serp.html diff --git a/tests/test_files/test_wikipedia.html b/packages/markitdown/tests/test_files/test_wikipedia.html similarity index 100% rename from tests/test_files/test_wikipedia.html rename to packages/markitdown/tests/test_files/test_wikipedia.html diff --git a/tests/test_files/test_with_comment.docx b/packages/markitdown/tests/test_files/test_with_comment.docx similarity index 100% rename from tests/test_files/test_with_comment.docx rename to packages/markitdown/tests/test_files/test_with_comment.docx diff --git a/tests/test_markitdown.py b/packages/markitdown/tests/test_markitdown.py similarity index 100% rename from tests/test_markitdown.py rename to packages/markitdown/tests/test_markitdown.py