Skip to content

Commit 67e0307

Browse files
committed
updated README, CHANGELOG, LICENSE and docs
1 parent a6329f3 commit 67e0307

File tree

11 files changed

+548
-109
lines changed

11 files changed

+548
-109
lines changed

CHANGELOG.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,78 @@
11
# Python String Utils Changelog
22

3+
## v1.0.0 (March 2020)
4+
5+
### Deprecations
6+
7+
We are in 2020 and finally old versions of Python have been
8+
[officially deprecated](https://www.python.org/doc/sunset-python-2/).
9+
So the following versions are **no longer supported**:
10+
11+
- 2.7.x
12+
- 3.3.x
13+
- 3.4.x
14+
15+
(suite tests are now being executed against all currently supported versions: 3.5, 3.6, 3.7 and 3.8)
16+
17+
### Added:
18+
19+
- `compress()`: compress strings into shorter ones that can be restored later on
20+
- `decompress()`: restore a previously compressed string
21+
- `roman_encode()`: encode integers/strings into roman number strings
22+
- `roman_decode()`: decode roman number into an integer
23+
- `roman_range()`: generator which returns roman numbers on each iteration
24+
- `asciify()`: Force string content to be ascii-only by translating all non-ascii chars into the closest possible
25+
representation
26+
- `is_ip_v4()`: checks only for v4 ips
27+
- `is_ip_v6()`: checks only for v6 ips
28+
- `is_isbn_13()`: checks if the given string is a valid ISBN 13
29+
- `is_isbn_10()`: checks if the given string is a valid ISBN 10
30+
- `is_isbn()`: checks if the given string is a valid ISBN (any version)
31+
- `is_number()`: checks if the given string is a valid number (either an integer or a decimal)
32+
- `is_integer()`: checks if the given string is a valid integer
33+
- `is_decimal()`: checks if the given string is a valid decimal
34+
- `booleanize()`: turns string into boolean based on its content
35+
- `strip_margin()`: remove left margin from multi line strings so you don't have to bother about indentation
36+
in your code (inspired by Scala)
37+
- `random_string()`: generates string of given size with random alpha-numeric chars
38+
- `secure_random_hex()`: generates hexadecimal string of the given bytes count using secure random generator
39+
40+
### Fixes
41+
42+
- `is_ip()` now checks both ip v4 (and validates 0-255 range) and ip v6
43+
(the previous implementation was really shallow, my apologies :P)
44+
- `is_json()` now considers as valid json array objects (eg. `is_json('[1, 2, 3]')` returns true now)
45+
- `prettify()` does not screw up urls or emails anymore (from now on it won't consider those as text to be formatted)
46+
- Solved deprecation warnings over invalid escape sequences in Python >= 3.7
47+
48+
### Changes
49+
50+
- Old module `string_utils.py` has been replaced by a package with submodules (`validation.py`, `manipulation.py`,
51+
`generation.py` and `errors.py`), anyway all the functions are still
52+
importable as before (`from string_utils import xxx`). Similarly `tests.py` has been refactored into a package
53+
with a module for each test case
54+
- `is_snake_case()` now considers as "snake case" strings with mixed upper and lower case characters, strings with
55+
leading or trailing underscores and string containing multiple underscores in sequence
56+
57+
### Improvements
58+
59+
- Added Python type hints to all functions arguments and return types
60+
(this is now feasible since the minimum supported Python version is the 3.5)
61+
- Each method that expect a valid string as input now will raise a more detailed `InvalidInputError` exception
62+
(eg: ***Expected "str", received "list"***)
63+
- `reverse()`, `shuffle()`, `prettify()` now raise the detailed `InvalidInputError` if input is not a valid string
64+
- String checks should now be a bit faster (switched from `.search()` to `.match()` in internal regex when the goal
65+
is to match the full string)
66+
- `is_palindrome()` algorithm has been redesigned to offer a faster check and better memory usage
67+
(only 2 chars are now being access at the same time instead of the whole string)
68+
- `slugify()` is now able to translate more non-ascii chars during the string conversion
69+
(it now makes use of the new extracted method `asciify()`)
70+
- `is_uuid()` has now a second parameter `allow_hex` that if true, considers as valid UUID hex value
71+
72+
---
73+
74+
75+
376
## v0.6.0
477

578
### Added:

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
The MIT License (MIT)
22

3-
Copyright (c) 2016 Davide Zanotti
3+
Copyright (c) 2016-2020 Davide Zanotti
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

MANIFEST

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
# file GENERATED by distutils, do NOT edit
22
README.md
33
setup.py
4-
string_utils.py

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy