Skip to main content

Makes Python Swifty

Project description

Swifpy makes Python Swifty. It provides some types which have similar APIs with Swift’s.

from swifpy import Array, Dictionary, Int, Optional, Some, String

array: Array[Int] = Array([2, 3, 5])
squared: Array[Int] = array.map(lambda x: x * x)  # [4, 9, 25]
count: Int = array.count  # 3

dictionary: Dictionary[String, Int] = Dictionary({'a': 2, 'b': 3, 'c': 5})
a: Optional[Int] = dictionary['a']  # Optional(2)
b: Optional[Int] = dictionary['b']  # Optional(3)

sum: Optional[Int] = a.flat_map(lambda x: b.map(lambda y: x + y))  # Optional(5)

Usage

Bool, Float, Int, String

They are just type aliases of bool, float, int and str respectivly.

Array

from swifpy import Array, Int, Optional, Some

numbers: Array[Int] = Array([2, 3, 5])

second: Int = numbers[1]    # 3
count: Int = numbers.count  # 3

squared: Array[Int] = numbers.map(lambda x: x * x)             # [4, 9, 25]
odd: Array[Int] = numbers.filter(lambda x: x % 2 != 0)         # [3, 5]
sum: Array[Int] = numbers.reduce(0, lambda r, x: r + x)        # 10
twice: Array[Int] = numbers.flat_map(lambda x: Array([x, x]))  # [2, 2, 3, 3, 5, 5]

first: Optional[Int] = numbers.first  # Optional(2)
third: Optional[Int] = numbers.last   # Optional(5)

for number in numbers:
    print(number)

Dictionary

from swifpy import Dictionary, Int, Optional, Some, String

dictionary: Dictionary[String, Int] = Dictionary({'a': 2, 'b': 3, 'c': 5})

a: Optional[Int] = dictionary['a']  # Optional(2)
dictionary['d'] = 7
count: Int = dictionary.count  # 4

for key, value in dictionary:
    print("%s -> %d" % (key, value))

Optional

from swifpy import Int, Nil, Optional, Some, NilError

a: Optional[Int] = Some(2)
b: Optional[Int] = Some(3)
n: Optional[Int] = Nil

if a:
    print('Reaches here.')

if not n:
    print('Reaches here.')

squared1: Optional[Int] = a.map(lambda x: x * x)                    # Optional(4)
squared2: Optional[Int] = n.map(lambda x: x * x)                    # Nil
sum1: Optional[Int] = a.flat_map(lambda x: b.map(lambda y: x + y))  # Optional(5)
sum2: Optional[Int] = a.flat_map(lambda x: n.map(lambda y: x + y))  # Nil

unwrapped: Int = a.x  # `!` in Swift: `x` of e*x*clamation marks
_ = n.x  # NilError

# `??` in Swift: `q` of *q*uestion marks
coalesced1: Int = a.qq(0)  ## 2
coalesced2: Int = n.qq(0)  ## 0

License

The MIT License

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

swifpy-0.0.1.tar.gz (5.2 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page