Skip to main content

No project description provided

Project description

Nonstring Collections

This package provides utilities for working with non-string iterable containers.

Module Functions

unique

This function will remove repeated items from arguments while preserving order.

>>> from nonstring import unique
>>> unique(1, 2, 3, 2, 3, 3, 1, 4, 2, 5, 5)
[1, 2, 3, 4, 5]
>>> unique(5, 5, 2, 4, 1, 3, 3, 2, 3, 2, 1)
[5, 2, 4, 1, 3]

It will treat a single argument as atomic (i.e., unseparable) unless the separable keyword is set to true.

>>> unique('aabac')
['aabac']
>>> unique('aabac', separable=True)
['a', 'b', 'c']

unwrap

This function will remove redundant outer lists and tuples.

It can unwrap numbers enclosed in increasingly deeper lists:

>>> from nonstring import unwrap
>>> cases = [[1], [[2]], [[[3]]], [[[[4]]]]]
>>> for case in cases:
...     print(unwrap(case))
... 
1
2
3
4

It preserves numbers and strings that are already unwrapped:

>>> unwrap(42)
42
>>> unwrap('string')
'string'

Passing a type to newtype ensures a result of that type:

>>> unwrap(42, newtype=tuple)
(42,)
>>> unwrap(42, newtype=list)
[42]
>>> unwrap([42], newtype=list)
[42]
>>> unwrap(([(42,)],), newtype=list)
[42]

It works with multiple wrapped elements:

>>> unwrap([1, 2])
[1, 2]
>>> unwrap([[1, 2]])
[1, 2]
>>> unwrap(['one', 'two'])
['one', 'two']
>>> unwrap([['one', 'two']])
['one', 'two']

It stops at an empty list or tuple:

>>> unwrap([])
[]
>>> unwrap(())
()
>>> unwrap(list())
[]
>>> unwrap(tuple())
()
>>> unwrap([[]])
[]
>>> unwrap([()])
()
>>> unwrap([], newtype=tuple)
()

wrap

This function will wrap the argument in a list, if necessary.

>>> from nonstring import wrap
>>> wrap(1)
[1]
>>> wrap([1])
[1]
>>> wrap((1,))
[1]
>>> wrap([[1]])
[[1]]

isseparable

This function will return True if the argument is iterable but is not string-like.

>>> from nonstring import isseparable
>>> isseparable('ab')
False
>>> isseparable(['a', 'b'])
True

Wrapper

An instance of this class represents an iterable collection with members that have meaning independent of any other members. When initialized with a "separable" object (e.g., a list, tuple, or set), the new instance will behave like the equivalent tuple. When initialized with a non-"separable" object, the new instance will behave like a tuple containing that object.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonstring-0.3.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

nonstring-0.3.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file nonstring-0.3.0.tar.gz.

File metadata

  • Download URL: nonstring-0.3.0.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.13 Linux/5.15.0-112-generic

File hashes

Hashes for nonstring-0.3.0.tar.gz
Algorithm Hash digest
SHA256 987ee664208ef1163dcdc8fc6f2428f0ca9704db1ea1bd931c12699a4d078701
MD5 1a0fd2c3302a7d2803297e40dfa8570f
BLAKE2b-256 509ecb1be4f870cf4fd4e453e3a295298211bcafe5c930c0d20e89cfb8f8aef6

See more details on using hashes here.

File details

Details for the file nonstring-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: nonstring-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.13 Linux/5.15.0-112-generic

File hashes

Hashes for nonstring-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cda4dfe54488978186d336286d27e4a9c3b78ca4426465efcd86f8a08e29030e
MD5 f6ab81a7958bbe3222be155a3e007363
BLAKE2b-256 f26c216bea2d9a5c025e5e430966d1371579969311ece26ffe1287be61f87f31

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page