Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: "Robert Grant" Newsgroups: comp.lang.python.announce Subject: tsplib95 v0.5.0 Date: Thu, 03 Oct 2019 13:53:03 -0000 Lines: 59 Approved: python-announce-list@python.org Message-ID: <157011078304.7288.15046322482911066699@mail.python.org> Reply-To: python-list@python.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Trace: news.uni-berlin.de DedBhul6rii4dFdaI+ah5wkaqWGCdnS6odaPKhjmkX8Q== User-Agent: HyperKitty on https://mail.python.org/ X-MailFrom: rhgrant10@gmail.com X-Mailman-Rule-Hits: emergency X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved Message-ID-Hash: CVDE3GR3IHUFWSHRVL63MWX2Y5O2I66F X-Message-ID-Hash: CVDE3GR3IHUFWSHRVL63MWX2Y5O2I66F X-Mailman-Approved-At: Thu, 03 Oct 2019 09:57:48 -0400 X-Mailman-Version: 3.3.1 Precedence: list List-Id: Announcement-only list for the Python programming language Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Xref: csiph.com comp.lang.python.announce:3206 Hi everyone, I'm pleased to announce the release of tsplib95 v0.5.0! What's New? ----------- * Added string loaders that take just the text - no file necessary! * Invalid keywords now result in a ``ParsingError`` * Updated the CLI to catch and gracefully handle ``ParsingError``s * Fixed a bug when trying to amend an exception with line information What is tsplib95? ----------------- tsplib95 is a library for reading TSPLIB95 problems and solutions. It supports the entire file format specification and automatically converts problems into ``networkx.Graph`` instances. License: Apache Software License 2.0 * Read the **docs**: https://tsplib95.readthedocs.io/ * Install from **PyPI**: https://pypi.org/project/tsplib95/ * Contribute **source**: https://github.com/rhgrant10/tsplib95 Example ------- >>> import tsplib95 >>> import networkx as nx >>> # read problem files >>> problem = tsplib95.load_problem('path/to/att48.tsp') >>> problem.name >>> problem.comment '48 capitals of the US (Padberg/Rinaldi)' >>> problem.dimension 48 >>> problem.type 'TSP' >>> # auto-generated weight function for any two nodes >>> problem.wfunc(2, 6) 6977 >>> # convert to networkx >>> G = problem.get_graph() >>> if problem.is_symmteric(): ... assert issubclass(G, nx.Graph) ... else: ... assert issubclass(G, nx.DiGraph) >>> if problem.is_depictable(): ... nx.draw(G) ... Enjoy! Rob