
Research
Supply Chain Attack on Axios Pulls Malicious Dependency from npm
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.
qufe
Advanced tools
A comprehensive Python utility library for data processing, file handling, database management, and automation tasks
A comprehensive Python utility library for data processing, file handling, database management, and automation tasks.
Born from the need to streamline repetitive tasks in Jupyter Lab environments, qufe addresses common pain points encountered during interactive development and data exploration work.
# Install core functionality with no external dependencies
pip install qufe
Install only the features you need:
# Database operations (PostgreSQL)
pip install qufe[database]
# Data processing with pandas/numpy
pip install qufe[data]
# Web browser automation
pip install qufe[web]
# Screen capture and image processing
pip install qufe[vision]
qufe.base)qufe.texthandler, qufe.excludebracket)qufe.filehandler)qufe.dbhandler) - [database]qufe.pdhandler) - [data]qufe.wbhandler) - [web]qufe.interactionhandler) - [vision]import qufe
# See what's available
qufe.help()
# Check dependencies programmatically
status = qufe.check_dependencies()
print(status)
# Get installation commands for missing features
missing = qufe.get_missing_dependencies()
for module, command in missing.items():
print(f"{module}: {command}")
from qufe import base, texthandler, filehandler
# Timestamp handling with timezone
ts = base.TS('Asia/Seoul')
formatted = ts.get_ts_formatted(1640995200)
# File operations
fh = filehandler.FileHandler()
files = fh.get_tree('/path/to/directory')
# Text processing
data = [['Name', 'Age'], ['Alice', '25'], ['Bob', '30']]
texthandler.list_to_doku_wiki_table(data)
# Directory exploration
pf = filehandler.PathFinder('/starting/path')
root, dirs, files = pf.get_one_depth()
Option 1: .env file (Recommended)
# Create .env file in your project root
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=your_database
Option 2: Environment variables
export POSTGRES_USER=your_username
export POSTGRES_PASSWORD=your_password
# ... etc
Option 3: Direct parameters
from qufe.dbhandler import PostgreSQLHandler
# Use .env or environment variables
db = PostgreSQLHandler()
# Or specify directly
db = PostgreSQLHandler(
user='username',
password='password',
host='localhost',
port=5432,
db_name='database'
)
# Usage
databases = db.get_database_list()
tables = db.get_table_list()
results = db.execute_query("SELECT * FROM users LIMIT 5")
from qufe.pdhandler import PandasHandler
import pandas as pd
# Initialize handler with default settings
handler = PandasHandler()
# Or with default exclude columns for NA/empty checks
handler = PandasHandler(default_exclude_cols=['id', 'created_at'])
# Compare DataFrames
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'B': [5, 6], 'C': [7, 8]})
col_dict, comparison = handler.show_col_names([df1, df2])
# Find missing data
na_subset = handler.show_all_na(df1)
# Find problematic rows (uses default_exclude_cols if set)
problem_rows = handler.show_all_na_or_empty_rows(df1)
# Convert lists to tuples in DataFrame
df_with_lists = pd.DataFrame({'col1': [[1, 2], [3, 4]], 'col2': ['a', 'b']})
df_converted = handler.convert_list_to_tuple_in_df(df_with_lists)
from qufe.wbhandler import Firefox
# Start browser
browser = Firefox(private_mode=True)
browser.driver.get('https://example.com')
# Network monitoring
browser.inject_network_capture()
# ... perform actions ...
logs = browser.get_network_logs()
# Clean up
browser.quit_driver()
from qufe.interactionhandler import get_screenshot, display_image, get_color_boxes
# Capture screen
screenshot = get_screenshot(100, 100, 800, 600)
display_image(screenshot, is_bgra=True)
# Find colored regions
red_boxes = get_color_boxes(screenshot, (255, 0, 0), tolerance=0.1)
Each module provides detailed help information:
# General help
import qufe
qufe.help()
# Module-specific help
from qufe import dbhandler, pdhandler, wbhandler, interactionhandler
dbhandler.help() # Database operations guide
pdhandler.help() # pandas utilities guide
wbhandler.help() # Browser automation guide
interactionhandler.help() # Screen interaction guide
| Feature Group | Dependencies | Purpose |
|---|---|---|
database | sqlalchemy≥1.3.0, python-dotenv≥0.15.0 | PostgreSQL operations |
data | pandas≥1.1.0, numpy≥1.17.0 | Data processing |
web | selenium≥4.0.0 | Browser automation |
vision | opencv-python≥4.1.0, matplotlib≥3.1.0, pyautogui≥0.9.48, mss≥4.0.0 | Screen interaction |
jupyter | ipython≥6.0.0 | Notebook integration |
All versions are set to compatible minimums to avoid conflicts in existing environments.
qufe supports multiple database configuration methods:
.env file (Recommended): Works consistently across all environmentsThe .env approach is recommended because it:
Browser automation requires modern Selenium WebDriver:
help() functions in each moduleMIT License
.env files, never in source code.env to .gitignore to prevent credential leaksWhen using automation and web interaction features, we encourage:
These are personal choices, but we believe technology works best when used responsibly.
ImportError on module load:
# Check what's available
import qufe
qufe.check_dependencies()
Database connection issues:
# Check configuration
from qufe.dbhandler import help
help() # Shows configuration options
Browser automation problems:
# Check WebDriver status
from qufe.wbhandler import help
help() # Shows WebDriver requirements
help() on any moduleFAQs
A comprehensive Python utility library for data processing, file handling, database management, and automation tasks
We found that qufe demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.

Security News
TeamPCP is partnering with ransomware group Vect to turn open source supply chain attacks on tools like Trivy and LiteLLM into large-scale ransomware operations.