From javier at candeira.com Thu May 1 00:36:13 2014 From: javier at candeira.com (Javier Candeira) Date: Thu, 1 May 2014 08:36:13 +1000 Subject: [melbourne-pug] May MPUG Meeting: NP-complete gaming, web2py, What's New -- Monday 5 May, 6PM, Inspire 9, 41 Stewart St Richmond In-Reply-To: References: Message-ID: Ben Finney has stepped up to run the May "What's New in Python" session. Thanks Ben, and noworries Lars, see you in June! J On Wed, Apr 30, 2014 at 1:23 PM, Lars Yencken wrote: > Hi guys, > > My apologies, I didn't check dates properly before volunteering to lead > May's "what's new". I'm still overseas and will narrowly miss being back in > time for the meetup. > > I've written up a recap of my favourite talks, and some themes I noticed: > http://quietlyamused.org/blog/2014/04/13/pycon-us-2014-recap/ > > Would someone else be willing to lead that chat this time around? With the > videos up so quickly on pyvideo.org, hopefully a lot of people can share > what talks from PyCon they've watched and enjoyed since then. > > Apologies again, > > Lars > > > On 28 April 2014 19:44, Javier Candeira wrote: >> >> Dear Melbourne Pythonistas, >> >> Six days from now, Monday 5th May, we'll hold the May meeting of the MPUG! >> >> Time: 6PM >> Venue: Inspire 9: Level 1, 41 Stewart Street, Richmond. 50m from >> Richmond Train Station. >> >> Program: >> >> 15 minute talks >> >> * Lars Yencken -- What's new in Python, now a regular feature in our >> meetings, but this time with a Pycon US review. >> >> * Tom Allen -- NP-Complete game design in Python >> >> 25 minute talks >> >> * Tim Richardson -- Introduction to web2py >> >> As usual, we'll order pizza, with a $10 contribution required. Drinks >> are BYO, but you're invited to bring a six-pack to share if you want! >> >> If you'd like to give the What's New in Python talk in a future >> session, you have a cool project you want to show, or you want to give >> a short presentation on a library you've been using lately, please >> just come forward at the start of the meeting. >> >> With much appreciation to Inspire 9 for the donation of the use of the >> venue, >> >> The MPUG organisers >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug > > From javier at candeira.com Mon May 5 01:36:06 2014 From: javier at candeira.com (Javier Candeira) Date: Mon, 5 May 2014 09:36:06 +1000 Subject: [melbourne-pug] May MPUG Meeting: NP-complete gaming, web2py, What's New -- Today, 6PM, Inspire 9, 41 Stewart St Richmond Message-ID: Dear Melbourne Pythonistas, Today, Monday 5th May, we'll hold the May meeting of the MPUG! Time: 6PM Venue: Inspire 9: Level 1, 41 Stewart Street, Richmond. 50m from Richmond Train Station. Program: 15 minute talks * Ben Finney -- What's new in Python, now a regular feature in our meetings, but this time with a Pycon US review. * Tom Allen -- NP-Complete game design in Python 25 minute talks * Tim Richardson -- Introduction to web2py As usual, we'll order pizza, with a $10 contribution required. Drinks are BYO, but you're invited to bring a six-pack to share if you want! If you'd like to give the What's New in Python talk in a future session, you have a cool project you want to show, or you want to give a short presentation on a library you've been using lately, please just come forward during the meeting. With much appreciation to Inspire 9 for the donation of the use of the venue, The MPUG organisers From claresloggett at gmail.com Mon May 5 08:29:43 2014 From: claresloggett at gmail.com (Clare Sloggett) Date: Mon, 5 May 2014 16:29:43 +1000 Subject: [melbourne-pug] ipython notebook extensions In-Reply-To: References: Message-ID: I'd be really interested to see a talk on IPython Parallel as well. I've been using IPython Notebook a lot recently and on a cluster no less, yet I still haven't got round to trying out ipython parallel! An intro to it would be excellent. On 29 April 2014 20:06, Nathan Faggian wrote: > Hi Clare, > > I also would like to see a talk on this -- for a bit of fun I tried > something really simple: > > -- > > %install_ext > https://gist.githubusercontent.com/nfaggian/11395643/raw/42303d657b3b750c3aaef5ba710b6cdf4ed14c6b/extension_hello_world.py > > %load_ext extension_hello_world > > -- > > Looks like having access to the interactive shell is pretty powerful, you > can interact with it pretty easily. If you want to do something fancy I am > sure you can change the IPython state in interesting ways. The following > link might be a good place to look for examples: > > https://github.com/ipython/ipython/wiki/Extensions-Index > > At some point down the line I wouldn't mind giving a talk on IPython > parallel, maybe I can include a quick explanation of magics. For now +1 for > someone else giving a talk ;-) > > Cheers, > > Nathan > > > On 29 April 2014 18:34, Clare Sloggett wrote: > >> Hi all, >> >> I was wondering if anyone in the group has experience writing IPython >> Notebook extensions. It's something I've been looking at doing and I'm >> finding it hard to get my head around the overall structure, particularly >> the Javascript side of it - what documentation I've found is more like a >> reference than an overview. >> >> I'd love to see a Monday talk on this if anyone's up for it! >> >> Otherwise, maybe I will eventually struggle through it and be able to >> give that talk myself :) >> >> Clare >> >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug >> >> > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From javier at candeira.com Mon May 5 08:33:02 2014 From: javier at candeira.com (Javier Candeira) Date: Mon, 5 May 2014 16:33:02 +1000 Subject: [melbourne-pug] ipython notebook extensions In-Reply-To: References: Message-ID: Yes! Please someone bring it on! J On Mon, May 5, 2014 at 4:29 PM, Clare Sloggett wrote: > > I'd be really interested to see a talk on IPython Parallel as well. I've > been using IPython Notebook a lot recently and on a cluster no less, yet I > still haven't got round to trying out ipython parallel! An intro to it would > be excellent. > > > On 29 April 2014 20:06, Nathan Faggian wrote: >> >> Hi Clare, >> >> I also would like to see a talk on this -- for a bit of fun I tried >> something really simple: >> >> -- >> >> %install_ext >> https://gist.githubusercontent.com/nfaggian/11395643/raw/42303d657b3b750c3aaef5ba710b6cdf4ed14c6b/extension_hello_world.py >> >> %load_ext extension_hello_world >> >> -- >> >> Looks like having access to the interactive shell is pretty powerful, you >> can interact with it pretty easily. If you want to do something fancy I am >> sure you can change the IPython state in interesting ways. The following >> link might be a good place to look for examples: >> >> https://github.com/ipython/ipython/wiki/Extensions-Index >> >> At some point down the line I wouldn't mind giving a talk on IPython >> parallel, maybe I can include a quick explanation of magics. For now +1 for >> someone else giving a talk ;-) >> >> Cheers, >> >> Nathan >> >> >> On 29 April 2014 18:34, Clare Sloggett wrote: >>> >>> Hi all, >>> >>> I was wondering if anyone in the group has experience writing IPython >>> Notebook extensions. It's something I've been looking at doing and I'm >>> finding it hard to get my head around the overall structure, particularly >>> the Javascript side of it - what documentation I've found is more like a >>> reference than an overview. >>> >>> I'd love to see a Monday talk on this if anyone's up for it! >>> >>> Otherwise, maybe I will eventually struggle through it and be able to >>> give that talk myself :) >>> >>> Clare >>> >>> _______________________________________________ >>> melbourne-pug mailing list >>> melbourne-pug at python.org >>> https://mail.python.org/mailman/listinfo/melbourne-pug >>> >> >> >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug >> > > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > From gcross at fastmail.fm Mon May 5 12:54:59 2014 From: gcross at fastmail.fm (Graeme Cross) Date: Mon, 05 May 2014 20:54:59 +1000 Subject: [melbourne-pug] MPUG videos Message-ID: <1399287299.21741.113737089.26DDF051@webmail.messagingengine.com> Hi everyone. Thanks to Tim, Tom and Ben for their talks at MPUG tonight; it was a good meeting. As I mentioned in the meeting, Inspire 9 are now recording the various meetings and making them available via their Vimeo channel. Last month's talks are up: https://vimeo.com/inspire9/videos Regards Graeme From william.leslie.ttg at gmail.com Tue May 6 02:34:27 2014 From: william.leslie.ttg at gmail.com (William ML Leslie) Date: Tue, 6 May 2014 10:34:27 +1000 Subject: [melbourne-pug] Getting Tom Allen's "The Longest Road" Message-ID: Thanks everyone for a great meeting. If you were looking for Tom's game, here's the repo so you don't have to google so creatively. https://github.com/Schwolop/GetToAnExit -- William Leslie Notice: Likely much of this email is, by the nature of copyright, covered under copyright law. You absolutely MAY reproduce any part of it in accordance with the copyright law of the nation you are reading this in. Any attempt to DENY YOU THOSE RIGHTS would be illegal without prior contractual agreement. From noonslists at gmail.com Tue May 6 02:45:36 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 10:45:36 +1000 Subject: [melbourne-pug] The One True way to structure repositories for common code re-use Message-ID: Hello, Suppose you are writing some code. Suppose one day, you decide "hey, this bit of code is sufficiently common, I'll make it into an independent library!", so you do that, you publish it on github and bask in the green-ness of your travis build. Now suppose you want to use this common library in your own "main" app somehow. You have a few options for including it: 1) Local copy in your repo either as: - Subrepo pointing at source, - Subrepo pointing at your own fork (note: in the above case you might want to modify the public library in some way that is not compatible with the public goals, but more of a specific thing for your own internal stuff.) 2) Local copy as symlink to a clone or fork as above 3) Completely independent thing that you pip install What option do you take? (I've probably missed other better ideas.) I have some feelings about this, but I'm not entirely sure which way is the best way yet, and am interested in opinions, and maybe more interested in *what you actually do*. Suppose that the common library is changing "somewhat often"; maybe once a month or so. Let's suppose you'd prefer to move functionality into that library, but you can forsee needing to modify it for your own needs (well, if so, does this just flat-out eliminate option 3?). Note, I suppose, in the options where you might accidentally modify it (when you have a local copy) you probably need to be running the tests. -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From peter.davis8 at gmail.com Tue May 6 02:54:41 2014 From: peter.davis8 at gmail.com (Peter Davis) Date: Tue, 6 May 2014 10:54:41 +1000 Subject: [melbourne-pug] The One True way to structure repositories for common code re-use In-Reply-To: References: Message-ID: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Hi, Sounds like you probably have two libraries, a public and private one. I would fork the latter (private) from the former (public) and put it on a private online repository. Then you can install the private version using pip?s git+ssh functionality. Any changes you make to private library could be potentially pushed back upstream to the public one. Peter On 6 May 2014, at 10:45 am, Noon Silk wrote: > Hello, > > Suppose you are writing some code. Suppose one day, you decide "hey, this bit of code is sufficiently common, I'll make it into an independent library!", so you do that, you publish it on github and bask in the green-ness of your travis build. > > Now suppose you want to use this common library in your own "main" app somehow. You have a few options for including it: > > 1) Local copy in your repo either as: > - Subrepo pointing at source, > - Subrepo pointing at your own fork (note: in the above case you might want to modify the public library in some way that is not compatible with the public goals, but more of a specific thing for your own internal stuff.) > > 2) Local copy as symlink to a clone or fork as above > > 3) Completely independent thing that you pip install > > What option do you take? (I've probably missed other better ideas.) I have some feelings about this, but I'm not entirely sure which way is the best way yet, and am interested in opinions, and maybe more interested in *what you actually do*. > > Suppose that the common library is changing "somewhat often"; maybe once a month or so. Let's suppose you'd prefer to move functionality into that library, but you can forsee needing to modify it for your own needs (well, if so, does this just flat-out eliminate option 3?). > > Note, I suppose, in the options where you might accidentally modify it (when you have a local copy) you probably need to be running the tests. > > -- > Noon Silk > > Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ > > "Every morning when I wake up, I experience an exquisite joy ? the joy > of being this signature." > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug -------------- next part -------------- An HTML attachment was scrubbed... URL: From william.leslie.ttg at gmail.com Tue May 6 03:08:32 2014 From: william.leslie.ttg at gmail.com (William ML Leslie) Date: Tue, 6 May 2014 11:08:32 +1000 Subject: [melbourne-pug] The One True way to structure repositories for common code re-use In-Reply-To: References: Message-ID: On 6 May 2014 10:45, Noon Silk wrote: > 1) Local copy in your repo either as: > - Subrepo pointing at source, This is the common practice at work, using braid within a git repo rather than the built-in sub-repository functionality. Braid is flaky, uses the wrong APIs into git (changing your locale can prevent it working), but may at any given time work. Local changes are possible, but merging upstream back in requires using an intermediate repository (at least, that's the only way I've gotten it to work). > 2) Local copy as symlink to a clone or fork as above This is my preference, which I started doing when I decided I would never ever ever have setuptools even installed on my personal machine again. It means you can manage different versions of dependencies on a per-project basis, and have almost complete control over the module search path (even per entry-point). -- William Leslie Notice: Likely much of this email is, by the nature of copyright, covered under copyright law. You absolutely MAY reproduce any part of it in accordance with the copyright law of the nation you are reading this in. Any attempt to DENY YOU THOSE RIGHTS would be illegal without prior contractual agreement. From javier at candeira.com Tue May 6 03:16:17 2014 From: javier at candeira.com (Javier Candeira) Date: Tue, 6 May 2014 11:16:17 +1000 Subject: [melbourne-pug] The One True way to structure repositories for common code re-use In-Reply-To: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: What I do: pip has an option, -e, which installs an "editable" version of a library and you can pip install from a repository, like so: pip -e git+https://github.com/candeira/ansible.git at a002a249731ca7c7dd35d0d4f79108b632fde2dd#egg=ansible-dev Now my development virtualenv is running this particular library from its src/ansible/ directory, an editable git repo which I can modify, checkout branches and, in this case, since Ansible is not my project, make pull requests with bugfixes and features. If it were mine, I could publish the appropriate branch to git master and to the cheese shop. The workflow is still not set in stone, but works quite well for me. J On Tue, May 6, 2014 at 10:54 AM, Peter Davis wrote: > Hi, > > Sounds like you probably have two libraries, a public and private one. I > would fork the latter (private) from the former (public) and put it on a > private online repository. Then you can install the private version using > pip?s git+ssh functionality. > > Any changes you make to private library could be potentially pushed back > upstream to the public one. > > Peter > > On 6 May 2014, at 10:45 am, Noon Silk wrote: > > Hello, > > Suppose you are writing some code. Suppose one day, you decide "hey, this > bit of code is sufficiently common, I'll make it into an independent > library!", so you do that, you publish it on github and bask in the > green-ness of your travis build. > > Now suppose you want to use this common library in your own "main" app > somehow. You have a few options for including it: > > 1) Local copy in your repo either as: > - Subrepo pointing at source, > - Subrepo pointing at your own fork (note: in the above case you might > want to modify the public library in some way that is not compatible with > the public goals, but more of a specific thing for your own internal stuff.) > > 2) Local copy as symlink to a clone or fork as above > > 3) Completely independent thing that you pip install > > What option do you take? (I've probably missed other better ideas.) I have > some feelings about this, but I'm not entirely sure which way is the best > way yet, and am interested in opinions, and maybe more interested in *what > you actually do*. > > Suppose that the common library is changing "somewhat often"; maybe once a > month or so. Let's suppose you'd prefer to move functionality into that > library, but you can forsee needing to modify it for your own needs (well, > if so, does this just flat-out eliminate option 3?). > > Note, I suppose, in the options where you might accidentally modify it > (when you have a local copy) you probably need to be running the tests. > > -- > Noon Silk > > Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ > > "Every morning when I wake up, I experience an exquisite joy ? the joy > of being this signature." > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > > > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > From javier at candeira.com Tue May 6 03:38:47 2014 From: javier at candeira.com (Javier Candeira) Date: Tue, 6 May 2014 11:38:47 +1000 Subject: [melbourne-pug] The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: What I meant to say is that 3) is, to me, the right answer. a) If it's a general library, it belongs in your installed libraries, not in your application's source tree. b) But since it's your library to maintain, you can still keep it around as an editable, live piece of code. The above posted workflow gives you the tools to fulfill the requirements of 3a and 3b. J On Tue, May 6, 2014 at 11:16 AM, Javier Candeira wrote: > What I do: > > pip has an option, -e, which installs an "editable" version of a library > > and you can pip install from a repository, like so: > > pip -e git+https://github.com/candeira/ansible.git at a002a249731ca7c7dd35d0d4f79108b632fde2dd#egg=ansible-dev > > Now my development virtualenv is running this particular library from > its src/ansible/ directory, an editable git repo which I can modify, > checkout branches and, in this case, since Ansible is not my project, > make pull requests with bugfixes and features. If it were mine, I > could publish the appropriate branch to git master and to the cheese > shop. > > The workflow is still not set in stone, but works quite well for me. > > J > > On Tue, May 6, 2014 at 10:54 AM, Peter Davis wrote: >> Hi, >> >> Sounds like you probably have two libraries, a public and private one. I >> would fork the latter (private) from the former (public) and put it on a >> private online repository. Then you can install the private version using >> pip?s git+ssh functionality. >> >> Any changes you make to private library could be potentially pushed back >> upstream to the public one. >> >> Peter >> >> On 6 May 2014, at 10:45 am, Noon Silk wrote: >> >> Hello, >> >> Suppose you are writing some code. Suppose one day, you decide "hey, this >> bit of code is sufficiently common, I'll make it into an independent >> library!", so you do that, you publish it on github and bask in the >> green-ness of your travis build. >> >> Now suppose you want to use this common library in your own "main" app >> somehow. You have a few options for including it: >> >> 1) Local copy in your repo either as: >> - Subrepo pointing at source, >> - Subrepo pointing at your own fork (note: in the above case you might >> want to modify the public library in some way that is not compatible with >> the public goals, but more of a specific thing for your own internal stuff.) >> >> 2) Local copy as symlink to a clone or fork as above >> >> 3) Completely independent thing that you pip install >> >> What option do you take? (I've probably missed other better ideas.) I have >> some feelings about this, but I'm not entirely sure which way is the best >> way yet, and am interested in opinions, and maybe more interested in *what >> you actually do*. >> >> Suppose that the common library is changing "somewhat often"; maybe once a >> month or so. Let's suppose you'd prefer to move functionality into that >> library, but you can forsee needing to modify it for your own needs (well, >> if so, does this just flat-out eliminate option 3?). >> >> Note, I suppose, in the options where you might accidentally modify it >> (when you have a local copy) you probably need to be running the tests. >> >> -- >> Noon Silk >> >> Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ >> >> "Every morning when I wake up, I experience an exquisite joy ? the joy >> of being this signature." >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug >> >> >> >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug >> From noonslists at gmail.com Tue May 6 05:31:34 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 13:31:34 +1000 Subject: [melbourne-pug] The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: > The above posted workflow gives you the tools to fulfill the > requirements of 3a and 3b. Yes interesting. Okay, so but then as part of the ci-build for this local internal project, you are constantly testing the maybe-not-ever-changed version of the thing you pip-installed? Suppose also you make changes to this library, and they aren't accepted into the master repo by the maintainer. How do you now share the changes you made with the other developers of your internal thing? Am I understanding right in that they can't get the changes, because the changes will be contained only in a pending pull request? (i.e. for this to work, you'd need to work from a fork of the common library, and basically always merge in pull requests to the fork. This seems somehow a bit broken to me, I think [you can't submit a set of changes that contain changes both in the common library and the internal library as a single set, they must be a separate] ...) On Tue, May 6, 2014 at 11:38 AM, Javier Candeira wrote: > What I meant to say is that 3) is, to me, the right answer. > > a) If it's a general library, it belongs in your installed libraries, > not in your application's source tree. > b) But since it's your library to maintain, you can still keep it > around as an editable, live piece of code. > > The above posted workflow gives you the tools to fulfill the > requirements of 3a and 3b. > > J > > On Tue, May 6, 2014 at 11:16 AM, Javier Candeira > wrote: > > What I do: > > > > pip has an option, -e, which installs an "editable" version of a library > > > > and you can pip install from a repository, like so: > > > > pip -e git+ > https://github.com/candeira/ansible.git at a002a249731ca7c7dd35d0d4f79108b632fde2dd#egg=ansible-dev > > > > Now my development virtualenv is running this particular library from > > its src/ansible/ directory, an editable git repo which I can modify, > > checkout branches and, in this case, since Ansible is not my project, > > make pull requests with bugfixes and features. If it were mine, I > > could publish the appropriate branch to git master and to the cheese > > shop. > > > > The workflow is still not set in stone, but works quite well for me. > > > > J > > > > On Tue, May 6, 2014 at 10:54 AM, Peter Davis > wrote: > >> Hi, > >> > >> Sounds like you probably have two libraries, a public and private one. I > >> would fork the latter (private) from the former (public) and put it on a > >> private online repository. Then you can install the private version > using > >> pip's git+ssh functionality. > >> > >> Any changes you make to private library could be potentially pushed back > >> upstream to the public one. > >> > >> Peter > >> > >> On 6 May 2014, at 10:45 am, Noon Silk wrote: > >> > >> Hello, > >> > >> Suppose you are writing some code. Suppose one day, you decide "hey, > this > >> bit of code is sufficiently common, I'll make it into an independent > >> library!", so you do that, you publish it on github and bask in the > >> green-ness of your travis build. > >> > >> Now suppose you want to use this common library in your own "main" app > >> somehow. You have a few options for including it: > >> > >> 1) Local copy in your repo either as: > >> - Subrepo pointing at source, > >> - Subrepo pointing at your own fork (note: in the above case you > might > >> want to modify the public library in some way that is not compatible > with > >> the public goals, but more of a specific thing for your own internal > stuff.) > >> > >> 2) Local copy as symlink to a clone or fork as above > >> > >> 3) Completely independent thing that you pip install > >> > >> What option do you take? (I've probably missed other better ideas.) I > have > >> some feelings about this, but I'm not entirely sure which way is the > best > >> way yet, and am interested in opinions, and maybe more interested in > *what > >> you actually do*. > >> > >> Suppose that the common library is changing "somewhat often"; maybe > once a > >> month or so. Let's suppose you'd prefer to move functionality into that > >> library, but you can forsee needing to modify it for your own needs > (well, > >> if so, does this just flat-out eliminate option 3?). > >> > >> Note, I suppose, in the options where you might accidentally modify it > >> (when you have a local copy) you probably need to be running the tests. > >> > >> -- > >> Noon Silk > >> > >> Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ > >> > >> "Every morning when I wake up, I experience an exquisite joy -- the joy > >> of being this signature." > >> _______________________________________________ > >> melbourne-pug mailing list > >> melbourne-pug at python.org > >> https://mail.python.org/mailman/listinfo/melbourne-pug > >> > >> > >> > >> _______________________________________________ > >> melbourne-pug mailing list > >> melbourne-pug at python.org > >> https://mail.python.org/mailman/listinfo/melbourne-pug > >> > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From noonslists at gmail.com Tue May 6 05:34:09 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 13:34:09 +1000 Subject: [melbourne-pug] The One True way to structure repositories for common code re-use In-Reply-To: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: > Sounds like you probably have two libraries, a public and private > one. I would fork the latter (private) from the former (public) and > put it on a private online repository. Then you can install the private > version using pip's git+ssh functionality. > > Any changes you make to private library could be potentially pushed > back upstream to the public one. I've maybe not been completely clear. I just want to know the Best Way to maintain a common repository inside another set of repositories that reference it. It doesn't really make a difference if they are public or private (assume they are both public, in the case I'm thinking of doing this, they are.) I'm not entirely sure of the best way to easily share common code with my own code in python; subrepos, symlinks, completely external lib, that support, in the nicest way possible, testing of changes, commiting of changes as functional units, and minimal overhead in actual work so I can do actual programming. On Tue, May 6, 2014 at 10:54 AM, Peter Davis wrote: > Hi, > > Sounds like you probably have two libraries, a public and private one. I > would fork the latter (private) from the former (public) and put it on a > private online repository. Then you can install the private version using > pip's git+ssh functionality. > > Any changes you make to private library could be potentially pushed back > upstream to the public one. > > Peter > > On 6 May 2014, at 10:45 am, Noon Silk wrote: > > Hello, > > Suppose you are writing some code. Suppose one day, you decide "hey, > this bit of code is sufficiently common, I'll make it into an independent > library!", so you do that, you publish it on github and bask in the > green-ness of your travis build. > > Now suppose you want to use this common library in your own "main" app > somehow. You have a few options for including it: > > 1) Local copy in your repo either as: > - Subrepo pointing at source, > - Subrepo pointing at your own fork (note: in the above case you might > want to modify the public library in some way that is not compatible with > the public goals, but more of a specific thing for your own internal stuff.) > > 2) Local copy as symlink to a clone or fork as above > > 3) Completely independent thing that you pip install > > What option do you take? (I've probably missed other better ideas.) I > have some feelings about this, but I'm not entirely sure which way is the > best way yet, and am interested in opinions, and maybe more interested in > *what you actually do*. > > Suppose that the common library is changing "somewhat often"; maybe once > a month or so. Let's suppose you'd prefer to move functionality into that > library, but you can forsee needing to modify it for your own needs (well, > if so, does this just flat-out eliminate option 3?). > > Note, I suppose, in the options where you might accidentally modify it > (when you have a local copy) you probably need to be running the tests. > > -- > Noon Silk > > Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ > > "Every morning when I wake up, I experience an exquisite joy -- the joy > of being this signature." > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > > > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > > -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From noonslists at gmail.com Tue May 6 05:35:35 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 13:35:35 +1000 Subject: [melbourne-pug] The One True way to structure repositories for common code re-use In-Reply-To: References: Message-ID: > > 2) Local copy as symlink to a clone or fork as above > > This is my preference, which I started doing when I decided I would > never ever ever have setuptools even installed on my personal machine > again. It means you can manage different versions of dependencies on > a per-project basis, and have almost complete control over the module > search path (even per entry-point). Yeah, this is also what I do for vim plugins, (or at least new ones). And clearly this is the ultimate model of development practices, so should be adopted everywhere :) Thanks for the feedback everyone! On Tue, May 6, 2014 at 11:08 AM, William ML Leslie < william.leslie.ttg at gmail.com> wrote: > On 6 May 2014 10:45, Noon Silk wrote: > > 1) Local copy in your repo either as: > > - Subrepo pointing at source, > > This is the common practice at work, using braid within a git repo > rather than the built-in sub-repository functionality. Braid is > flaky, uses the wrong APIs into git (changing your locale can prevent > it working), but may at any given time work. Local changes are > possible, but merging upstream back in requires using an intermediate > repository (at least, that's the only way I've gotten it to work). > > > 2) Local copy as symlink to a clone or fork as above > > This is my preference, which I started doing when I decided I would > never ever ever have setuptools even installed on my personal machine > again. It means you can manage different versions of dependencies on > a per-project basis, and have almost complete control over the module > search path (even per entry-point). > > -- > William Leslie > > Notice: > Likely much of this email is, by the nature of copyright, covered > under copyright law. You absolutely MAY reproduce any part of it in > accordance with the copyright law of the nation you are reading this > in. Any attempt to DENY YOU THOSE RIGHTS would be illegal without > prior contractual agreement. > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From javier at candeira.com Tue May 6 05:46:51 2014 From: javier at candeira.com (Javier Candeira) Date: Tue, 6 May 2014 13:46:51 +1000 Subject: [melbourne-pug] Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: Resending to the list. Noon: note I've added some clarifications over what I sent you by mistake. On Tue, May 6, 2014 at 1:31 PM, Noon Silk wrote: > Okay, so but then as part of the ci-build for this local internal project, > you are constantly testing the maybe-not-ever-changed version of the thing > you pip-installed? No, you aren't. It's an external library. If you require, say, Kenneth Reitz's Requests and install it in your virtualenv, you don't run its tests every time you commit something to your project. Here it's the same, except that the library is not Reitz's but yours, and it's still under some (mild) development. You only need to run the tests for your library when you modify your library. > Suppose also you make changes to this library, and they aren't accepted into > the master repo by the maintainer. How do you now share the changes you made > with the other developers of your internal thing? Pip can point to a particular commit, and in my example it does. So you can write on your repo's requirement.txt that commit that does a fix on your own repo. Once it's accepted in the mainline repo, you can modify your requirements.txt to point to the merge commit on the mailine repo. > Am I understanding right > in that they can't get the changes, because the changes will be contained The changes are contained in a git commit, so you can put that in your requirements.txt and ask everyone to update (or have the update in a git hook). > only in a pending pull request? (i.e. for this to work, you'd need to work > from a fork of the common library, and basically always merge in pull If it's not your library, yes. If you are the main author, you work from a checkout of development tip, or your feature tip, or whatever. And your repo can be public or private. It's your project. > requests to the fork. This seems somehow a bit broken to me, I think [you > can't submit a set of changes that contain changes both in the common > library and the internal libraryre as a single set, they must be a separate] I don't understand the difference between the common library and the internal one. Git is truly distributed. You can keep a private branch whose tracking remote is your private repo, and a main branch whose tracking remote is the public repo. I do that with my Ansible development: my branches track my own repo, so I can git push by default, but devel tracks the devel branch on upstream ansible repo, so I can git pull and see what's been done. The people in your team install from your requirements.txt, and the pip -e line on that one should have a release tag or a commit hash, not a branch name. J > On Tue, May 6, 2014 at 11:38 AM, Javier Candeira > wrote: >> >> What I meant to say is that 3) is, to me, the right answer. >> >> a) If it's a general library, it belongs in your installed libraries, >> not in your application's source tree. >> b) But since it's your library to maintain, you can still keep it >> around as an editable, live piece of code. >> >> The above posted workflow gives you the tools to fulfill the >> requirements of 3a and 3b. >> >> J >> >> On Tue, May 6, 2014 at 11:16 AM, Javier Candeira >> wrote: >> > What I do: >> > >> > pip has an option, -e, which installs an "editable" version of a library >> > >> > and you can pip install from a repository, like so: >> > >> > pip -e >> > git+https://github.com/candeira/ansible.git at a002a249731ca7c7dd35d0d4f79108b632fde2dd#egg=ansible-dev >> > >> > Now my development virtualenv is running this particular library from >> > its src/ansible/ directory, an editable git repo which I can modify, >> > checkout branches and, in this case, since Ansible is not my project, >> > make pull requests with bugfixes and features. If it were mine, I >> > could publish the appropriate branch to git master and to the cheese >> > shop. >> > >> > The workflow is still not set in stone, but works quite well for me. >> > >> > J >> > >> > On Tue, May 6, 2014 at 10:54 AM, Peter Davis >> > wrote: >> >> Hi, >> >> >> >> Sounds like you probably have two libraries, a public and private one. >> >> I >> >> would fork the latter (private) from the former (public) and put it on >> >> a >> >> private online repository. Then you can install the private version >> >> using >> >> pip?s git+ssh functionality. >> >> >> >> Any changes you make to private library could be potentially pushed >> >> back >> >> upstream to the public one. >> >> >> >> Peter >> >> >> >> On 6 May 2014, at 10:45 am, Noon Silk wrote: >> >> >> >> Hello, >> >> >> >> Suppose you are writing some code. Suppose one day, you decide "hey, >> >> this >> >> bit of code is sufficiently common, I'll make it into an independent >> >> library!", so you do that, you publish it on github and bask in the >> >> green-ness of your travis build. >> >> >> >> Now suppose you want to use this common library in your own "main" >> >> app >> >> somehow. You have a few options for including it: >> >> >> >> 1) Local copy in your repo either as: >> >> - Subrepo pointing at source, >> >> - Subrepo pointing at your own fork (note: in the above case you >> >> might >> >> want to modify the public library in some way that is not compatible >> >> with >> >> the public goals, but more of a specific thing for your own internal >> >> stuff.) >> >> >> >> 2) Local copy as symlink to a clone or fork as above >> >> >> >> 3) Completely independent thing that you pip install >> >> >> >> What option do you take? (I've probably missed other better ideas.) I >> >> have >> >> some feelings about this, but I'm not entirely sure which way is the >> >> best >> >> way yet, and am interested in opinions, and maybe more interested in >> >> *what >> >> you actually do*. >> >> >> >> Suppose that the common library is changing "somewhat often"; maybe >> >> once a >> >> month or so. Let's suppose you'd prefer to move functionality into that >> >> library, but you can forsee needing to modify it for your own needs >> >> (well, >> >> if so, does this just flat-out eliminate option 3?). >> >> >> >> Note, I suppose, in the options where you might accidentally modify >> >> it >> >> (when you have a local copy) you probably need to be running the tests. >> >> >> >> -- >> >> Noon Silk >> >> >> >> Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ >> >> >> >> "Every morning when I wake up, I experience an exquisite joy ? the joy >> >> of being this signature." >> >> _______________________________________________ >> >> melbourne-pug mailing list >> >> melbourne-pug at python.org >> >> https://mail.python.org/mailman/listinfo/melbourne-pug >> >> >> >> >> >> >> >> _______________________________________________ >> >> melbourne-pug mailing list >> >> melbourne-pug at python.org >> >> https://mail.python.org/mailman/listinfo/melbourne-pug >> >> >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug > > > > > -- > Noon Silk > > Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ > > "Every morning when I wake up, I experience an exquisite joy ? the joy > of being this signature." From noonslists at gmail.com Tue May 6 05:58:16 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 13:58:16 +1000 Subject: [melbourne-pug] Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: On Tue, May 6, 2014 at 1:46 PM, Javier Candeira wrote: > Resending to the list. Noon: note I've added some clarifications over > what I sent you by mistake. > > On Tue, May 6, 2014 at 1:31 PM, Noon Silk wrote: > > Okay, so but then as part of the ci-build for this local internal > project, > > you are constantly testing the maybe-not-ever-changed version of the > thing > > you pip-installed? > > No, you aren't. It's an external library. If you require, say, Kenneth > Reitz's Requests and install it in your virtualenv, you don't run its > tests every time you commit something to your project. Here it's the > same, except that the library is not Reitz's but yours, and it's still > under some (mild) development. > > You only need to run the tests for your library when you modify your > library. > Indeed! Maybe you address it below, but if I am not unit testing it, but perhaps making changes, (you said I'm installing it in "edit" mode), then I must run the tests associated to it! How do I do this if I don't know when changes have been made to it? (Maybe another dev changed it, the travis-ci should notice ...) > > Suppose also you make changes to this library, and they aren't accepted > into > > the master repo by the maintainer. How do you now share the changes you > made > > with the other developers of your internal thing? > > Pip can point to a particular commit, and in my example it does. So > you can write on your repo's requirement.txt that commit that does a > fix on your own repo. Once it's accepted in the mainline repo, you can > modify your requirements.txt to point to the merge commit on the > mailine repo. > > > Am I understanding right > > in that they can't get the changes, because the changes will be contained > > The changes are contained in a git commit, so you can put that in your > requirements.txt and ask everyone to update (or have the update in a > git hook). > But how do they get the commit? To which repo did it go? Ah, I see, in your scenario here the commit is going to your own fork of the main project. Alright. I guess in order to make this work each developer needs to have a fork of the common repo, but if you do this, it avoids the situation I describe below. > only in a pending pull request? (i.e. for this to work, you'd need to work > > from a fork of the common library, and basically always merge in pull > > If it's not your library, yes. If you are the main author, you work > from a checkout of development tip, or your feature tip, or whatever. > And your repo can be public or private. It's your project. > > > requests to the fork. This seems somehow a bit broken to me, I think > [you > > can't submit a set of changes that contain changes both in the common > > library and the internal libraryre as a single set, they must be a > separate] > > I don't understand the difference between the common library and the > internal one. Git is truly distributed. You can keep a private branch > whose tracking remote is your private repo, and a main branch whose > tracking remote is the public repo. I do that with my Ansible > development: my branches track my own repo, so I can git push by > default, but devel tracks the devel branch on upstream ansible repo, > so I can git pull and see what's been done. > > The people in your team install from your requirements.txt, and the > pip -e line on that one should have a release tag or a commit hash, > not a branch name. > > J > -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From noonslists at gmail.com Tue May 6 06:06:47 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 14:06:47 +1000 Subject: [melbourne-pug] Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: There's another problem with this maintain-a-fork business. How does it work for random people wishing to contribute? They are forced to have k forks for all the libraries I've decided to include in this manner. If they fork the main repo, I need to kind of "break" their fork until they also fork the relevant libraries. Maybe this is a feature, but I'm not sure I've seen any open source projects that work this way .... On Tue, May 6, 2014 at 1:58 PM, Noon Silk wrote: > On Tue, May 6, 2014 at 1:46 PM, Javier Candeira wrote: > >> Resending to the list. Noon: note I've added some clarifications over >> what I sent you by mistake. >> >> On Tue, May 6, 2014 at 1:31 PM, Noon Silk wrote: >> > Okay, so but then as part of the ci-build for this local internal >> project, >> > you are constantly testing the maybe-not-ever-changed version of the >> thing >> > you pip-installed? >> >> No, you aren't. It's an external library. If you require, say, Kenneth >> Reitz's Requests and install it in your virtualenv, you don't run its >> tests every time you commit something to your project. Here it's the >> same, except that the library is not Reitz's but yours, and it's still >> under some (mild) development. >> >> You only need to run the tests for your library when you modify your >> library. >> > > Indeed! Maybe you address it below, but if I am not unit testing it, but > perhaps making changes, (you said I'm installing it in "edit" mode), then I > must run the tests associated to it! > > How do I do this if I don't know when changes have been made to it? (Maybe > another dev changed it, the travis-ci should notice ...) > > > >> > Suppose also you make changes to this library, and they aren't accepted >> into >> > the master repo by the maintainer. How do you now share the changes you >> made >> > with the other developers of your internal thing? >> >> Pip can point to a particular commit, and in my example it does. So >> you can write on your repo's requirement.txt that commit that does a >> fix on your own repo. Once it's accepted in the mainline repo, you can >> modify your requirements.txt to point to the merge commit on the >> mailine repo. >> >> > Am I understanding right >> > in that they can't get the changes, because the changes will be >> contained >> >> The changes are contained in a git commit, so you can put that in your >> requirements.txt and ask everyone to update (or have the update in a >> git hook). >> > > But how do they get the commit? To which repo did it go? Ah, I see, in > your scenario here the commit is going to your own fork of the main > project. Alright. I guess in order to make this work each developer needs > to have a fork of the common repo, but if you do this, it avoids the > situation I describe below. > > > > only in a pending pull request? (i.e. for this to work, you'd need to >> work >> > from a fork of the common library, and basically always merge in pull >> >> If it's not your library, yes. If you are the main author, you work >> from a checkout of development tip, or your feature tip, or whatever. >> And your repo can be public or private. It's your project. >> >> > requests to the fork. This seems somehow a bit broken to me, I think >> [you >> > can't submit a set of changes that contain changes both in the common >> > library and the internal libraryre as a single set, they must be a >> separate] >> >> I don't understand the difference between the common library and the >> internal one. Git is truly distributed. You can keep a private branch >> whose tracking remote is your private repo, and a main branch whose >> tracking remote is the public repo. I do that with my Ansible >> development: my branches track my own repo, so I can git push by >> default, but devel tracks the devel branch on upstream ansible repo, >> so I can git pull and see what's been done. >> >> The people in your team install from your requirements.txt, and the >> pip -e line on that one should have a release tag or a commit hash, >> not a branch name. >> >> J >> > > -- > Noon Silk > > Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ > > "Every morning when I wake up, I experience an exquisite joy -- the joy > of being this signature." > -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From william.leslie.ttg at gmail.com Tue May 6 06:09:50 2014 From: william.leslie.ttg at gmail.com (William ML Leslie) Date: Tue, 6 May 2014 14:09:50 +1000 Subject: [melbourne-pug] Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: On 6 May 2014 13:58, Noon Silk wrote: > On Tue, May 6, 2014 at 1:46 PM, Javier Candeira wrote: >> >> The changes are contained in a git commit, so you can put that in your >> requirements.txt and ask everyone to update (or have the update in a >> git hook). > > > But how do they get the commit? To which repo did it go? Ah, I see, in your > scenario here the commit is going to your own fork of the main project. > Alright. I guess in order to make this work each developer needs to have a > fork of the common repo, but if you do this, it avoids the situation I > describe below. Often each project has its own fork of the repos it depends on. There shouldn't really be any difference between these and upstream, but if there needs to be, there is enough indirection for you to do so. If you maintain the project, it could just be a branch or tag rather than a separate repo. -- William Leslie Notice: Likely much of this email is, by the nature of copyright, covered under copyright law. You absolutely MAY reproduce any part of it in accordance with the copyright law of the nation you are reading this in. Any attempt to DENY YOU THOSE RIGHTS would be illegal without prior contractual agreement. From noonslists at gmail.com Tue May 6 06:28:07 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 14:28:07 +1000 Subject: [melbourne-pug] Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: On Tue, May 6, 2014 at 2:09 PM, William ML Leslie < william.leslie.ttg at gmail.com> wrote: > On 6 May 2014 13:58, Noon Silk wrote: > > On Tue, May 6, 2014 at 1:46 PM, Javier Candeira > wrote: > >> > >> The changes are contained in a git commit, so you can put that in your > >> requirements.txt and ask everyone to update (or have the update in a > >> git hook). > > > > > > But how do they get the commit? To which repo did it go? Ah, I see, in > your > > scenario here the commit is going to your own fork of the main project. > > Alright. I guess in order to make this work each developer needs to have > a > > fork of the common repo, but if you do this, it avoids the situation I > > describe below. > > Often each project has its own fork of the repos it depends on. There > shouldn't really be any difference between these and upstream, but if > there needs to be, there is enough indirection for you to do so. > Yeah, this just occurred to me. So if I work on library foo and it is referenced by project x, y, then I need forks of foo for x and y! At the moment that seems very odd to me. But maybe as you say they don't need to be forks; just branches. Maybe in that case everything is good ... > If you maintain the project, it could just be a branch or tag rather > than a separate repo. > > -- > William Leslie > > Notice: > Likely much of this email is, by the nature of copyright, covered > under copyright law. You absolutely MAY reproduce any part of it in > accordance with the copyright law of the nation you are reading this > in. Any attempt to DENY YOU THOSE RIGHTS would be illegal without > prior contractual agreement. > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From javier at candeira.com Tue May 6 06:36:53 2014 From: javier at candeira.com (Javier Candeira) Date: Tue, 6 May 2014 14:36:53 +1000 Subject: [melbourne-pug] Fwd: Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: >> You only need to run the tests for your library when you modify your >> library. > How do I do this if I don't know when changes have been made to it? (Maybe > another dev changed it, the travis-ci should notice ...) Yes, it's now a separate library. It may be in development, but it's tested separately. >> > Am I understanding right >> > in that they can't get the changes, because the changes will be >> > contained >> >> The changes are contained in a git commit, so you can put that in your >> requirements.txt and ask everyone to update (or have the update in a >> git hook). > > > But how do they get the commit? To which repo did it go? Ah, I see, in your Your application repo includes a requirements.txt for your virtualenv, which is updated to point to the new commit for the library. You can set git hooks to make sure that the virtualenv is always updated to what the file says. > scenario here the commit is going to your own fork of the main project. > Alright. I guess in order to make this work each developer needs to have a > fork of the common repo, but if you do this, it avoids the situation I > describe below. Each developer has a local checkout of a branch. Whether that branch is a fork is only a matter of perspective, whether there is a "master" that's external to the development team. J From noonslists at gmail.com Tue May 6 06:57:54 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 14:57:54 +1000 Subject: [melbourne-pug] Fwd: Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: On Tue, May 6, 2014 at 2:36 PM, Javier Candeira wrote: > >> You only need to run the tests for your library when you modify your > >> library. > > How do I do this if I don't know when changes have been made to it? > (Maybe > > another dev changed it, the travis-ci should notice ...) > > Yes, it's now a separate library. It may be in development, but it's > tested separately. > Right. Okay, so I'm very happy if I'm not testing this common "foo" library as part of testing my particular project using it (let's call it Project X.) Well, maybe this solves everything. So we now claim that the ideal set up is: - foo exists as a pip-installable source repo somewhere. - foo has ci testing it for each pull req - each programmer working on project x forks project x *and* foo - foo is included as a "relative subrepo", say, of project x (i'm ignoring this -e option by maybe claiming i'd like this to work for non-python things too) - now i can make changes to foo, commit them to my own repo. say someone else is working on project_x with me; they do pull reqs to me; i am obliged to accept pull reqs to both foo and project_x at the same time. But ... - my dev_foo now needs it's own ci build? (how else will it be auto-tested? or does this only happen on pull reqs up to the guy with the ci build for it?) I guess there are still two problems. The ci builds for foo - who has them? How do they get initiated? Say we're on github with travis. If I pull req to the "main" repo; it will ci build for me. So do I rely on that? Somehow this is now not completely continuous integration. It's some odd version of it; notably, I might not see failures for a long time. The other alternative - creating my own just for the fork - also seems odd. The other problem is that I need to accept pull reqs to foo and project_x in some order, otherwise the build breaks. -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From lars at yencken.org Tue May 6 08:23:26 2014 From: lars at yencken.org (Lars Yencken) Date: Tue, 6 May 2014 16:23:26 +1000 Subject: [melbourne-pug] Fwd: Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: I think the perfect setup is: - foo is a pip-installable repo somewhere with its own CI - projectx is its own repo with its own CI - every projectx version is pinned to a specific foo version (by hash, or by pypi release) You definitely have to do things in sequence still. You need to add functionality to foo before it can be used by projectx. But because you can pin to a hash, you can start using a foo version that's still in foo's pull-request queue in projectx pull requests. Most devs that work on projectx don't need to fork foo's code, pip pulls in the correct foo version automatically for them. Since you're using the main repo for both projects, the CI also remains simple. On 6 May 2014 14:57, Noon Silk wrote: > On Tue, May 6, 2014 at 2:36 PM, Javier Candeira wrote: > >> >> You only need to run the tests for your library when you modify your >> >> library. >> > How do I do this if I don't know when changes have been made to it? >> (Maybe >> > another dev changed it, the travis-ci should notice ...) >> >> Yes, it's now a separate library. It may be in development, but it's >> tested separately. >> > > Right. Okay, so I'm very happy if I'm not testing this common "foo" > library as part of testing my particular project using it (let's call it > Project X.) > > Well, maybe this solves everything. > > So we now claim that the ideal set up is: > - foo exists as a pip-installable source repo somewhere. > - foo has ci testing it for each pull req > - each programmer working on project x forks project x *and* foo > - foo is included as a "relative subrepo", say, of project x (i'm > ignoring this -e option by maybe claiming i'd like this to work for > non-python things too) > - now i can make changes to foo, commit them to my own repo. say someone > else is working on project_x with me; they do pull reqs to me; i am obliged > to accept pull reqs to both foo and project_x at the same time. > > But ... > - my dev_foo now needs it's own ci build? (how else will it be > auto-tested? or does this only happen on pull reqs up to the guy with the > ci build for it?) > > I guess there are still two problems. The ci builds for foo - who has > them? How do they get initiated? Say we're on github with travis. If I pull > req to the "main" repo; it will ci build for me. So do I rely on that? > Somehow this is now not completely continuous integration. It's some odd > version of it; notably, I might not see failures for a long time. The other > alternative - creating my own just for the fork - also seems odd. The other > problem is that I need to accept pull reqs to foo and project_x in some > order, otherwise the build breaks. > > -- > Noon Silk > > Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ > > "Every morning when I wake up, I experience an exquisite joy ? the joy > of being this signature." > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From noonslists at gmail.com Tue May 6 08:48:53 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 6 May 2014 16:48:53 +1000 Subject: [melbourne-pug] Fwd: Fwd: The One True way to structure repositories for common code re-use In-Reply-To: References: <810C8C51-9C37-4F50-A051-9D31E78BFD69@gmail.com> Message-ID: On Tue, May 6, 2014 at 4:23 PM, Lars Yencken wrote: > I think the perfect setup is: > > - foo is a pip-installable repo somewhere with its own CI > - projectx is its own repo with its own CI > - every projectx version is pinned to a specific foo version (by hash, or > by pypi release) > > You definitely have to do things in sequence still. You need to add > functionality to foo before it can be used by projectx. But because you can > pin to a hash, you can start using a foo version that's still in foo's > pull-request queue in projectx pull requests. > > Most devs that work on projectx don't need to fork foo's code, pip pulls > in the correct foo version automatically for them. > > Since you're using the main repo for both projects, the CI also remains > simple. > I remain not entirely convinced, but maybe that's my problem. Thanks for the feedback, everyone! -- Noon Silk Fancy a quantum lunch? https://sites.google.com/site/quantumlunch/ "Every morning when I wake up, I experience an exquisite joy -- the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From tom at jugglethis.net Tue May 6 02:50:25 2014 From: tom at jugglethis.net (Tom Allen) Date: Tue, 6 May 2014 10:50:25 +1000 Subject: [melbourne-pug] Getting Tom Allen's "The Longest Road" In-Reply-To: References: Message-ID: Thanks William. I suspect most people on this list will be happy to try and build/run this from source, in which case you'll need Python 3.3 (ish...) and a recent pygame. I'd done most of my development on windows in which case this was easy enough as there were pre-built binaries for both. On the Mac laptop I presented upon, it took an hour or so to get up and running - http://dudeslife.com/blog/2014/programming/installing-python-3-3-3-pygame-on-os-x-mavericks/helped a lot. For windows users, here's a straight up installer: https://dl.dropboxusercontent.com/u/9819033/The%20Longest%20Road-1.0-win32.msi Cheers, Tom Allen tom at jugglethis.net +61 412 335 425 http://www.drtomallen.com On 6 May 2014 10:34, William ML Leslie wrote: > Thanks everyone for a great meeting. If you were looking for Tom's > game, here's the repo so you don't have to google so creatively. > > https://github.com/Schwolop/GetToAnExit > > -- > William Leslie > > Notice: > Likely much of this email is, by the nature of copyright, covered > under copyright law. You absolutely MAY reproduce any part of it in > accordance with the copyright law of the nation you are reading this > in. Any attempt to DENY YOU THOSE RIGHTS would be illegal without > prior contractual agreement. > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -------------- next part -------------- An HTML attachment was scrubbed... URL: From javier at candeira.com Tue May 6 12:36:45 2014 From: javier at candeira.com (Javier Candeira) Date: Tue, 6 May 2014 20:36:45 +1000 Subject: [melbourne-pug] Getting Tom Allen's "The Longest Road" Message-ID: Thanks Tom and also Tim and Ben for presenting yesterday. > For windows users, here's a straight up installer: > https://dl.dropboxusercontent.com/u/9819033/The%20Longest%20Road-1.0-win32.msi On Ubuntu 13.10, the Windows .msi installer also works out of the box on Wine. J From daryl at commoncode.com.au Thu May 8 03:35:24 2014 From: daryl at commoncode.com.au (Daryl Antony) Date: Thu, 8 May 2014 11:35:24 +1000 Subject: [melbourne-pug] =?utf-8?q?Common_Code_=E2=80=93_Python_Roles?= Message-ID: Hi everyone, Common Code currently has several openings for python/django based roles. Please email daryl at commoncode.com.au if you're interested. Bests! # Daryl Antony class CommonCode(object): mobile = '+61 423 972 657' address = '114 Hoddle Street, Abbotsford 3067' def follow_tweets(self): twitter.follow('@DarylAntony') -------------- next part -------------- An HTML attachment was scrubbed... URL: From dcrisp at netspace.net.au Tue May 13 08:23:49 2014 From: dcrisp at netspace.net.au (David Crisp) Date: Tue, 13 May 2014 16:23:49 +1000 (EST) Subject: [melbourne-pug] string formatting / Format SPecific Mini Language Message-ID: I need to create a string that has a variable length of padding and im not sure how to do it. For instance some_string = ("{something:<40}".format(something = somethingelse)) will give me a 40 space padded display of something What if, after a little bit of string concatination (for want of a abetter word) I want to do the following: string_length = len(some_other_string) some_string = ("{something: References: Message-ID: You need two steps of formatting: >>> string_length = 35 >>> format_string = "{something:<%d}" % string_length >>> format_string '{something:<35}' >>> some_string = (format_string.format(something="somethingelse")) >>> some_string 'somethingelse ' >>> J On Tue, May 13, 2014 at 4:23 PM, David Crisp wrote: > I need to create a string that has a variable length of padding and im not > sure how to do it. > > For instance > > some_string = ("{something:<40}".format(something = somethingelse)) > > will give me a 40 space padded display of something > > > What if, after a little bit of string concatination (for want of a abetter > word) I want to do the following: > > string_length = len(some_other_string) > > some_string = ("{something: somethingelse)) > > When I do this I get a ValueError: Invalid format specifier. > > IS there a clean and neat way of doing the above? > > Regards, > David Crisp > > > > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug From tom at jugglethis.net Tue May 13 08:39:12 2014 From: tom at jugglethis.net (Tom Allen) Date: Tue, 13 May 2014 16:39:12 +1000 Subject: [melbourne-pug] string formatting / Format SPecific Mini Language In-Reply-To: References: Message-ID: Maybe I'm missing something, but some_string = padding_character * (max(0,40-len(original_string))) + original_string ought to do the trick. Tom On 13 May 2014 16:23, David Crisp wrote: > I need to create a string that has a variable length of padding and im not > sure how to do it. > > For instance > > some_string = ("{something:<40}".format(something = somethingelse)) > > will give me a 40 space padded display of something > > > What if, after a little bit of string concatination (for want of a abetter > word) I want to do the following: > > string_length = len(some_other_string) > > some_string = ("{something: somethingelse)) > > When I do this I get a ValueError: Invalid format specifier. > > IS there a clean and neat way of doing the above? > > Regards, > David Crisp > > > > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -------------- next part -------------- An HTML attachment was scrubbed... URL: From joshbode at gmail.com Tue May 13 08:50:40 2014 From: joshbode at gmail.com (Josh Bode) Date: Tue, 13 May 2014 16:50:40 +1000 Subject: [melbourne-pug] string formatting / Format SPecific Mini Language In-Reply-To: References: Message-ID: How about "{0:<{1}}".format(something, 10) Cheers, Josh On 2014-05-13, at 4:23 pm, David Crisp wrote: > I need to create a string that has a variable length of padding and im not sure how to do it. > > For instance > > some_string = ("{something:<40}".format(something = somethingelse)) > > will give me a 40 space padded display of something > > > What if, after a little bit of string concatination (for want of a abetter word) I want to do the following: > > string_length = len(some_other_string) > > some_string = ("{something: > When I do this I get a ValueError: Invalid format specifier. > > IS there a clean and neat way of doing the above? > > Regards, > David Crisp > > > > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug From joshbode at gmail.com Tue May 13 08:55:33 2014 From: joshbode at gmail.com (Josh Bode) Date: Tue, 13 May 2014 16:55:33 +1000 Subject: [melbourne-pug] string formatting / Format SPecific Mini Language In-Reply-To: References: Message-ID: <1BEFC5F7-E650-43FD-A0E3-98A0020C1728@gmail.com> However, I?m not sure exactly what that emoticon is, though? er, man with halo and beard, perhaps? On 2014-05-13, at 4:50 pm, Josh Bode wrote: > How about "{0:<{1}}".format(something, 10) > > Cheers, > Josh > > On 2014-05-13, at 4:23 pm, David Crisp wrote: > >> I need to create a string that has a variable length of padding and im not sure how to do it. >> >> For instance >> >> some_string = ("{something:<40}".format(something = somethingelse)) >> >> will give me a 40 space padded display of something >> >> >> What if, after a little bit of string concatination (for want of a abetter word) I want to do the following: >> >> string_length = len(some_other_string) >> >> some_string = ("{something:> >> When I do this I get a ValueError: Invalid format specifier. >> >> IS there a clean and neat way of doing the above? >> >> Regards, >> David Crisp >> >> >> >> >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug > From sam at nipl.net Tue May 13 08:58:13 2014 From: sam at nipl.net (Sam Watkins) Date: Tue, 13 May 2014 16:58:13 +1000 Subject: [melbourne-pug] string formatting / Format SPecific Mini Language In-Reply-To: References: Message-ID: <20140513065813.GL6347@opal.nipl.net> On Tue, May 13, 2014 at 04:50:40PM +1000, Josh Bode wrote: > How about "{0:<{1}}".format(something, 10) Yeah that's the way. FWIW we can do this kind of thing with printf in C and shell, too: printf("%*d",10,4); printf "%*d" 10 4 From tom at tomdunham.org Tue May 13 09:17:09 2014 From: tom at tomdunham.org (Tom Dunham) Date: Tue, 13 May 2014 08:17:09 +0100 Subject: [melbourne-pug] string formatting / Format SPecific Mini Language In-Reply-To: References: Message-ID: String has an 'ljust' method that left-justifies the string in a column of a given length, so you could do: some_string = something.ljust(len(some_other_string)) (I'm on the train so I can't run this to check, but I'm pretty sure that's correct). Cheers, Tom On 13 May 2014 07:27, "David Crisp" wrote: > I need to create a string that has a variable length of padding and im not > sure how to do it. > > For instance > > some_string = ("{something:<40}".format(something = somethingelse)) > > will give me a 40 space padded display of something > > > What if, after a little bit of string concatination (for want of a abetter > word) I want to do the following: > > string_length = len(some_other_string) > > some_string = ("{something: somethingelse)) > > When I do this I get a ValueError: Invalid format specifier. > > IS there a clean and neat way of doing the above? > > Regards, > David Crisp > > > > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -------------- next part -------------- An HTML attachment was scrubbed... URL: From joshbode at gmail.com Tue May 13 11:43:04 2014 From: joshbode at gmail.com (Josh Bode) Date: Tue, 13 May 2014 19:43:04 +1000 Subject: [melbourne-pug] string formatting / Format SPecific Mini Language In-Reply-To: References: Message-ID: This is much more obvious and clear than my solution (which looks like an emoticon gone wrong), and from a quick test, at least twice as fast on small strings ~ 80 characters - and gets even better on long strings (not that speed?s probably a huge factor here) In IPython: In [1]: something = 'A' * 40 In [2]: %timeit something.ljust(80) 1000000 loops, best of 3: 439 ns per loop In [3]: %timeit "{0:<{1}}".format(something, 80) 1000000 loops, best of 3: 876 ns per loop In [4]: %timeit something.ljust(10000) 1000000 loops, best of 3: 867 ns per loop In [5]: %timeit "{0:<{1}}".format(something, 10000) 100000 loops, best of 3: 2.4 ?s per loop On 2014-05-13, at 5:17 pm, Tom Dunham wrote: > String has an 'ljust' method that left-justifies the string in a column of a given length, so you could do: > > some_string = something.ljust(len(some_other_string)) > > (I'm on the train so I can't run this to check, but I'm pretty sure that's correct). > > Cheers, > Tom > > On 13 May 2014 07:27, "David Crisp" wrote: > I need to create a string that has a variable length of padding and im not sure how to do it. > > For instance > > some_string = ("{something:<40}".format(something = somethingelse)) > > will give me a 40 space padded display of something > > > What if, after a little bit of string concatination (for want of a abetter word) I want to do the following: > > string_length = len(some_other_string) > > some_string = ("{something: > When I do this I get a ValueError: Invalid format specifier. > > IS there a clean and neat way of doing the above? > > Regards, > David Crisp > > > > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug -------------- next part -------------- An HTML attachment was scrubbed... URL: From noonslists at gmail.com Wed May 14 01:22:44 2014 From: noonslists at gmail.com (Noon Silk) Date: Wed, 14 May 2014 09:22:44 +1000 Subject: [melbourne-pug] Fwd: Announcing: The Privacy Workshop In-Reply-To: References: <4308797eac1d1f104302b0554373c9ccef5.20140513230200@mail14.atl91.mcsv.net> Message-ID: This may be of interest to some - look pretty cool. [always] excellent news from Electron Workshop in sunny North Melbourne! Is this email not displaying correctly? View it in your browser. The Privacy Workshop We're excited to announce our first large-scale public event: The Privacy Workshop . The Privacy Workshop is a one day symposium on privacy, rights and access, to be held at Deakin Edge at Federation Square on the 17th of October, 2014. This is exciting for us on a number of levels - it marks our first external project under the banner of Electron Workshop, which is part of a move away from straight coworking into a broader model, whereby Electron Workshop generates projects both inside and outside of our single physical North Melbourne location. Secondly, The Privacy Workshop is exciting because it is the first such large scale event dedicated to privacy in Melbourne, where we'll be bringing together an amazing list of local and international thought leaders, to create a day of exceptional discourse on a complex and far-reaching subject. Learn more and even get involved at www.privacyworkshop.com.au . Special thanks to our launch partners Electronic Frontiers Australia, Thoughtworks, and Scribble Inc . follow on Twitter| friend on Facebook| forward to a friend *Copyright ? 2014 Electron Workshop, All rights reserved.* You are receiving this email because you signed up via the Electron Workshop website. *Our mailing address is:* Electron Workshop 31 Arden St Melbourne, Victoria 3051 Australia Add us to your address book unsubscribe from this list| update subscription preferences -- Noon Silk, ? https://sites.google.com/site/noonsilk/ "Every morning when I wake up, I experience an exquisite joy ? the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From rowan at myedapp.com Thu May 15 01:08:53 2014 From: rowan at myedapp.com (Rowan Kunz) Date: Thu, 15 May 2014 09:08:53 +1000 Subject: [melbourne-pug] Australia's first educational hackathon Message-ID: Hey everyone, Rowan here from myEd (we're a Sydney based start up working in the educational technology sector helping schools make the transition to digital). We've recently teamed up with the Centre for New Public Education to host Australia?s first education hackathon, Eduhack, on June 20-22 in Melbourne. EduHack is a 56 hour event across the weekend of 20th June that will bring together students and individuals from the education, business, and technology communities to share ideas, form teams and design and develop innovative solutions that tackle real education challenges. We?re extremely excited as this will be the first time in Australia that the hackathon model is applied to education to catalyze innovation. *Why am I sharing this with you?* (hopefully it's OK for me to make this post in your forum - if not, apologies in advance!) 1. We need your help to break down the barriers between digital innovation and the education sector 2. Individuals with business & technical skills like yourself are critical to the development of amazing startups at EduHack that tackle real educational challenges 3. We?d love for you to play a role in sparking innovation and change in education in Australia by using your business & technical skills to create meaningful social impact. *How can you get involved?* 1. Go to our website www.eduhack.com.au to register for EduHack. 2. We need you to spread the word about this fantastic opportunity to like-minded individuals within your meet-up group (and beyond!) you believe would be interested in taking part in this ground-breaking weekend. For more information about the event and it?s structure, please visit our website at www.eduhack.com.au Please feel free to contact me with any questions you may have about the event. Best regards (and looking forward to seeing you at eduHack! Rowan Kunz rowan[at]myedapp.com myEd -- ------------------------------------------------------------------------------------------------------------- *Rowan Kunz, *Co-Founder & Chief Learning Architect *myEd * - *Learning in the palm of your hand. * Who doesn't love a good ol' fashion blog | Join the fun on Facebook | Stalk us @myEdOnline Connect with me on Linked In ? -------------- next part -------------- An HTML attachment was scrubbed... URL: From dcrisp at netspace.net.au Fri May 16 01:36:40 2014 From: dcrisp at netspace.net.au (David Crisp) Date: Fri, 16 May 2014 09:36:40 +1000 (EST) Subject: [melbourne-pug] string formatting / Format SPecific Mini Language In-Reply-To: References: Message-ID: Thank you Josh (and everybody else who came up with suggestions), this particular example was excatly what I was after! On Tue, 13 May 2014, Josh Bode wrote: > How about "{0:<{1}}".format(something, 10) > > Cheers, > Josh > > On 2014-05-13, at 4:23 pm, David Crisp wrote: > >> I need to create a string that has a variable length of padding and im not sure how to do it. >> >> For instance >> >> some_string = ("{something:<40}".format(something = somethingelse)) >> >> will give me a 40 space padded display of something >> >> >> What if, after a little bit of string concatination (for want of a abetter word) I want to do the following: >> >> string_length = len(some_other_string) >> >> some_string = ("{something:> >> When I do this I get a ValueError: Invalid format specifier. >> >> IS there a clean and neat way of doing the above? >> >> Regards, >> David Crisp >> >> >> >> >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > From javier at candeira.com Tue May 20 02:49:02 2014 From: javier at candeira.com (Javier Candeira) Date: Tue, 20 May 2014 10:49:02 +1000 Subject: [melbourne-pug] Reminder: 2 June MPUG meeting, Inspire 9 Message-ID: Hi Melbourne Pythonistas, This is just a reminder to pencil into your datebooks the next MPUG meeting, on June 2 at 6pm. The venue, as usual, Inspire9. We'll have Lars Yencken talking to us about his Pycon US (CA really) experience, Tim Asquith about pyenv, and Chris Hausler about Machine Learning with Pandas/Scikit. See you all in two weeks! From noonslists at gmail.com Thu May 22 03:29:58 2014 From: noonslists at gmail.com (Noon Silk) Date: Thu, 22 May 2014 11:29:58 +1000 Subject: [melbourne-pug] [Job] - Software Developer at Biarri Networks Message-ID: Hey All, We're looking for a python programmer for the Networks team, check out the ad on StackOverflow if you're keen! - http://careers.stackoverflow.com/jobs/57534/software-developer-mathematical-optimisation-biarri-networks -- Noon Silk, ? https://sites.google.com/site/noonsilk/ "Every morning when I wake up, I experience an exquisite joy ? the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From javier at candeira.com Tue May 27 02:52:43 2014 From: javier at candeira.com (Javier Candeira) Date: Tue, 27 May 2014 10:52:43 +1000 Subject: [melbourne-pug] Reminder: 2 June MPUG meeting, Inspire 9 In-Reply-To: References: Message-ID: Hi everyone, Apart from repeating the previous reminder, I'd like to give a 5 minute lightning talk on: "Start Collaborating to FLOSS Python Projects on Github With This One Weird Ruby Trick!" J On Tue, May 20, 2014 at 10:49 AM, Javier Candeira wrote: > Hi Melbourne Pythonistas, > > This is just a reminder to pencil into your datebooks the next MPUG > meeting, on June 2 at 6pm. The venue, as usual, Inspire9. > > We'll have Lars Yencken talking to us about his Pycon US (CA really) > experience, Tim Asquith about pyenv, and Chris Hausler about Machine > Learning with Pandas/Scikit. > > See you all in two weeks! From noonslists at gmail.com Tue May 27 03:03:10 2014 From: noonslists at gmail.com (Noon Silk) Date: Tue, 27 May 2014 11:03:10 +1000 Subject: [melbourne-pug] Reminder: 2 June MPUG meeting, Inspire 9 In-Reply-To: References: Message-ID: Damn, that's a captivating talk title. Nice one. On Tue, May 27, 2014 at 10:52 AM, Javier Candeira wrote: > Hi everyone, > > Apart from repeating the previous reminder, I'd like to give a 5 > minute lightning talk on: > > "Start Collaborating to FLOSS Python Projects on Github With This One > Weird Ruby Trick!" > > J > > On Tue, May 20, 2014 at 10:49 AM, Javier Candeira > wrote: > > Hi Melbourne Pythonistas, > > > > This is just a reminder to pencil into your datebooks the next MPUG > > meeting, on June 2 at 6pm. The venue, as usual, Inspire9. > > > > We'll have Lars Yencken talking to us about his Pycon US (CA really) > > experience, Tim Asquith about pyenv, and Chris Hausler about Machine > > Learning with Pandas/Scikit. > > > > See you all in two weeks! > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -- Noon Silk, ? https://sites.google.com/site/noonsilk/ "Every morning when I wake up, I experience an exquisite joy ? the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From chrisjrn at gmail.com Tue May 27 03:21:21 2014 From: chrisjrn at gmail.com (Chris Neugebauer) Date: Tue, 27 May 2014 11:21:21 +1000 Subject: [melbourne-pug] PyCon Australia 2014 Early Bird Registrations Now Open! Message-ID: We are delighted to announce that online registration is now open for PyCon Australia 2014. The fifth PyCon Australia is being held in Brisbane, Queensland from August 1st ? 5th at the Brisbane Convention and Exhibition Centre and is expected to draw hundreds of Python developers, enthusiasts and students from Australasia and afar. Starting today, early bird offers are up for grabs. To take advantage of these discounted ticket rates, be among the first 100 to register. Early bird registration starts from $50 for full-time students, $180 for enthusiasts and $450 for professionals. Offers this good won?t last long, so head straight to http://2014.pycon-au.org and register right away. PyCon Australia has endeavoured to keep tickets as affordable as possible. We are able to do so, thanks to our Sponsors and Contributors. We have also worked out favourable deals with accommodation providers for PyCon delegates. Find out more about the options at http://2014.pycon-au.org/register/accommodation To begin the registration process, and find out more about each level of ticket, visit http://2014.pycon-au.org/register/prices Important Dates to Help You Plan =========================== 27 May: Early Bird Registration Opens -- open to the first 100 tickets July 9: Last day to Order PyCon Australia 2014 T-shirts 19 July: Last day to Advise Special Dietary Requirements August 1: PyCon Australia 2014 Begins What?s in store at PyCon Australia 2014? ================================= In keeping with the high standard of previous PyCon events worldwide, this year as well we bring you a sterling line-up of speakers, who will take to the stage to present exciting, engaging and thought-provoking keynotes, talks and tutorials. PyCon Australia 2014 kicks off with miniconferences on Day 1. Django developers can look forward to the return of last year?s successful DjangoCon AU. Not to be outdone, OpenStack developers will be sure to welcome back the second ?Python on OpenStack? day. That?s not all. This year will be marked by the launch of an additional stream, the Science and Data Analysis miniconf, to support the growing communities using Python in scientific applications, big data, and quantitative analysis. Main conference day dawns on August 2. Over the next two, action-packed days, we have lined up for you a riveting programme packed with Keynotes, Lightning talks and tutorials from Python experts and core developers. PyCon Australia aims to have something for everyone. And this year?s line-up will not disappoint. Programme submissions have drawn some of the brightest minds in the field. So, prepare to be inspired and amazed by some seriously great content by debutants, enthusiasts and professionals alike. Finally, we finish off with two exhilarating rounds of developer sprints. We?ll also have time for some fun stuff including a PyCon Dinner, complete with great company and great food. If you are new to PyCon, you might definitely want to add this to your calendar. As any regular attendee will attest, it is the place to be to really soak up the PyCon culture and make friends. More fun events are on the cards, so stay tuned. All in all an action-packed conference awaits you at PyCon Australia this year. So don?t miss out on this opportunity. We look forward to seeing you in Brisbane. Share this with your friends and other Pythonistas. To register, head to: http://2014.pycon-au.org/prices/register Stay connected with us on: Google+: http://plus.google.com/+PyConAU Twitter: http://twitter.com/PyConAU Facebook: http://facebook.com/PyConAustralia Diversity Statement =============== We take pride in being a community-driven conference. And as such, in the true spirit of PyCon Australia, we are committed to upholding the values of being respectful to one another, regardless of gender, sexual orientation, disability, physical appearance, body size, race or religion. In order to make PyCon Australia inclusive in every sense of the word, everyone at the event, the delegates/attendees, speakers, exhibitors, organisers and volunteers, is required to conform to the Code of Conduct (http://2014.pycon-au.org/register/code_of_conduct) Thanks to our Sponsors ================== Our heartfelt gratitude to our incredible sponsors without whose generous support this conference would not have been possible. Thanks to our sponsors, we are able to make PyCon Australia bigger, better and within the reach of the wider community. Platinum: Red Hat Asia Pacific (http://au.redhat.com) Gold: NetBox Blue (http://netboxblue.com) Google Australia (http://google.com) PyCon Australia is presented by Linux Australia (http://www.linux.org.au). About PyCon Australia =================== PyCon Australia is the national conference for the Python Programming Community. The fifth PyCon Australia will be held on August 1-5, 2014 in Brisbane, bringing together professional, student and enthusiast developers with a love for developing with Python. PyCon Australia informs the country?s Python developers with presentations, tutorials and panel sessions by experts and core developers of Python, as well as the libraries and frameworks that they rely on. To find out more about PyCon Australia 2014, visit our website http://2014.pycon-au.org or e-mail us at contact at pycon-au.org. -- --Christopher Neugebauer Jabber: chrisjrn at gmail.com -- IRC: chrisjrn on irc.freenode.net -- WWW: http://chris.neugebauer.id.au -- Twitter: @chrisjrn From sam at nipl.net Tue May 27 05:41:57 2014 From: sam at nipl.net (Sam Watkins) Date: Tue, 27 May 2014 13:41:57 +1000 Subject: [melbourne-pug] Reminder: 2 June MPUG meeting, Inspire 9 In-Reply-To: References: Message-ID: <20140527034157.GT6347@opal.nipl.net> I feel a strange urge to click on a hyperlink. On Tue, May 27, 2014 at 11:03:10AM +1000, Noon Silk wrote: > Damn, that's a captivating talk title. Nice one. > > On Tue, May 27, 2014 at 10:52 AM, Javier Candeira wrote: > > "Start Collaborating to FLOSS Python Projects on Github With This One > > Weird Ruby Trick!" From dcrisp at netspace.net.au Tue May 27 05:52:45 2014 From: dcrisp at netspace.net.au (David Crisp) Date: Tue, 27 May 2014 13:52:45 +1000 (EST) Subject: [melbourne-pug] Any Python-gnuPG success on Windows 7 and Python 3.3 Message-ID: Has anybody had any success getting Python-GnuPG working with Python3.3 on Windows 7? When I run it I get all sorts of errors that look likes its not really likeing the way the arguments are handled. It looks like the Argument / Attribute code isnt working properly. Before I push this back at the authors I was just wanting to make sure I was using it properly. THe documentation SAYS it works with windows BUT it only provides Linux examples. So I MIGHT very well be implimenting it incorrectly. Code: import gnupg pathtobin = "C:\\Program Files (x86)\\GNU\\GnuPG\\pub\\GPG.exe" gpg = gnupg.GPG(gpgbinary = pathtobin, verbose = 'True') print(gpg) Errors: C:\Python33\python.exe C:/Users/dcrisp/Documents/Python/origin/gpgdecrypt.py C:\Program Files (x86)\GNU\GnuPG\pub\GPG.exe --status-fd 2 --no-tty --version 'C:\Program' is not recognized as an internal or external command, operable program or batch file. Traceback (most recent call last): File "C:/Users/dcrisp/Documents/Python/origin/gpgdecrypt.py", line 12, in gpg = gnupg.GPG(gpgbinary = pathtobin, verbose = 'True') File "C:\Python33\lib\site-packages\gnupg.py", line 669, in __init__ result.stderr)) ValueError: Error invoking gpg: 1: 'C:\Program' is not recognized as an internal or external command, operable program or batch file. It looks like the attribute / argument generation code isnt working correctly. Looks like the fault (if there is one) is around line 687 in gnupg.py. But thats just a very rough guess and I have NO idea what to do to repair it. Regards, David From tom at jugglethis.net Tue May 27 06:06:11 2014 From: tom at jugglethis.net (Tom Allen) Date: Tue, 27 May 2014 14:06:11 +1000 Subject: [melbourne-pug] Any Python-gnuPG success on Windows 7 and Python 3.3 In-Reply-To: References: Message-ID: The stupid answer first - move GPG.exe to a new location with no spaces in the path... On 27 May 2014 13:52, David Crisp wrote: > Has anybody had any success getting Python-GnuPG working with Python3.3 on > Windows 7? > > When I run it I get all sorts of errors that look likes its not really > likeing the way the arguments are handled. > > It looks like the Argument / Attribute code isnt working properly. Before > I push this back at the authors I was just wanting to make sure I was using > it properly. > > THe documentation SAYS it works with windows BUT it only provides Linux > examples. So I MIGHT very well be implimenting it incorrectly. > > Code: > import gnupg > pathtobin = "C:\\Program Files (x86)\\GNU\\GnuPG\\pub\\GPG.exe" > gpg = gnupg.GPG(gpgbinary = pathtobin, verbose = 'True') > print(gpg) > > Errors: > > C:\Python33\python.exe C:/Users/dcrisp/Documents/ > Python/origin/gpgdecrypt.py > C:\Program Files (x86)\GNU\GnuPG\pub\GPG.exe --status-fd 2 --no-tty > --version > 'C:\Program' is not recognized as an internal or external command, > operable program or batch file. > Traceback (most recent call last): > File "C:/Users/dcrisp/Documents/Python/origin/gpgdecrypt.py", line 12, > in > gpg = gnupg.GPG(gpgbinary = pathtobin, verbose = 'True') > File "C:\Python33\lib\site-packages\gnupg.py", line 669, in __init__ > result.stderr)) > ValueError: Error invoking gpg: 1: 'C:\Program' is not recognized as an > internal or external command, > operable program or batch file. > > It looks like the attribute / argument generation code isnt working > correctly. > > Looks like the fault (if there is one) is around line 687 in gnupg.py. But > thats just a very rough guess and I have NO idea what to do to repair it. > > Regards, > David > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -------------- next part -------------- An HTML attachment was scrubbed... URL: From samuel.lai at gmail.com Tue May 27 06:49:09 2014 From: samuel.lai at gmail.com (Sam Lai) Date: Tue, 27 May 2014 14:49:09 +1000 Subject: [melbourne-pug] Any Python-gnuPG success on Windows 7 and Python 3.3 In-Reply-To: References: Message-ID: Without looking at the source code, could you try double-quoting the path, e.g. pathtobin = "\"C:\\Program Files (x86)\\GNU\\GnuPG\\pub\\GPG.exe\"' On 27 May 2014 13:52, David Crisp wrote: > Has anybody had any success getting Python-GnuPG working with Python3.3 on > Windows 7? > > When I run it I get all sorts of errors that look likes its not really > likeing the way the arguments are handled. > > It looks like the Argument / Attribute code isnt working properly. Before I > push this back at the authors I was just wanting to make sure I was using it > properly. > > THe documentation SAYS it works with windows BUT it only provides Linux > examples. So I MIGHT very well be implimenting it incorrectly. > > Code: > import gnupg > pathtobin = "C:\\Program Files (x86)\\GNU\\GnuPG\\pub\\GPG.exe" > gpg = gnupg.GPG(gpgbinary = pathtobin, verbose = 'True') > print(gpg) > > Errors: > > C:\Python33\python.exe C:/Users/dcrisp/Documents/Python/origin/gpgdecrypt.py > C:\Program Files (x86)\GNU\GnuPG\pub\GPG.exe --status-fd 2 --no-tty > --version > 'C:\Program' is not recognized as an internal or external command, > operable program or batch file. > Traceback (most recent call last): > File "C:/Users/dcrisp/Documents/Python/origin/gpgdecrypt.py", line 12, in > > gpg = gnupg.GPG(gpgbinary = pathtobin, verbose = 'True') > File "C:\Python33\lib\site-packages\gnupg.py", line 669, in __init__ > result.stderr)) > ValueError: Error invoking gpg: 1: 'C:\Program' is not recognized as an > internal or external command, > operable program or batch file. > > It looks like the attribute / argument generation code isnt working > correctly. > > Looks like the fault (if there is one) is around line 687 in gnupg.py. But > thats just a very rough guess and I have NO idea what to do to repair it. > > Regards, > David > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug From dcrisp at netspace.net.au Tue May 27 08:33:01 2014 From: dcrisp at netspace.net.au (David Crisp) Date: Tue, 27 May 2014 16:33:01 +1000 (EST) Subject: [melbourne-pug] Any Python-gnuPG success on Windows 7 and Python 3.3 In-Reply-To: References: Message-ID: Hi Sam, That.. That seems to have worked to the next stage! (it accepted it without chokeing) I tried all sorts of quoting but I didnt think if quoting like that! :) Thank you. I didnt want to try and mess with moving the executable to a more accessible location as I dont have the ability to do this in the production environemnt. Regards, David On Tue, 27 May 2014, Sam Lai wrote: > Without looking at the source code, could you try double-quoting the path, e.g. > > pathtobin = "\"C:\\Program Files (x86)\\GNU\\GnuPG\\pub\\GPG.exe\"' > > On 27 May 2014 13:52, David Crisp wrote: >> Has anybody had any success getting Python-GnuPG working with Python3.3 on >> Windows 7? >> >> When I run it I get all sorts of errors that look likes its not really >> likeing the way the arguments are handled. >> >> It looks like the Argument / Attribute code isnt working properly. Before I >> push this back at the authors I was just wanting to make sure I was using it >> properly. >> >> THe documentation SAYS it works with windows BUT it only provides Linux >> examples. So I MIGHT very well be implimenting it incorrectly. >> >> Code: >> import gnupg >> pathtobin = "C:\\Program Files (x86)\\GNU\\GnuPG\\pub\\GPG.exe" >> gpg = gnupg.GPG(gpgbinary = pathtobin, verbose = 'True') >> print(gpg) >> >> Errors: >> >> C:\Python33\python.exe C:/Users/dcrisp/Documents/Python/origin/gpgdecrypt.py >> C:\Program Files (x86)\GNU\GnuPG\pub\GPG.exe --status-fd 2 --no-tty >> --version >> 'C:\Program' is not recognized as an internal or external command, >> operable program or batch file. >> Traceback (most recent call last): >> File "C:/Users/dcrisp/Documents/Python/origin/gpgdecrypt.py", line 12, in >> >> gpg = gnupg.GPG(gpgbinary = pathtobin, verbose = 'True') >> File "C:\Python33\lib\site-packages\gnupg.py", line 669, in __init__ >> result.stderr)) >> ValueError: Error invoking gpg: 1: 'C:\Program' is not recognized as an >> internal or external command, >> operable program or batch file. >> >> It looks like the attribute / argument generation code isnt working >> correctly. >> >> Looks like the fault (if there is one) is around line 687 in gnupg.py. But >> thats just a very rough guess and I have NO idea what to do to repair it. >> >> Regards, >> David >> >> _______________________________________________ >> melbourne-pug mailing list >> melbourne-pug at python.org >> https://mail.python.org/mailman/listinfo/melbourne-pug > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > From josh at nitrotech.org Tue May 27 09:22:37 2014 From: josh at nitrotech.org (Joshua Hesketh) Date: Tue, 27 May 2014 17:22:37 +1000 Subject: [melbourne-pug] =?utf-8?q?PyCon_AU_OpenStack_Miniconf_=E2=80=93_C?= =?utf-8?q?all_for_proposals_now_open!?= Message-ID: <53843D3D.9060700@nitrotech.org> The OpenStack miniconf organisers for PyCon AU are pleased to announce their call for proposals is now open! The OpenStack miniconf is a one day conference held on Friday the 1st of August 2014 in Brisbane before PyCon Australia. The day is dedicated to talks related to the OpenStack project and we welcome proposals of all kinds, from all kinds of speakers - first-time through to super-experienced. The miniconf is a community conference and we are eager to hear from anyone in the community. Presentation subjects may range from reports on OpenStack; technical, community, infrastructure or code talks/discussions; academic or commercial applications; or even tutorials and case studies. If a presentation is interesting and useful to the OpenStack community, it will be considered for inclusion. We also welcome talks that have been given previously in different events - e.g. talks from the OpenStack Summit in Atlanta will be considered for inclusion. The deadline for proposals is the 20th of June. If you submitted OpenStack related talks to the main programme we encourage you to re-submit to the miniconf. If you have friends or colleagues who have something valuable to contribute, twist their arms to tell us about it! Please also forward this Call for Proposals to anyone that you feel may be interested. To send in your submissions please visit http://openstack.pycon-au.org See you in Brisbane in August! -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 901 bytes Desc: OpenPGP digital signature URL: From noonslists at gmail.com Wed May 28 13:02:01 2014 From: noonslists at gmail.com (Noon Silk) Date: Wed, 28 May 2014 21:02:01 +1000 Subject: [melbourne-pug] Reminder: 2 June MPUG meeting, Inspire 9 In-Reply-To: <20140527034157.GT6347@opal.nipl.net> References: <20140527034157.GT6347@opal.nipl.net> Message-ID: Relevant: http://downworthy.snipe.net/ On Tue, May 27, 2014 at 1:41 PM, Sam Watkins wrote: > I feel a strange urge to click on a hyperlink. > > On Tue, May 27, 2014 at 11:03:10AM +1000, Noon Silk wrote: > > Damn, that's a captivating talk title. Nice one. > > > > On Tue, May 27, 2014 at 10:52 AM, Javier Candeira >wrote: > > > "Start Collaborating to FLOSS Python Projects on Github With This One > > > Weird Ruby Trick!" > > _______________________________________________ > melbourne-pug mailing list > melbourne-pug at python.org > https://mail.python.org/mailman/listinfo/melbourne-pug > -- Noon Silk, ? https://sites.google.com/site/noonsilk/ "Every morning when I wake up, I experience an exquisite joy ? the joy of being this signature." -------------- next part -------------- An HTML attachment was scrubbed... URL: From dcrisp at netspace.net.au Thu May 29 03:46:43 2014 From: dcrisp at netspace.net.au (David Crisp) Date: Thu, 29 May 2014 11:46:43 +1000 (EST) Subject: [melbourne-pug] Python3 Soap Libraries Optionws Message-ID: What SOAP modules have people used for client operations? Currently I am using suds and I'm not convinced it works properly. I am trying to interact with a usage monitor interface at Rackcorp.com My code snippet im starting with is the following: from suds.client import Client url = 'http://api.rackcorp.net/api/soap/rcnetv123.wsdl' client = Client(url) print(client) When I run that I get the following error: suds.TypeNotFound: Type not found: '(Array, http://schemas.xmlsoap.org/soap/encoding/, )' A google of this error shows a work around .... which doesnt work for me. and as this problem appears to be specific to SUDS im wondering what else out there might be better. Regards, David