Path: csiph.com!usenet.pasdenom.info!news.etla.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed4.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.008 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; ';-)': 0.03; 'syntax': 0.04; 'argument': 0.05; 'preference': 0.07; '22,': 0.09; 'wrapper': 0.09; 'subject:question': 0.10; 'cc:addr:python-list': 0.11; 'def': 0.12; 'wrote': 0.14; 'construct.': 0.16; 'help?': 0.16; 'illegal,': 0.16; 'key):': 0.16; 'mark.': 0.16; 'skip:" 70': 0.16; 'skip:{ 30': 0.16; 'skip:{ 40': 0.16; 'slip': 0.16; 'sat,': 0.16; 'wrote:': 0.18; 'settings': 0.22; '>>>': 0.22; 'cc:addr:python.org': 0.22; 'skip:{ 20': 0.24; 'string,': 0.24; 'tend': 0.24; 'cc:2**0': 0.24; 'options': 0.25; 'skip:" 20': 0.27; 'header:In-Reply-To:1': 0.27; 'words': 0.29; 'said,': 0.30; 'message-id:@mail.gmail.com': 0.30; 'lines': 0.31; '+0100,': 0.31; '>>>>': 0.31; 'class': 0.32; 'probably': 0.32; 'skip:m 30': 0.32; 'quite': 0.32; 'skip:_ 10': 0.34; 'could': 0.34; 'problem': 0.35; 'skip:s 30': 0.35; 'something': 0.35; 'johnson': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'really': 0.36; 'wrong': 0.37; 'too': 0.37; 'rather': 0.38; 'even': 0.60; 'skip:u 10': 0.60; 'forum': 0.61; "you're": 0.61; 'first': 0.61; "you'll": 0.62; 'real': 0.63; 'myself': 0.63; 'within': 0.65; 'it!': 0.67; '(oh': 0.84; 'misses': 0.84; 'nice,': 0.84; 'to:addr:ntlworld.com': 0.84; 'do:': 0.91; 'good,': 0.91; 'rick': 0.93; '2013': 0.98 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; bh=nr8oQpelCqAfXpj4T7njCw4BtU58i+qtMdHxVE5Y2I0=; b=0nEP9HjlxucyCq2GkMmBxnW4rXZAGe63IcTAG7Is0brugqIxwjhlZp7qluBhNkXrdB mMW+y4b70ZQHzO+TDMFqsuMlyvmXPS3t+Sv2uRcqjey/MB9M+J6Ai9ynxFAM3LkVvsFK YOtXMd2eObHKdxde3nnziEli3IffkB8Tlqoav8UFBXrW94bxsDBacAux0IyMTIGHZpQe K3JyiaqlkblnvSeHxxFcSSTzRMYISzZYg5svM9XEh307v8k9M6BkHt/gMEg4GdSrtp/D UMRHXiGtCMzljWQ30IeKprwmFEHmj1NpEB5rqcOAKHTUXG7gbgky4KXXUR7bhbtNUbyi jsGA== X-Received: by 10.112.42.44 with SMTP id k12mr5972166lbl.63.1371925262815; Sat, 22 Jun 2013 11:21:02 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: Joshua Landau Date: Sat, 22 Jun 2013 19:20:22 +0100 Subject: Re: n00b question on spacing To: Alister Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: python-list X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 87 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1371925271 news.xs4all.nl 15988 [2001:888:2000:d::a6]:54037 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:48939 On 22 June 2013 18:28, Alister wrote: > On Sat, 22 Jun 2013 17:11:00 +0100, Joshua Landau wrote: > >> On 22 June 2013 16:55, Rick Johnson >> wrote: >>> On Saturday, June 22, 2013 10:40:24 AM UTC-5, Joshua Landau wrote: >>>> > Plus, your use of the format syntax is incorrect. >>>> Wut? >>> >>> Well what i mean exactly is not that it's illegal, i just find the use >>> of the "getattr sugar", from WITHIN the format string, to be >>> excessively noisy. >> >> Sure... >> So in other words you realised you were wrong but you're too scared to >> admit it. Eh? That's it, isn't it! You just don't want to loosen your >> proud persona :P. > > In this argument I tend to find myself siding with Rick. > Considering his general reputation in this forum am I missing something > or do I need help? ;-) I wasn't mocking the preference against it, but rather that that was completely not what he said originally. One cannot let slip when the mighty Rick misses his mark. That said, yes, it is quite a noisy construct. I still prefer it to: message =3D "Item wrote to MongoDB database {}/{}" message =3D message.format( settings['MONGODB_DB'], settings['MONGODB_COLLECTION'] ) log.msg(message, level=3Dlog.DEBUG, spider=3Dspider) Because this feels undescriptive - the first and "second" lines feel detached. Instead of Rick's hilarious unpacking, you could always do: message =3D "Item wrote to MongoDB database {database}/{collection}" message =3D message.format( database=3Dsettings['MONGODB_DB'], collection=3Dsettings['MONGODB_COLLECTION'] ) log.msg(message, level=3Dlog.DEBUG, spider=3Dspider) Which is probably as good, if longer. You'll see the real problem is that "MONDODB_DB" and "MONGODB_COLLECTION" are awful names; would you really have so detested message =3D "Item wrote to MongoDB database " message +=3D "{settings[database]}/{settings[collection]}".format(settings= =3Dsettings) log.msg(message, level=3Dlog.DEBUG, spider=3Dspider) or even, now, message =3D "Item wrote to MongoDB database {settings[database]}/{settings[collection]}" message =3D message.format(settings=3Dsettings) log.msg(message, level=3Dlog.DEBUG, spider=3Dspider) ? I think those options are quite nice, =C3=A1 mon avis. I could even write a wrapper (oh noes!): # Shortened for EMail class SettingsWrapper: def uglify_key(self, key): return key if key.startswith("MONGODB") else "MONGODB_" + key.upper() def __init__(self, settingsdict): self.wrapped =3D settingsdict def __len__(self): return self.wrapped.__len__() def __iter__(self): return self.wrapped.__iter__() def __getitem__(self, key): return self.wrapped[self.uglify_key(key)] def __contains__(self, key): return self.uglify_key(key) in self.wrappe= d def __setitem__(self, key, value): self.wrapped[self.uglify_key(key)] =3D value def __delitem__(self, key, value): del self.wrapped[self.uglify_key(key= )] settings =3D SettingsWrapper(settings) message =3D "Item wrote to MongoDB database {settings[db]}/{settings[collec= tion]}" message =3D message.format(settings=3Dsettings) log.msg(message, level=3Dlog.DEBUG, spider=3Dspider)