[Nix-dev] Python packages with __future__ imports broken by wrapper?

Jeffrey David Johnson jefdaj at gmail.com
Fri May 22 00:42:27 CEST 2015


I'm using nixpkgs commit 2d8cfe76a9e4f05e391d30f1654d45dee5993b8a,
which was the newest on nixos-unstable channel about a month ago (I'm
in the process of updating to the newest unstable, but having issues
with some changes I made to the R packages)
Jeff

On Thu, 21 May 2015 18:15:54 +0200
Domen Kožar <domen at dev.si> wrote:

> Are you using unstable branch or 14.12?
> 
> I think we'll need to drop use of sed and go with Python AST parsing for
> injecting program name.
> 
> On Thu, May 21, 2015 at 6:11 PM, Jeffrey David Johnson <jefdaj at gmail.com>
> wrote:
> 
> > I installed python27Packages.googlecl, and when running `google` it says:
> >
> >   File
> > "/nix/store/1ksk91s0kd1sv2clrkwcvzcmr67smgps-python2.7-googlecl-0.9.14/bin/.google-wrapped",
> > line 45
> >     from __future__ import with_statement
> > SyntaxError: from __future__ imports must occur at the beginning of the
> > file
> >
> > Indeed, that file has 44 lines of other stuff first that looks like they
> > were added by a wrapper script:
> >
> > #!/nix/store/pbi1lgank10fy0xpjckbdpgacqw34dsz-python-2.7.9/bin/python2.7
> > #
> > # Copyright (C) 2010 Google Inc.
> > #
> > # Licensed under the Apache License, Version 2.0 (the "License");
> > # you may not use this file except in compliance with the License.
> > # You may obtain a copy of the License at
> > #
> > #      http://www.apache.org/licenses/LICENSE-2.0
> > #
> > # Unless required by applicable law or agreed to in writing, software
> > # distributed under the License is distributed on an "AS IS" BASIS,
> > # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > # See the License for the specific language governing permissions and
> > # limitations under the License.
> >
> >
> > import sys; sys.argv[0] = 'google'
> > """Main function for the Google command line tool, GoogleCL.
> >
> > This program provides some functionality for a number of Google services
> > from
> > the command line.
> >
> > Example usage (omitting the initial "./google"):
> >   # Create a photo album with tags "Vermont" and name "Summer Vacation
> > 2009"
> >   picasa create -n "Summer Vacation 2009" -t Vermont
> > ~/photos/vacation2009/*
> >
> >   # Post photos to an existing album
> >   picasa post -n "Summer Vacation 2008" ~/old_photos/*.jpg
> >
> >   # Download another user's albums whose titles match a regular expression
> >   picasa get --user my.friend.joe --name ".*computer.*"
> > ~/photos/joes_computer
> >
> >   # Delete some posts you accidentally put up
> >   blogger delete -n "Silly post, number [0-9]*"
> >
> >   # Post your latest film endeavor to YouTube
> >   youtube post --category Film --tag "Jane Austen, zombies"
> > ~/final_project.mp4
> >
> > Some terminology in use:
> >   service: The Google service being accessed (e.g. Picasa, Blogger,
> > YouTube).
> >   task: What the client wants done by the service (e.g. post, get, delete).
> >
> > """
> > from __future__ import with_statement
> >
> > __author__ = 'tom.h.miller at gmail.com (Tom Miller)'
> > import glob
> > import logging
> > import optparse
> >
> >
> > I guess we need to move this line below any __future__ statements:
> >
> > import sys; sys.argv[0] = 'google'
> >
> > According to https://docs.python.org/2/reference/simple_stmts.html#future
> > the rest should be OK:
> >
> > A future statement must appear near the top of the module. The only lines
> > that can appear before a future statement are:
> >
> >     the module docstring (if any),
> >     comments,
> >     blank lines, and
> >     other future statements.
> >
> > Jeff
> > _______________________________________________
> > nix-dev mailing list
> > nix-dev at lists.science.uu.nl
> > http://lists.science.uu.nl/mailman/listinfo/nix-dev
> >


More information about the nix-dev mailing list