{"action":"created","issue":{"url":"https://api.github.com/repos/davidfraser/pyan/issues/5","repository_url":"https://api.github.com/repos/davidfraser/pyan","labels_url":"https://api.github.com/repos/davidfraser/pyan/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/davidfraser/pyan/issues/5/comments","events_url":"https://api.github.com/repos/davidfraser/pyan/issues/5/events","html_url":"https://github.com/davidfraser/pyan/pull/5","id":273589578,"number":5,"title":"Python 3 support","user":{"login":"Technologicat","id":16972251,"avatar_url":"https://avatars0.githubusercontent.com/u/16972251?v=4","gravatar_id":"","url":"https://api.github.com/users/Technologicat","html_url":"https://github.com/Technologicat","followers_url":"https://api.github.com/users/Technologicat/followers","following_url":"https://api.github.com/users/Technologicat/following{/other_user}","gists_url":"https://api.github.com/users/Technologicat/gists{/gist_id}","starred_url":"https://api.github.com/users/Technologicat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Technologicat/subscriptions","organizations_url":"https://api.github.com/users/Technologicat/orgs","repos_url":"https://api.github.com/users/Technologicat/repos","events_url":"https://api.github.com/users/Technologicat/events{/privacy}","received_events_url":"https://api.github.com/users/Technologicat/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2017-11-13T21:47:05Z","updated_at":"2017-11-16T03:32:35Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/davidfraser/pyan/pulls/5","html_url":"https://github.com/davidfraser/pyan/pull/5","diff_url":"https://github.com/davidfraser/pyan/pull/5.diff","patch_url":"https://github.com/davidfraser/pyan/pull/5.patch"},"body":"Hi, the second original author here,\r\n\r\nThis PR provides a Python 3 enabled Pyan. Its working title for now is *Pyan3*, but I'll probably eventually drop the *3*.\r\n\r\nThe `compiler` module no longer exists in Python 3 ([good riddance!](https://stackoverflow.com/a/909172)), so this required nontrivial porting. I have rewritten the analyzer to run on a combination of `ast` and `symtable`, which should be supported for the foreseeable future.\r\n\r\nI have also refactored the whole program into several files to make it easier to maintain. After all, we have a tool to visualize the architecture :)\r\n\r\nAnd of course, I could not resist improving the output slightly this time, too. Now the analyzer gathers filename and line number information, which can be included in the node labels by using the option `--annotated`.\r\n\r\nThe change in the directory structure is to facilitate packaging - I'm considering making a setuptools package out of this, so that pyan could be uploaded to PyPI.\r\n\r\nI made a slight mistake, due to which **this version is still missing the PRs from your repo**, so this is **not yet a production-ready PR**. (I didn't notice the code had been updated before I started porting; I think I might be able to fix this in the near future.)\r\n\r\nFor now, any comments?\r\n\r\nDo you want to include this into your version?\r\n\r\nDo you want to continue as the (semi-?)official maintainer, as everyone has already starred your repo?"},"comment":{"url":"https://api.github.com/repos/davidfraser/pyan/issues/comments/344805296","html_url":"https://github.com/davidfraser/pyan/pull/5#issuecomment-344805296","issue_url":"https://api.github.com/repos/davidfraser/pyan/issues/5","id":344805296,"user":{"login":"Technologicat","id":16972251,"avatar_url":"https://avatars0.githubusercontent.com/u/16972251?v=4","gravatar_id":"","url":"https://api.github.com/users/Technologicat","html_url":"https://github.com/Technologicat","followers_url":"https://api.github.com/users/Technologicat/followers","following_url":"https://api.github.com/users/Technologicat/following{/other_user}","gists_url":"https://api.github.com/users/Technologicat/gists{/gist_id}","starred_url":"https://api.github.com/users/Technologicat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Technologicat/subscriptions","organizations_url":"https://api.github.com/users/Technologicat/orgs","repos_url":"https://api.github.com/users/Technologicat/repos","events_url":"https://api.github.com/users/Technologicat/events{/privacy}","received_events_url":"https://api.github.com/users/Technologicat/received_events","type":"User","site_admin":false},"created_at":"2017-11-16T03:32:35Z","updated_at":"2017-11-16T03:32:35Z","author_association":"NONE","body":"PR #1 is now merged into the Python 3 fork. This gives us yEd GraphML output, and a framework for easily adding new output formats. Thanks @PatrickMassot!\r\n\r\nThe `graphgen.py` I originally added in my fork has been replaced by `graph.py` and `writers.py` from #1, adapted to the latest features and bugfixes. I had independently implemented almost the same `Colorizer` (with the same name, even), so I used my version with minor changes.\r\n\r\nI didn't include a `colors.py`, because the Python 3 fork uses the `colorsys` module from the standard library, which makes the implementation much shorter, so it easily fits into `graph.py`. (Also, not writing MATLAB in Python makes the implementation shorter. My original code here was a mess, which has now been cleaned up.)\r\n\r\nWhile at it, I also migrated my own code to use the standard library logger in the same way the code in #1 already did.\r\n\r\nThere's one detail I'm not quite sure of: a couple of commits back, I added a feature that forces the defines edges in non-grouped mode also with `--no-defines`, but makes them transparent. This helps the layout algorithms in GraphViz to keep the related nodes (and related boxes) closer together, but I'm not sure how this approach interacts with yEd. Maybe this needs a separate GraphViz-specific option; we'll see.\r\n\r\nTesting and bug reports welcome!\r\n"}}
{"actor":{"display_login":"Technologicat"}}