{"id":23344527,"url":"https://github.com/rec/clsprop","last_synced_at":"2025-04-07T16:48:01.538Z","repository":{"id":183040902,"uuid":"626344017","full_name":"rec/clsprop","owner":"rec","description":"🏫 Like property but for classes 🏫","archived":false,"fork":false,"pushed_at":"2024-02-14T14:42:16.000Z","size":593,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-01T19:20:41.961Z","etag":null,"topics":["decorators","decorators-python","properties","python"],"latest_commit_sha":null,"homepage":"https://rec.github.io/clsprop/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-11T09:24:43.000Z","updated_at":"2023-09-23T11:39:59.000Z","dependencies_parsed_at":"2024-01-16T14:35:34.443Z","dependency_job_id":"61150002-99a1-4fd4-86f3-763a0f4ba0e6","html_url":"https://github.com/rec/clsprop","commit_stats":null,"previous_names":["rec/clsprop"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rec%2Fclsprop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rec%2Fclsprop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rec%2Fclsprop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rec%2Fclsprop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rec","download_url":"https://codeload.github.com/rec/clsprop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247693704,"owners_count":20980726,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["decorators","decorators-python","properties","python"],"created_at":"2024-12-21T06:26:53.439Z","updated_at":"2025-04-07T16:48:01.519Z","avatar_url":"https://github.com/rec.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Works just like @property for classes, except deleters don't work (and are\nperhaps impossible).\n\nInspired by https://stackoverflow.com/a/39542816/43839\n\n## Example\n\n    import clsprop\n\n    class Full:\n        _name = 'fool'\n\n        @clsprop\n        def name(cls):\n            return cls._name\n\n        @name.setter\n        def name(cls, name):\n            cls._name = name\n\n        # Unfortunately, the deleter never gets called\n        @name.deleter\n        def name(cls, name):\n            raise ValueError('Cannot delete name')\n\n    assert Full.name == 'fool'\n\n    Full.name = 'foll'\n    assert Full.name == 'foll'\n\n    del Full.name  # oh, well\n\n\n### [API Documentation](https://rec.github.io/clsprop#clsprop--api-documentation)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frec%2Fclsprop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frec%2Fclsprop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frec%2Fclsprop/lists"}