{"id":18614121,"url":"https://github.com/enthought/traits-futures","last_synced_at":"2025-04-11T00:30:29.281Z","repository":{"id":34379545,"uuid":"137893206","full_name":"enthought/traits-futures","owner":"enthought","description":"Reactive background processing for TraitsUI applications","archived":false,"fork":false,"pushed_at":"2024-03-14T09:48:27.000Z","size":6586,"stargazers_count":8,"open_issues_count":32,"forks_count":1,"subscribers_count":28,"default_branch":"main","last_synced_at":"2024-03-15T10:45:54.389Z","etag":null,"topics":["concurrency","gui","threading","traits","traitsui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enthought.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2018-06-19T13:10:49.000Z","updated_at":"2024-06-12T16:06:32.829Z","dependencies_parsed_at":"2024-01-13T06:22:18.206Z","dependency_job_id":"6072fea3-f196-4aec-a54f-9b248ad74921","html_url":"https://github.com/enthought/traits-futures","commit_stats":{"total_commits":519,"total_committers":6,"mean_commits":86.5,"dds":"0.10019267822736033","last_synced_commit":"63a45d2b31c43f774acee13b5233a7ef6194e152"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enthought%2Ftraits-futures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enthought%2Ftraits-futures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enthought%2Ftraits-futures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enthought%2Ftraits-futures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enthought","download_url":"https://codeload.github.com/enthought/traits-futures/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248322145,"owners_count":21084333,"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":["concurrency","gui","threading","traits","traitsui"],"created_at":"2024-11-07T03:25:15.268Z","updated_at":"2025-04-11T00:30:28.764Z","avatar_url":"https://github.com/enthought.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"..\n   (C) Copyright 2018-2024 Enthought, Inc., Austin, TX\n   All rights reserved.\n\n   This software is provided without warranty under the terms of the BSD\n   license included in LICENSE.txt and may be redistributed only under\n   the conditions described in the aforementioned license. The license\n   is also available online at http://www.enthought.com/licenses/BSD.txt\n\n   Thanks for using Enthought open source!\n\nTraits Futures allows a TraitsUI-based GUI application to execute one or more\nbackground tasks without blocking the main GUI, and provides a mechanism\nfor that application to *safely* update the GUI in response to full or\npartial results from the background tasks.\n\nDetailed description\n--------------------\n\nGUI applications that want to perform a long-running task in response to user\ninteractions (for example, running a time-consuming calculation, or submitting\na complex search query to a remote database) face two major issues:\n\n* If the task is executed directly on the main thread, it blocks the GUI event\n  loop, making the entire application appear unresponsive to the user.\n* It's not generally safe to update a GUI directly from a worker thread, so\n  a task run on a worker thread needs to find a way to safely communicate\n  events back to the main GUI thread.\n\nFor TraitsUI-based applications, Traits Futures provides a solution to these\nissues, similar in principle to the Python standard library\n``concurrent.futures`` package. Tasks are submitted to an executor, and on task\nsubmission the executor immediately returns a \"future\" object. That \"future\"\nobject has observable attributes (\"traits\") representing the application's view\nof the state of the background task. Rather than waiting on the future's state,\nan interested observer can listen to updates to those traits and update the GUI\nstate as necessary when changes occur. The Traits Futures machinery ensures\nthat updates to the future's traits always occur on the main thread, freeing\nobservers from thread-safety concerns.\n\nFor further information, see the documentation pages at\nhttps://docs.enthought.com/traits-futures/.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenthought%2Ftraits-futures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenthought%2Ftraits-futures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenthought%2Ftraits-futures/lists"}