Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
41 changes: 41 additions & 0 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python package

on:
push:
branches: ["main"]
pull_request:
branches: ["main"]

permissions:
contents: read
actions: write
packages: write

jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.13"]

steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install flake8
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
46 changes: 24 additions & 22 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,33 @@
name: filemac

on:
release:
types: [published]
release:
types: [published]

permissions:
contents: read
contents: read
actions: read
packages: read

jobs:
deploy:
deploy:
runs-on: ubuntu-latest

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: "3.x"

steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: Build package
run: python -m build
- name: Publish package
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: Build package
run: python -m build
- name: Publish package
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
39 changes: 39 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Ignore the entire src directory (if not needed)
src/**

# Ignore this .gitignore file itself (not necessary, but can be included for clarity)
#.gitignore

# Ignore Python cache directories
__pycache__/
*.py[cod]

# Ignore temporary files
*.egg-info
# Ignore build directories
**/build/
**/dist/

# Ignore IDE and editor files
.vscode/
.idea/
*.vscode/
*.idea/

# Ignore operating system files
.DS_Store
Thumbs.db

# Ignore log files
*.log

# Ignore node_modules (if applicable)
node_modules/

# Ignore virtual environment directories (if applicable)
env/
venv/
*.docx
*.doc
*~
*.db
2 changes: 2 additions & 0 deletions .kateproject.notes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
TODO:
Implement image extractor
84 changes: 84 additions & 0 deletions .pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "filemac"
version = "2.0.0" # Will be overridden by version.txt in setup.py unless removed from there
description = "Open source Python CLI toolkit for conversion, manipulation, analysis of files (All major file operations)"
readme = "README.md"
requires-python = ">=3.6"
license = { file = "LICENSE" }
authors = [
{ name = "wambua", email = "swskye17@gmail.com" },
]
keywords = [
"file-conversion",
"file-analysis",
"file-manipulation",
"ocr",
"image-conversion",
"audio_effects",
"voice_shift",
"pdf",
"docx",
]
classifiers = [
"Environment :: Console",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]

dependencies = [
"argparse",
"pdfminer.six",
"python-docx",
"python-pptx",
"gTTS",
"pypandoc",
"fitz", # Consider replacing with "PyMuPDF" if that's what's actually used
"pydub",
"Pillow",
"pandas",
"opencv-python",
"pytesseract",
"PyPDF2",
"pdf2docx",
"requests",
"moviepy",
"reportlab",
"numpy",
"pdf2image",
"openpyxl",
"rich",
"tqdm",
"ffmpeg-python",
"librosa",
"python-magic",
"matplotlib",
"soundfile",
"SpeechRecognition",
"colorama",
"scipy",
"PyMuPDF",
"pyautogui",
"imageio",
"pynput",
"pyaudio",
"frontend",
]

[project.urls]
Homepage = "https://pypi.org/project/filemac/"
Source = "https://github.com/skye-cyber/filemac"
Issues = "https://github.com/skye-cyber/filemac/issues"

[project.scripts]
filemac = "filemac:main"
Filemac = "filemac:main"
FILEMAC = "filemac:main"
30 changes: 30 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#############################
# MANIFEST.in for “filemac” #
#############################

# ---------- Top‑level metadata ----------
include README.md
include LICENSE*
include version.txt

# ---------- Package‑wide data ----------
# (Any files your code loads at runtime – templates, models, config files…)
# recursive-include filemac/data *
# recursive-include filemac/templates *
# recursive-include filemac/static *

# ---------- Documentation (optional) ----------
# Comment out if you don’t publish docs with the package
# recursive-include docs *

# ---------- Type information (if you add stubs) ----------
# include py.typed

# ---------- Exclude common cruft ----------
exclude *.py[cod] __pycache__ *.so *.dll *.dylib
prune build
prune dist
prune .git
prune .idea
prune .pytest_cache
prune .~
Loading
Loading