Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 0 additions & 33 deletions .github/pull_request_template.md

This file was deleted.

2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.13-alpine
FROM python:3.11-alpine
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Dockerfile still references requirements.txt at lines 4-5, but this file is being deleted in this PR. The Dockerfile needs to be updated to use the new requirements-dev.txt file or another dependency management approach (such as Pipfile/Pipfile.lock), otherwise the Docker build will fail.

Copilot uses AI. Check for mistakes.
RUN mkdir /app
WORKDIR /app
COPY requirements.txt .
Expand Down
75 changes: 75 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#
# Pipfile for managing project dependencies
#
# References:
# - https://pipenv.pypa.io/en/latest/pipfile.html
#
[[source]]
# https://pipenv.pypa.io/en/latest/pipfile.html#packages-section
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[scripts]
# https://pipenv.pypa.io/en/latest/pipfile.html#packages-section

[packages]
# https://pipenv.pypa.io/en/latest/pipfile.html#packages-section
six = "*"
appdirs = "*"

[dev-packages]
# https://pipenv.pypa.io/en/latest/pipfile.html#packages-section
mypy = "*"
flake8 = "*"
pytest = "*"
black = "*"
isort = "*"
check-manifest = "*"
coverage = "*"
pycodestyle = "*"
pytest = "*"
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a duplicate entry for "pytest" in the dev-packages section (lines 25 and 31). One of these should be removed to avoid redundancy.

Suggested change
pytest = "*"

Copilot uses AI. Check for mistakes.
pytest-cov = "*"
pytest-html = "*"
pytest-json-report = "*"
tox = "*"
tox-travis = "*"
twine = "*"
wheel = "*"
sphinx = "*"
sphinxcontrib-napoleon = "*"
guzzle_sphinx_theme = "*"

[docs]
# https://pipenv.pypa.io/en/latest/pipfile.html#packages-section
sphinx = "*"
sphinxcontrib-napoleon = "*"
guzzle_sphinx_theme = "*"

[tests]
# https://pipenv.pypa.io/en/latest/pipfile.html#packages-section
check-manifest = "*"
coverage = "*"
pycodestyle = "*"
pytest = "*"
pytest-cov = "*"
pytest-html = "*"
pytest-json-report = "*"
tox = "*"
tox-travis = "*"
twine = "*"
wheel = "*"

[pipenv]
# https://pipenv.pypa.io/en/latest/pipfile.html#packages-section
allow_prereleases = true # Allow pre-release versions
disable_pip_input = true # Prevent pipenv from asking for input
install_search_all_sources = true # Search all sources when installing from lock
sort_pipfile = true # Sort packages alphabeticallyy
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a typo in line 68: "alphabeticallyy" should be "alphabetically" (with only one 'y' at the end).

Suggested change
sort_pipfile = true # Sort packages alphabeticallyy
sort_pipfile = true # Sort packages alphabetically

Copilot uses AI. Check for mistakes.

[requires]
python_version = "3.11.14"
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The python_version should specify a major.minor version (e.g., "3.11"), not a patch version (e.g., "3.11.14"). Pipenv's python_version field is intended for specifying the major.minor Python version, not the patch level. The patch version specification may cause issues with Pipenv's version matching.

Suggested change
python_version = "3.11.14"
python_version = "3.11"

Copilot uses AI. Check for mistakes.

# how to update Pipfile.lock:
# 1. pipenv lock --clear
# 2. pipenv install --dev
1,490 changes: 1,490 additions & 0 deletions Pipfile.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions pytest.ini
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ minversion = 7.0

; required plugins and version constraints
required_plugins =
pytest-cov>=6.1.1
pytest-html>=4.1.1
pytest-cov>=7.0.0
pytest-html>=4.2.0
pytest-json-report>=1.5.0

# cli arguments to pass to pytest
Expand Down
21 changes: 21 additions & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Updated by depupdate.py on 2026-02-05T22:27:06 by user
# Do not edit this section manually.
mypy==1.19.1
flake8==7.3.0
pytest==9.0.2
black==26.1.0
isort==7.0.0
check-manifest==0.51
coverage==7.13.3
pycodestyle==2.14.0
pytest==9.0.2
pytest-cov==7.0.0
pytest-html==4.2.0
pytest-json-report==1.5.0
tox==4.34.1
tox-travis==0.13
twine==6.2.0
wheel==0.46.3
sphinx==9.0.4
sphinxcontrib-napoleon==0.7
guzzle_sphinx_theme==0.7.11
4 changes: 0 additions & 4 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +0,0 @@
# Updated by depupdate.py on 2025-05-29T00:19:36 by user
# Do not edit this section manually.
six==1.17.0
appdirs==1.4.4
11 changes: 1 addition & 10 deletions scripts/depupdate.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from subprocess import CalledProcessError, PIPE, check_call, run

# script version
__version__ = "0.0.1"
__version__ = "0.0.2"

_SCRIPT_NAME = os.path.splitext(os.path.basename(__file__))[0]

Expand Down Expand Up @@ -96,13 +96,6 @@ def argument_parser(**kwargs):
required=False,
help="path to log file"
)
parser.add_argument(
"input",
nargs="?",
default="-",
type=_filetype_read,
help="program input"
)
parser.add_argument(
"-o", "--output",
action="store",
Expand Down Expand Up @@ -378,8 +371,6 @@ def main(*args):
prog, __version__, return_code
)

if args.input and not args.input.closed:
args.input.close()
if args.output and not args.output.closed:
args.output.close()

Expand Down
10 changes: 1 addition & 9 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ def __find_meta(filepath):

Args:
filepath (str): Path to the file.
**kwargs: Additional arguments for `open()`.

Returns:
dict: A dictionary containing the metadata.
Expand Down Expand Up @@ -263,14 +262,7 @@ def __readlines(filepath, **kwargs):
"tox-travis",
"twine",
"wheel"
],
":python_version==\"2.6\"": [
"ordereddict==1.1",
"simplejson==3.3.0"
],
":python_version==\"2.7\"": [
"ipaddress"
],
]
}

INCLUDE_PACKAGE_DATA = False
Expand Down
51 changes: 27 additions & 24 deletions skeleton/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,55 +8,58 @@
import logging
import sys
from datetime import datetime
from typing import Any, Dict, Optional

from .__version__ import __title__

# DATETIME CONSTANTS
EPOCH = datetime(1970, 1, 1)
ISO_DATETIME_STRING = "1970-01-01 00:00:00.000"
ISO_DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S.%f"
EPOCH: datetime = datetime(1970, 1, 1)
ISO_DATETIME_STRING: str = "1970-01-01 00:00:00.000"
ISO_DATETIME_FORMAT: str = "%Y-%m-%d %H:%M:%S.%f"

# CONNECTION DEFAULTS
DEFAULT_MAX_POOL_CONNECTIONS = 10
DEFAULT_RETRIES = 0
DEFAULT_POOL_TIMEOUT = None
DEFAULT_POOLBLOCK = False
DEFAULT_POOLSIZE = 10
DEFAULT_TIMEOUT = 60
DEFAULT_MAX_POOL_CONNECTIONS: int = 10
DEFAULT_RETRIES: int = 0
DEFAULT_POOL_TIMEOUT: Optional[int] = None
DEFAULT_POOLBLOCK: bool = False
DEFAULT_POOLSIZE: int = 10
DEFAULT_TIMEOUT: int = 60

# FILE DEFAULTS
DEFAULT_CHUNK_SIZE = 64 * 2 ** 10
DEFAULT_FILE_MODE_SUFFIX = "b" if sys.version_info[0] == 2 else ""
DEFAULT_FILE_WRITE_MODE = "w{0}".format(DEFAULT_FILE_MODE_SUFFIX)
DEFAULT_FILE_READ_MODE = "r{0}".format(DEFAULT_FILE_MODE_SUFFIX)
DEFAULT_CHUNK_SIZE: int = 64 * 2 ** 10
DEFAULT_FILE_MODE_SUFFIX: str = "b" if sys.version_info[0] == 2 else ""
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code still checks for Python 2 compatibility (sys.version_info[0] == 2) even though the PR removes Python 2.6 and 2.7 dependency blocks from setup.py and the project now targets Python 3.11. This check should be removed or updated since Python 2 is no longer supported by the project.

Copilot uses AI. Check for mistakes.
DEFAULT_FILE_WRITE_MODE: str = "w{0}".format(DEFAULT_FILE_MODE_SUFFIX)
DEFAULT_FILE_READ_MODE: str = "r{0}".format(DEFAULT_FILE_MODE_SUFFIX)

# LOGGING DEFAULTS
DEFAULT_LOGGER_NAME = __title__
DEFAULT_LOGGER_NAME: str = __title__

# LOGGING OPTIONS
LOGGING_DATEFMT = "%Y-%m-%d %H:%M:%S"
LOGGING_FILEMODE = "a+"
LOGGING_FILENAME = None
LOGGING_FORMAT = (
LOGGING_DATEFMT: str = "%Y-%m-%d %H:%M:%S"
LOGGING_FILEMODE: str = "a+"
LOGGING_FILENAME: Optional[str] = None
LOGGING_FORMAT: str = (
"(%(asctime)s) [%(levelname)s] "
"%(name)s.%(funcName)s(%(lineno)d): %(message)s"
)
LOGGING_LEVEL = logging.ERROR
LOGGING_STYLE = "%"
LOGGING_LEVELS = {
LOGGING_LEVEL: int = logging.ERROR
LOGGING_STYLE: str = "%"

LOGGING_LEVELS: Dict[int, str] = {
logging.NOTSET: "sample",
logging.DEBUG: "debug",
logging.INFO: "info",
logging.WARNING: "warning",
logging.ERROR: "error",
logging.FATAL: "fatal",
}
LOGGING_LEVELS_MAP = {

LOGGING_LEVELS_MAP: Dict[str, int] = {
LOGGING_LEVELS[lvl]: lvl
for lvl in LOGGING_LEVELS
}
LOGGING_DICT = {
# TODO: implement test(s)

LOGGING_DICT: Dict[str, Any] = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
Expand Down
Loading
Loading