🐍 A Python lib for (de)serializing Python objects to/from JSON

Overview

Python versions Downloads PyPI version Code Coverage Scrutinizer Code Quality

  • Turn Python objects into dicts or (json)strings and back
  • No changes required to your objects
  • Easily customizable and extendable
  • Works with dataclasses, attrs and POPOs

💗 this lib? Leave a ★ and tell your colleagues!

Example of a model to serialize:

>>> @dataclass
... class Person:
...    name: str
...    birthday: datetime
...
>>> p = Person('Guido van Rossum', birthday_guido)

Example of using jsons to serialize:

>>> out = jsons.dump(p)
>>> out
{'birthday': '1956-01-31T12:00:00Z', 'name': 'Guido van Rossum'}

Example of using jsons to deserialize:

>>> p2 = jsons.load(out, Person)
>>> p2
Person(name='Guido van Rossum', birthday=datetime.datetime(1956, 1, 31, 12, 0, tzinfo=datetime.timezone.utc))

Installation

pip install jsons

Usage

import jsons

some_instance = jsons.load(some_dict, SomeClass)  # Deserialization
some_dict = jsons.dump(some_instance)  # Serialization

In some cases, you have instances that contain other instances that need (de)serialization, for instance with lists or dicts. You can use the typing classes for this as is demonstrated below.

from typing import List, Tuple
import jsons

# For more complex deserialization with generic types, use the typing module
list_of_tuples = jsons.load(some_dict, List[Tuple[AClass, AnotherClass]])

(For more examples, see the FAQ)

Documentation

Meta

Recent updates

1.6.0

  • Feature: Support for Python3.10.
  • Feature: Support for attrs.

1.5.1

  • Bugfix: ZoneInfo failed to dump if attached to a datetime.

1.5.0

  • Feature: Support for ZoneInfo on Python3.9+.
  • Change: microseconds are no longer stripped by default (thanks to pietrodn).

1.4.2

  • Bugfix: get_origin did not work with python3.9+ parameterized collections (e.g. dict[str, str]).

1.4.1

  • Bugfix: Types of attributes that are not in the constructor were not properly looked for. See issue #128.

1.4.0

  • Feature: DefaultDicts can now be deserialized.
  • Feature: Dicts with any (hashable) key can now be dumped and loaded.
  • Feature: Suppress specific warnings.
  • Bugfix: Loading a verbose-serialized object in a list could sometimes deserialize that object as a parent class.
  • Bugfix: Unwanted stringification of NoneValues is now prevented in Optionals and Unions with NoneType.
  • Bugfix: Fixed a bug with postponed annotations and dataclasses. See also Issue34776.
  • Bugfix: Types of attributes that are not in the constructor are now looked for in annotations.

1.3.1

  • Bugfix: Fixed bug where classmethods were included in the serialized result.

1.3.0

  • Feature: Added warn_on_fail parameter to default_list_deserializer that allows to continue deserialization upon errors.
  • Feature: Added transform that can transform an object to an object of another type.
  • Feature: Added serializer and deserializer for pathlib.Path (thanks to alexmirrington).
  • Change: When loading a list fails, the error message now points to the failing index.
  • Bugfix: Fixed bug when dumping an object with an innerclass.

1.2.0

  • Bugfix: Fixed bug with postponed typehints (PEP-563).
  • Bugfix: Loading an invalid value targeting an optional did not raise.
  • Bugfix: Loading a dict did not properly pass key_transformers.
  • Bugfix: Loading a namedtuple did not properly use key_transformers.
  • Bugfix: Utilized __annotations__ in favor _field_types because of deprecation as of 3.8.

1.1.2

  • Feature: Added __version__ which can be imported from jsons
  • Bugfix: Dumping a tuple with ellipsis failed in strict mode.

1.1.1

  • Feature: Added a serializer for Union types.
  • Change: Exceptions are more clear upon deserialization failure (thanks to haluzpav).
  • Change: You can no longer announce a class with a custom name.
  • Bugfix: Fixed dumping optional attributes.
  • Bugfix: Dataclasses inheriting from JsonSerializable always dumped their attributes as if in strict mode.

1.1.0

  • Feature: Added strict parameter to dump to indicate that dumping a certain cls will ignore any extra data.
  • Feature: When using dump(obj, cls=x), x can now be any class (previously, only a class with __slots__).
  • Feature: Support for dumping Decimal (thanks to herdigiorgi).
  • Feature: Primitives are now cast if possible when dumping (e.g. dump(5, str)).
  • Feature: Dumping iterables with generic types (e.g. dump(obj, List[str])) will now dump with respect to that types (if strict)
  • Feature: The default_dict serializer now optionally accepts types: Optional[Dict[str, type]].
  • Change: Improved performance when dumping using strict=True (up to 4 times faster!).
  • Bugfix: set_validator with multiple types did not work.

1.0.0

  • Feature: Added a serializer/deserializer for time.
  • Feature: Added a serializer/deserializer for timezone.
  • Feature: Added a serializer/deserializer for timedelta.
  • Feature: Added a serializer/deserializer for date.
  • Bugfix: Dumping verbose did not store the types of dicts (Dict[K, V]).
  • Bugfix: Loading with List (no generic type) failed.
  • Bugfix: Loading with Dict (no generic type) failed.
  • Bugfix: Loading with Tuple (no generic type) failed.

Contributors

Special thanks to the following contributors of code, discussions or suggestions:

pietrodn, georgeharker, aecay, bibz, thijss, alexmirrington, tirkarthi, marksomething, herdigiorgi, jochembroekhoff, robinklaassen, ahmetkucuk, casparjespersen, cypreess, gastlich, jmolinski, haluzpav, finetuned89

Comments
  • Should dump be able to also pass class type to dictionary

    Should dump be able to also pass class type to dictionary

    Say I have a class inheritance structure, and I want to generically be able to dump/load with the correct class types in the inheritance structure.

    @dataclass
    class A(object):
        foo: int
    
    @dataclass
    class B(A):
        bar: int
    

    Assume that when loading, I do now know which class type it was dumped from. I would have to analyse the content to determine which class to load as, and then pass this to the cls property of jsons.load method.

    Would it make sense to implement an optional flag when dumping to a dictionary that contains information of what class type it was dumped as, that can then be used for loading?

    feature 
    opened by casparjespersen 15
  • Poor Performance on Serialization

    Poor Performance on Serialization

    It seems like serialization using jsons.dump(obj) is at least 10 times slower than writing custom serialization method to each class. In my case, obj was a nested dataclasses and data was in the order of 100MBs.

    I can pull up some numbers but I just wanted to start a discussion if this is a known issue and if so, what might cause this?

    performance 
    opened by ahmetkucuk 14
  • Wrongly serialized utc datetime

    Wrongly serialized utc datetime

    The datetime instance is wrongly serialized if initialized from utcnow(). Example:

    dt_local = datetime.datetime.now()
    print(dt_local)
    # >>> 2019-02-16 17:48:34.714603
    
    print(jsons.dump(dt_local))
    # >>> 2019-02-16T17:48:34+01:00
    
    dt_utc = datetime.datetime.utcnow()
    print(dt_utc)
    # >>> 2019-02-16 16:48:34.715108
    
    print(jsons.dump(dt_utc))
    # >>> 2019-02-16T16:48:34+01:00
    # this last one is clearly wrong
    
    feature 
    opened by haluzpav 10
  • Fix unspecified List deserialization

    Fix unspecified List deserialization

    This code:

    import jsons
    from typing import List
    
    jsons.load(["Hello", "World"], List)
    

    would fail with a: TypeError: 'NoneType' object is not callable.

    This is because the bare List type contains an __args__[0] which is a TypeVar, which is not callable when deserializing.

    This pull request fixed that by checking if the __args__[0] is actually usable and not just a bare TypeVar.

    opened by stan-janssen 7
  • 'mro' of 'type' object needs an argument

    'mro' of 'type' object needs an argument

    UserWarning: Failed to dump attribute "<class 'MyClassName'>" of object of type "MyType". Reason: descriptor 'mro' of 'type' object needs an argument. Ignoring the attribute.

    Hi there, I'm trying to switch to this from jsonpickle and am running into a case in which the above failure happens hundreds of times on a variety of nested objects. Any idea what the issue is?

    bug 
    opened by T-P-F 6
  • #160 list deserializer propagates fork_inst

    #160 list deserializer propagates fork_inst

    resolves #160 Other container serializers/deserializers don't seem to be affected by this bug, since they seem to already handle fork_inst correctly, though I haven't tested this.

    opened by patrickguenther 5
  • Allow get_type_hints to work with dataclasses where __init__ is created automatically and using delayed annotations

    Allow get_type_hints to work with dataclasses where __init__ is created automatically and using delayed annotations

    as per https://bugs.python.org/issue34776

    there can be issues when doing something like:

    from __future__ import annotations
    from typing import Optional, get_type_hints
    
    @dataclass
    class Foo:
       a: Optional[int]
    
    
    get_type_hints(Foo.__init__)
    
    

    will give

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3.7/typing.py", line 1001, in get_type_hints
        value = _eval_type(value, globalns, localns)
      File "/usr/lib/python3.7/typing.py", line 260, in _eval_type
        return t._evaluate(globalns, localns)
      File "/usr/lib/python3.7/typing.py", line 464, in _evaluate
        eval(self.__forward_code__, globalns, localns),
      File "<string>", line 1, in <module>
    NameError: name 'Optional' is not defined
    

    Which causes such classes not to be able to read in by jsons.

    A workaround is to ensure that get_type_hints has the module dict of the class available to it.

    opened by georgeharker 4
  • performance issues

    performance issues

    Hi there,

    Loading a 1Go JSON file may take a while. Using the standard JSON API with the same JSON file may take approximatively 35 seconds.

    with jsons: time~ 20min

        with open(json_path, "r") as json_file:
            content = json_file.readlines()
            json_data = jsons.loads(content[0], CustomObject)
    

    The readlines function take 2 or 3 seconds.

    with json: time~ 35s

        with open(json_path, "r") as json_file:
            content = json.load(json_file)
            json_data = CustomObject(**content)
    

    What I'm doing wrong ?

    performance 
    opened by hugoliv 4
  • `jsons.dumps(np.array([0]))` reaches maximum recursion depth

    `jsons.dumps(np.array([0]))` reaches maximum recursion depth

    import jsons
    import numpy as np
    jsons.dumps(np.array([0]))
    

    causes the following error message to repeat:

    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/anaconda3/lib/python3.7/site-packages/jsons/_main_impl.py", line 63, in dump
        return serializer(obj, cls=cls, **kwargs_)
      File "/usr/local/anaconda3/lib/python3.7/site-packages/jsons/serializers/default_object.py", line 56, in default_object_serializer
        **kwargs_)
      File "/usr/local/anaconda3/lib/python3.7/site-packages/jsons/serializers/default_dict.py", line 25, in default_dict_serializer
        strip_nulls=strip_nulls, **kwargs)
      File "/usr/local/anaconda3/lib/python3.7/site-packages/jsons/_main_impl.py", line 65, in dump
        raise SerializationError(str(err))
    jsons.exceptions.SerializationError: maximum recursion depth exceeded in comparison
    
    opened by shaunharker 4
  • Serializer of datetime with UTC

    Serializer of datetime with UTC

    Hi~, I using udatetime and jsons, the udatetime return UTC timezone is +00:00

    udatetime.utcnow()
    datetime.datetime(2019, 4, 12, 8, 31, 12, 471970, tzinfo=+00:00)
    

    So, is allow to add +00:00 to _datetime_offset_str in _datetime_impl.py ?

    if tzone.tzname(None) not in ('UTC', 'UTC+00:00'):
    

    edit to

    if tzone.tzname(None) not in ('UTC', 'UTC+00:00', '+00:00'):
    
    opened by abriko 4
  • Inherited class is lost while deserialization.

    Inherited class is lost while deserialization.

    Inherited class is lost while deserialization. In the example below, the object chmsg3 is serialized as a class ChatMessageSection with the weight attribute ('weight': 17, '-cls': 'main.ChatMessageSection'}]). But after deserialization the object becomes a ChatMessage.

    import jsons
    from dataclasses import dataclass
    from typing import List
    
    @dataclass
    class ChatUser:
        name: str
    
    @dataclass
    class ChatMessage:
        user: ChatUser
        msg_text: str
    
    @dataclass
    class ChatMessageSection(ChatMessage):
        weight: int
    
    @dataclass
    class ChatMessages:
        msg_list: List[ChatMessage]
    
    chmsg = ChatMessage(ChatUser("Thierry"), "Bonjour")
    chmsg2 = ChatMessage(ChatUser("Casimir"), "Hello")
    chmsg3 = ChatMessageSection(ChatUser("Leonard"), "Coucou", weight=17)
    chat_msgs = ChatMessages([chmsg, chmsg2, chmsg3])
    
    print(chat_msgs, end="\n\n")
    dumped = jsons.dump(chat_msgs, strip_microseconds=True, verbose=jsons.Verbosity.WITH_EVERYTHING)
    print(dumped, end="\n\n")
    instance = jsons.load(dumped)
    print(instance, end="\n\n")
    
    bug 
    opened by ThierryPfeiffer 4
  • DeserializationError: Invalid type:

    DeserializationError: Invalid type: "decimal.Decimal"

    Hey there,

    When "deserializating" a dictionary that contains a decimal.Decimal field, to a class that accepts that field as an int or a float, JSONS is throwing an exception:

    Traceback (most recent call last):
      File "testing-ground/decimal_jsons_test.py", line 19, in <module>
        a = jsons.load(dictionary, Something)
      File "testing-ground/env/lib/python3.10/site-packages/jsons/_load_impl.py", line 101, in load
        return _do_load(json_obj, deserializer, cls, initial, **kwargs_)
      File "testing-ground/env/lib/python3.10/site-packages/jsons/_load_impl.py", line 113, in _do_load
        result = deserializer(json_obj, cls, **kwargs)
      File "testing-ground/env/lib/python3.10/site-packages/jsons/deserializers/default_object.py", line 40, in default_object_deserializer
        constructor_args = _get_constructor_args(obj, cls, **kwargs)
      File "testing-ground/env/lib/python3.10/site-packages/jsons/deserializers/default_object.py", line 64, in _get_constructor_args
        key, value = _get_value_for_attr(obj=obj,
      File "testing-ground/env/lib/python3.10/site-packages/jsons/deserializers/default_object.py", line 94, in _get_value_for_attr
        result = sig_key, _get_value_from_obj(obj, cls, sig, sig_key,
      File "testing-ground/env/lib/python3.10/site-packages/jsons/deserializers/default_object.py", line 140, in _get_value_from_obj
        value = load(obj[sig_key], cls_, meta_hints=new_hints, **kwargs)
      File "testing-ground/env/lib/python3.10/site-packages/jsons/_load_impl.py", line 83, in load
        cls, meta_hints = _check_and_get_cls_and_meta_hints(
      File "testing-ground/env/lib/python3.10/site-packages/jsons/_load_impl.py", line 200, in _check_and_get_cls_and_meta_hints
        raise DeserializationError(msg, json_obj, cls)
    jsons.exceptions.DeserializationError: Invalid type: "decimal.Decimal", only arguments of the following types are allowed: str, int, float, bool, list, tuple, set, dict, NoneType
    

    But JSONS is capable of deserializing this dictionary just fine, we just need to modify the list of types it is supposed to be able to deserialize, here, we just need to add decimal.Decimal to the list of VALID_TYPES

    For this code:

    import jsons
    from decimal import Decimal
    from dataclasses import dataclass
    
    dictionary = {
        'value': Decimal(15.0)
    }
    
    @dataclass
    class Something:
        value: float
    
    a = jsons.load(dictionary, Something)
    print(a.value)
    

    Observed behavior: Jsons throws the above exception

    Expected behavior: a.value is initialized to 15.0

    Thanks

    opened by bziolo-dtiq 0
  • What's the key difference between `jsons` and `pydantic`?

    What's the key difference between `jsons` and `pydantic`?

    For serialization, one can export an instance of pydantic model to json

    from datetime import datetime
    from pydantic import BaseModel
    
    class BarModel(BaseModel):
        whatever: int
    
    class FooBarModel(BaseModel):
        foo: datetime
        bar: BarModel
    
    
    m = FooBarModel(foo=datetime(2032, 6, 1, 12, 13, 14), bar={'whatever': 123})
    print(m.json())
    #> {"foo": "2032-06-01T12:13:14", "bar": {"whatever": 123}}
    

    For deserialization, one can directly parse string into an instance of pydantic model

    from datetime import datetime
    from pydantic import BaseModel
    
    class User(BaseModel):
        id: int
        name = 'John Doe'
        signup_ts: datetime = None
    
    m = User.parse_raw('{"id": 123, "name": "James"}')
    print(m)
    #> id=123 signup_ts=None name='James'
    

    So, why jsons over pydantic?

    I can see that jsons being more lightweight for obvious reasons, but I wish to hear from the authors as well!

    opened by Raven888888 0
  • SerializationError: object of type 'abc' has no len()

    SerializationError: object of type 'abc' has no len()

    For some reason I cant seem to get a json dump for a pydantic baseModel class object

    eg:

    import jsons
    from pydantic import BaseModel 
    
    class abc(BaseModel):
        value: int
    
    d = abc(value=1)
    
    jsons.dump(d)
    

    OUTPUT SerializationError: object of type 'abc' has no len()

    EXPECTED The object should serialise fine.

    This is using jsons-1.6.3 and pydantic-1.9.1

    opened by duxbuse 2
  • How to make `jsons.dump()` treat `bytes` the same as Python3 `str`?

    How to make `jsons.dump()` treat `bytes` the same as Python3 `str`?

    How can one make jsons.dump() treat bytes the same as Python3 str? Some sort of serializer/class/setting change/override, perhaps?

    On my system (below) jsons.dump() prints my bytes type variables in a List-like format, even when assigning said variables a str literal (I think... maybe I don't understand Python3 properly? Quite possible). The pertinent excerpt:

    "{'originally_bytes_type': ['1', '2', '3', '4'], 'originally_str___type': '1234'}"

    All the context:

    $ cat jsons-dump-string-type-test.py
    #!/usr/bin/env python3
    
    from dataclasses import dataclass
    import jsons
    
    @dataclass
    class strs_and_bytes:
        originally_bytes_type : bytes
        originally_str___type : str
    
    sandb1 = strs_and_bytes \
    (
        originally_bytes_type = '1234' ,
        originally_str___type = '1234' ,
    )
    
    print('"' + str(jsons.dump(sandb1)) + '"')
    $ python3 jsons-dump-string-type-test.py
    "{'originally_bytes_type': ['1', '2', '3', '4'], 'originally_str___type': '1234'}"
    $ python3 --version
    Python 3.8.10
    $ pip3 install josons
    ^CERROR: Operation cancelled by user
    $ pip3 install jsons
    Requirement already satisfied: jsons in /usr/local/lib/python3.8/dist-packages (1.6.3)
    Requirement already satisfied: typish>=1.9.2 in /usr/local/lib/python3.8/dist-packages (from jsons) (1.9.3)
    $ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 20.04.4 LTS
    Release:	20.04
    Codename:	focal
    $
    
    opened by johnnyutahh 2
  • add default (de)serializer for Literal values

    add default (de)serializer for Literal values

    I implemented these for a project I'm working on that uses jsons, then noticed https://github.com/ramonhagenaars/jsons/issues/170 and figured I may as well see if you like the implementation enough to go with it.

    I included the strictly_equal_literal as a compromise between correctness and utility.

    From https://peps.python.org/pep-0586/#equivalence-of-two-literals

    Two types Literal[v1] and Literal[v2] are equivalent when both of the following conditions are true:

    1. type(v1) == type(v2)
    2. v1 == v2

    I took that to mean that for a value to really match a literal it should match in both type and value. The only problem with that is that I've found it to be very useful to allow jsons to "coerce" values that are equal in value into the literal value, the use case that prompted me to implement this actually relies on that behaviour.

    opened by buckley-w-david 0
  • In nested objects, `load` is only called for the root object instead of being called for each one

    In nested objects, `load` is only called for the root object instead of being called for each one

    Hi, I have a problem where I'm trying to deserialize nested objects, and have each of their respective load functions trigger.

    Code example:

    from typing import List
    import jsons
    
    class B(jsons.JsonSerializable):
        c: List[str]
        
        @classmethod
        def load(cls, json_obj, **kwargs):
            print("Loading", cls)
            return jsons.load(json_obj, cls, **kwargs)
    
    class A(jsons.JsonSerializable):
        b: B
        
        @classmethod
        def load(cls, json_obj, **kwargs):
            print("Loading", cls)
            return jsons.load(json_obj, cls, **kwargs)
    
    obj = {'b': {'c': ['d', 'd']}}
    
    jsons.load(obj, A) # Nothing printed
    A.load(obj) # Only "Loading <class '__main__.A'>" is printed
    

    What I would expect as default behavior in this case is to have both Loading <class ...B> and Loading <class ...A> printed. Is there any way to achieve this behavior?

    Thanks!

    opened by itaiperi 1
Releases(v1.6.3)
  • v1.6.3(Jun 9, 2022)

  • v1.6.2(May 11, 2022)

  • v1.6.1(Jan 9, 2022)

    • Bugfix: Loading dicts with hashed keys could cause an error due to being loaded twice (thanks to georgeharker).
    • Bugfix: IntEnums were not serialized with their names when use_enum_name=True (thanks to georgeharker).
    • Bugfix: Named tuples did not use typing.get_type_hints for getting the types, causing trouble in future annotations (thanks to georgeharker).
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Oct 31, 2021)

  • v1.5.1(Sep 1, 2021)

  • v1.5.0(Jul 18, 2021)

  • v1.4.2(Apr 10, 2021)

  • v1.4.1(Mar 31, 2021)

  • v1.4.0(Feb 6, 2021)

    • Feature: DefaultDicts can now be deserialized.
    • Feature: Dicts with any (hashable) key can now be dumped and loaded.
    • Feature: Suppress specific warnings.
    • Bugfix: Loading a verbose-serialized object in a list could sometimes deserialize that object as a parent class.
    • Bugfix: Unwanted stringification of NoneValues is now prevented in Optionals and Unions with NoneType.
    • Bugfix: Fixed a bug with postponed annotations and dataclasses. See also Issue34776.
    • Bugfix: Types of attributes that are not in the constructor are now looked for in annotations.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Jan 4, 2021)

  • v1.3.0(Oct 9, 2020)

    • Feature: Added warn_on_fail parameter to default_list_deserializer that allows to continue deserialization upon errors.
    • Feature: Added transform that can transform an object to an object of another type.
    • Feature: Added serializer and deserializer for pathlib.Path (thanks to alexmirrington).
    • Change: When loading a list fails, the error message now points to the failing index.
    • Bugfix: Fixed bug when dumping an object with an innerclass.
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Jul 3, 2020)

    • Bugfix: Fixed bug with postponed typehints (PEP-563).
    • Bugfix: Loading an invalid value targeting an optional did not raise.
    • Bugfix: Loading a dict did not properly pass key_transformers.
    • Bugfix: Loading a namedtuple did not properly use key_transformers.
    • Bugfix: Utilized __annotations__ in favor _field_types because of deprecation as of 3.8.
    Source code(tar.gz)
    Source code(zip)
  • v1.1.1(Dec 22, 2019)

    • Feature: Added a serializer for Union types.
    • Change: Exceptions are more clear upon deserialization failure (thanks to haluzpav).
    • Change: You can no longer announce a class with a custom name.
    • Bugfix: Fixed dumping optional attributes.
    • Bugfix: Dataclasses inheriting from JsonSerializable always dumped their attributes as if in strict mode.
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Dec 4, 2019)

    • Feature: Added strict parameter to dump to indicate that dumping a certain cls will ignore any extra data.
    • Feature: When using dump(obj, cls=x), x can now be any class (previously, only a class with __slots__).
    • Feature: Support for dumping Decimal (thanks to herdigiorgi).
    • Feature: Primitives are now cast if possible when dumping (e.g. dump(5, str)).
    • Feature: Dumping iterables with generic types (e.g. dump(obj, List[str])) will now dump with respect to that types (if strict)
    • Feature: The default_dict serializer now optionally accepts types: Optional[Dict[str, type]].
    • Change: Improved performance when dumping using strict=True (up to 4 times faster!).
    • Bugfix: set_validator with multiple types did not work.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Oct 7, 2019)

    • Feature: Added a serializer/deserializer for time.
    • Feature: Added a serializer/deserializer for timezone.
    • Feature: Added a serializer/deserializer for timedelta.
    • Feature: Added a serializer/deserializer for date.
    • Bugfix: Dumping verbose did not store the types of dicts (Dict[K, V]).
    • Bugfix: Loading with List (no generic type) failed.
    • Bugfix: Loading with Dict (no generic type) failed.
    • Bugfix: Loading with Tuple (no generic type) failed.
    Source code(tar.gz)
    Source code(zip)
    jsons-1.0.0.tar.gz(59.06 KB)
Very efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication

Very efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication (among and within files, including virtual machine images). Current release is

bup 6.9k Dec 27, 2022
A Python library for inspecting JVM class files (.class)

lawu Lawu is a human-friendly library for assembling, disassembling, and exploring JVM class files. It's highly suitable for automation tasks. Documen

Tyler Kennedy 45 Oct 23, 2022
A beacon generator using Cobalt Strike and a variety of tools.

Beaconator is an aggressor script for Cobalt Strike used to generate either staged or stageless shellcode and packing the generated shellcode using your tool of choice.

Capt. Meelo 441 Dec 17, 2022
A series of basic programs written in Python

Primeros programas en Python Una serie de programas básicos escritos en Python

Madirex 1 Feb 15, 2022
JD-backup is an advanced Python script, that will extract all links from a jDownloader 2 file list and export them to a text file.

JD-backup is an advanced Python script, that will extract all links from a jDownloader 2 file list and export them to a text file.

Kraken.snv 3 Jun 07, 2022
Write complicated anonymous functions other than lambdas in Python.

lambdex allows you to write multi-line anonymous function expression (called a lambdex) in an idiomatic manner.

Xie Jingyi 71 May 19, 2022
Tools for collecting social media data around focal events

Social Media Focal Events The focalevents codebase provides tools for organizing data collected around focal events on social media. It is often diffi

Ryan Gallagher 80 Nov 28, 2022
Generate Gaussian 09 input files for the rotamers of an input compound.

Rotapy Purpose Generate Gaussian 09 input files for the rotamers of an input compound. Distance to the axis of rotation remains constant throughout th

1 Jul 16, 2021
Url-check-migration-python - A python script using Apica API's to migrate URL checks between environments

url-check-migration-python A python script using Apica API's to migrate URL chec

Angelo Aquino 1 Feb 16, 2022
Groupe du projet Python en 2TL2-4

Présentation Projet EpheCom Ce logiciel a été développé dans le cadre scolaire. EpheCom est un logiciel de communications - vocale et écrite - en temp

1 Dec 26, 2021
A simple projects to help your seo optimizing has been written with python

python-seo-projects it is a very simple projects to help your seo optimizing has been written with python broken link checker with python(it will give

Amirmohammad Razmy 3 Dec 25, 2021
This is a simple SV calling package for diploid assemblies.

dipdiff This is a simple SV calling package for diploid assemblies. It uses a modified version of svim-asm. The package includes its own version minim

Mikhail Kolmogorov 11 Jan 05, 2023
Hy - A dialect of Lisp that's embedded in Python

Hy Lisp and Python should love each other. Let's make it happen. Hy is a Lisp dialect that's embedded in Python. Since Hy transforms its Lisp code int

Hy Society 4.4k Jan 02, 2023
Linux Backlight Manager

Is a program to manage your laptop keyboard backlights in linux. Tested on Tuxedo / Clevo / Monste models. Must be tested on other devices

Arshia Ihammi 4 Jan 14, 2022
GNU/Linux'u yeni kurulumu bitirmiş olarak açtığınızda sizi karşılayacak bir uygulama.

Hoş Geldiniz GNU/Linux'u yeni kurulumu bitirmiş olarak açtığınızda sizi karşılayacak bir uygulama.

Alperen İsa 96 Oct 30, 2022
SmartGrid - Een poging tot een optimale SmartGrid oplossing, door Dirk Kuiper & Lars Zwaan

SmartGrid - Een poging tot een optimale SmartGrid oplossing, door Dirk Kuiper & Lars Zwaan

1 Jan 12, 2022
Open Source Management System for Botanic Garden Collections.

BotGard 3.0 Open Source Management System for Botanic Garden Collections built and maintained by netzkolchose.de in cooperation with the Botanical Gar

netzkolchose.de 1 Dec 15, 2021
1000+ ready code templates to kickstart your next AI experiment

AI Seed Projects Start with ready code for your next AI experiment. Choose from 1000+ code templates, across a wide variety of use cases. All examples

BlobCity, Inc 98 Jan 03, 2023
freeCodeCamp Scientific Computing with Python Project for Certification.

Time_Calculator_freeCodeCamp freeCodeCamp Scientific Computing with Python Project for Certification. Write a function named add_time that takes in tw

Rajdeep Mondal 1 Dec 23, 2021
Repository voor verhalen over de woningbouw-opgave in Nederland

Analyse plancapaciteit woningen In deze notebook zetten we cijfers op een rij om de woningbouwplannen van Nederlandse gemeenten in kaart te kunnen bre

Follow the Money 10 Jun 30, 2022