You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

pysubtypes

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pysubtypes - pypi Package Compare versions

Comparing version
0.3.13
to
0.3.14
+1
-1
PKG-INFO
Metadata-Version: 2.1
Name: pysubtypes
Version: 0.3.13
Version: 0.3.14
Summary: Provides subclasses for common python types with additional functionality and convenience methods.

@@ -5,0 +5,0 @@ Home-page: https://github.com/matthewgdv/subtypes

Metadata-Version: 2.1
Name: pysubtypes
Version: 0.3.13
Version: 0.3.14
Summary: Provides subclasses for common python types with additional functionality and convenience methods.

@@ -5,0 +5,0 @@ Home-page: https://github.com/matthewgdv/subtypes

from setuptools import setup, find_packages
from os import path
__version__ = "0.3.13"
__version__ = "0.3.14"

@@ -6,0 +6,0 @@ here = path.abspath(path.dirname(__file__))

@@ -14,2 +14,3 @@ from __future__ import annotations

from pandas.io.sql import SQLTable, pandasSQL_builder
from pandas.io.excel._xlsxwriter import _XlsxWriter
from pandas.core.indexes.base import Index

@@ -64,5 +65,3 @@ import numpy as np

def __init__(self, *args: Any, **kwargs: Any) -> None:
with self._using_parent_constructor():
super().__init__(*args, **kwargs)
self._clean_dtypes()
super().__init__(pd.DataFrame(*args, **kwargs).convert_dtypes())

@@ -73,4 +72,4 @@ def __repr__(self) -> str:

@property
def _constructor(self) -> Type[pd.DataFrame]:
return type(self) if self._using_own_constructor() else pd.DataFrame
def _constructor(self) -> Type[Frame]:
return type(self)

@@ -158,5 +157,4 @@ def is_nan(self, val: Any) -> bool:

def infer_dtypes(self) -> Frame:
"""Return a new Frame with newly inferred dtypes."""
return type(self)(self.to_dict())
def convert_dtypes(self) -> Frame:
return type(self)(super().convert_dtypes())

@@ -168,5 +166,5 @@ def fillna_as_none(self) -> Frame:

if col.isnull().any():
df[name] = col.astype(object)
df[name] = col.astype(object).where(pd.notnull(col), None)
return cast(Frame, df.where(df.notnull(), None))
return df

@@ -220,4 +218,3 @@ @_check_import_is_available

infer_range = Maybe(infer_range).else_(cls.DEFAULT_INFER_RANGE)
if infer_range:
if infer_range := Maybe(infer_range).else_(cls.DEFAULT_INFER_RANGE):
frame._infer_range(mode=infer_range)

@@ -253,14 +250,2 @@

def _using_own_constructor(self) -> bool:
return bool(object.__getattribute__(self, "_own_constructor_"))
def _use_own_constructor(self, own: bool) -> None:
object.__setattr__(self, "_own_constructor_", own)
@contextlib.contextmanager
def _using_parent_constructor(self) -> Iterator[None]:
self._use_own_constructor(False)
yield
self._use_own_constructor(True)
@classmethod

@@ -344,12 +329,2 @@ @_check_import_is_available

def _clean_dtypes(self) -> Frame:
self._clean_nullable_ints()
return self
def _clean_nullable_ints(self) -> None:
for name, col in self.iteritems():
if col.dtype.name == "float64":
if col.apply(lambda val: val is None or np.isnan(val) or val.is_integer()).all():
self[name] = col.astype("Int64")
def _infer_boolean_columns(self) -> None:

@@ -365,4 +340,4 @@ for name, col in self.iteritems():

def _write_to_excel(self, writer: ExcelWriter, sheet_name: str, index: bool, **kwargs: Any) -> None:
df, sheet_name = self.infer_dtypes(), Maybe(sheet_name).else_(self.DEFAULT_SHEET_NAME)
super(type(df), df).to_excel(writer.writer, sheet_name=sheet_name, index=index, **kwargs)
df, sheet_name = self.convert_dtypes(), Maybe(sheet_name).else_(self.DEFAULT_SHEET_NAME)
super(type(df), df).to_excel(writer, sheet_name=sheet_name, index=index, **kwargs)
df._table_from_sheet(writer[sheet_name])

@@ -395,15 +370,7 @@

class ExcelWriter:
class ExcelWriter(_XlsxWriter):
def __init__(self, filepath: PathLike) -> None:
self.writer = pd.ExcelWriter(os.fspath(filepath), engine="xlsxwriter", mode="w")
super().__init__(os.fspath(filepath), engine="xlsxwriter", mode="w")
def __enter__(self) -> ExcelWriter:
return self
def __exit__(self, ex_type: Any, ex_value: Any, ex_traceback: Any) -> None:
self.writer.save()
def __getitem__(self, sheet_name: str) -> Any:
# if self.writer.sheets is None:
# self.writer.add_worksheet(sheet_name)
return self.writer.sheets.get(sheet_name)
return self.sheets.get(sheet_name)

@@ -19,9 +19,6 @@ from __future__ import annotations

class Settings(Settings):
def __init__(self, raise_if_absent: bool = False) -> None:
self.raise_if_absent = raise_if_absent
raise_if_absent = False
settings = Settings()
def __init__(self, parent: List = None) -> None:
self.parent, self.settings = parent, self.Settings(raise_if_absent=type(self).settings.raise_if_absent)
self.parent, self.settings = parent, self.Settings()

@@ -113,7 +110,2 @@ def __call__(self, parent: List = None, raise_if_absent: bool = None) -> SliceAccessor:

class ListSettings(Settings):
def __init__(self) -> None:
self.slice, self.translator, self.recursive = SliceAccessor(), Translator.default, True
class BaseList(list):

@@ -191,6 +183,12 @@ """

"""
settings = ListSettings()
class Accessors(Settings):
slice = SliceAccessor
class Settings(Settings):
translator, recursive = Translator.default, True
def __init__(self, iterable: Iterable = None) -> None:
super().__init__(iterable) if iterable is not None else super().__init__()
self.settings = self.Settings()

@@ -197,0 +195,0 @@ if self.settings.recursive:

@@ -42,4 +42,3 @@ from __future__ import annotations

class Settings(Settings):
def __init__(self, dotall: bool = True, ignorecase: bool = True, multiline: bool = False):
self.dotall, self.ignorecase, self.multiline = dotall, ignorecase, multiline
dotall, ignorecase, multiline = True, True, False

@@ -71,6 +70,4 @@ def __repr__(self) -> str:

settings = Settings()
def __init__(self, parent: Str = None) -> None:
self.parent, self.settings = parent, self.settings.deepcopy()
self.parent, self.settings = parent, self.Settings()

@@ -117,9 +114,6 @@ def __call__(self, parent: Str = None, dotall: bool = None, ignorecase: bool = None, multiline: bool = None) -> RegexAccessor:

class Settings(Settings):
def __init__(self, tokenize: bool = False, partial: bool = False) -> None:
self.tokenize, self.partial = tokenize, partial
tokenize, partial = False, False
settings = Settings()
def __init__(self, parent: Str = None) -> None:
self.parent, self.settings = parent, self.settings.deepcopy()
self.parent, self.settings = parent, self.Settings()
self._determine_matcher()

@@ -156,14 +150,7 @@

class Settings(Settings):
def __init__(self, detect_acronyms: bool = True, acronyms: list = None) -> None:
self.detect_acronyms, self.acronyms = detect_acronyms, acronyms
settings = Settings()
def __init__(self, parent: Str = None) -> None:
self.parent, self.settings = parent, self.settings.deepcopy()
self.parent = parent
def __call__(self, parent: Str = None, detect_acronyms: bool = None, acronyms: list = None) -> CasingAccessor:
def __call__(self, parent: Str = None, acronyms: list = None) -> CasingAccessor:
self.parent = Maybe(parent).else_(self.parent)
self.settings.detect_acronyms = Maybe(detect_acronyms).else_(self.settings.detect)
self.settings.acronyms = Maybe(acronyms).else_(self.settings.acronyms)

@@ -174,31 +161,31 @@ return self

"""snake_case this Str"""
return type(self.parent)(case_conversion.snakecase(self.parent, detect_acronyms=self.settings.detect_acronyms, acronyms=self.settings.acronyms).strip("_"))
return type(self.parent)(case_conversion.snakecase(self.parent).strip("_"))
def camel(self) -> Str:
"""camelCase this Str"""
return type(self.parent)(case_conversion.camelcase(self.snake(), detect_acronyms=self.settings.detect_acronyms, acronyms=self.settings.acronyms))
return type(self.parent)(case_conversion.camelcase(self.snake()))
def pascal(self) -> Str:
"""PascalCase this Str"""
return type(self.parent)(case_conversion.pascalcase(self.snake(), detect_acronyms=self.settings.detect_acronyms, acronyms=self.settings.acronyms))
return type(self.parent)(case_conversion.pascalcase(self.snake()))
def dash(self) -> Str:
"""dash-case this Str"""
return type(self.parent)(case_conversion.dashcase(self.parent, detect_acronyms=self.settings.detect_acronyms, acronyms=self.settings.acronyms))
return type(self.parent)(case_conversion.dashcase(self.parent))
def constant(self) -> Str:
"""CONSTANT_CASE this Str"""
return type(self.parent)(case_conversion.constcase(self.parent, detect_acronyms=self.settings.detect_acronyms, acronyms=self.settings.acronyms))
return type(self.parent)(case_conversion.constcase(self.parent))
def dot(self) -> Str:
"""dot.case this Str"""
return type(self.parent)(case_conversion.dotcase(self.parent, detect_acronyms=self.settings.detect_acronyms, acronyms=self.settings.acronyms))
return type(self.parent)(case_conversion.dotcase(self.parent))
def slash(self) -> Str:
"""slash/case this Str"""
return type(self.parent)(case_conversion.slashcase(self.parent, detect_acronyms=self.settings.detect_acronyms, acronyms=self.settings.acronyms))
return type(self.parent)(case_conversion.slashcase(self.parent))
def backslash(self) -> Str:
"""backslash\\case this Str"""
return type(self.parent)(case_conversion.backslashcase(self.parent, detect_acronyms=self.settings.detect_acronyms, acronyms=self.settings.acronyms))
return type(self.parent)(case_conversion.backslashcase(self.parent))

@@ -221,9 +208,6 @@ def identifier(self) -> Str:

class Settings(Settings):
def __init__(self, raise_if_absent: bool = False) -> None:
self.raise_if_absent = raise_if_absent
raise_if_absent = False
settings = Settings()
def __init__(self, parent: Str = None) -> None:
self.parent, self.settings = parent, self.settings.deepcopy()
self.parent, self.settings = parent, self.Settings()

@@ -334,7 +318,2 @@ def __call__(self, parent: Str = None, raise_if_absent: bool = None) -> SliceAccessor:

class StrSettings(Settings):
def __init__(self) -> None:
self.re, self.case, self.slice, self.fuzzy = RegexAccessor.settings, CasingAccessor.settings, SliceAccessor.settings, FuzzyAccessor.settings
class BaseStr(str):

@@ -433,3 +412,4 @@ """An alternative implementation of collections.UserString that inherits directly from 'str'."""

settings = StrSettings()
class Accessors(Settings):
re, slice, fuzzy = RegexAccessor, SliceAccessor, FuzzyAccessor

@@ -436,0 +416,0 @@ @cached_property