def saveConfiguration(self): if not isinstance(self.settings, Settings): utils.s("* Error saving settings (nothing to save)") return try: pickler = pickle.Pickler(open(configFile, 'wb')) pickler.dump(self.settings) except: utils.s("* Error: could not save configuration to file %s" % configFile) return
def get_user_name(): user = "" user_in = False while user_in is False: print "Please enter your name (between 3 and 20 characters long):" user = raw_input() if valid_username(user): user_in = True else: print "Invalid username! Do you want to die a nameless hero???" s() return user
def loadConfiguration(self): '''Load saved configuration of app. If the config file is not found or cannot be read, a new settings object is returned with defaults. Settings will be validated and are assured not to contain thesauri for which the file does not exist.''' if not os.path.exists(configFile): return settings.getDefaultSettings() try: unpickler = pickle.Unpickler(open(configFile, 'rb')) msettings = unpickler.load() if not isinstance(msettings, Settings): return msettings.getDefaultSettings() msettings.validate() utils.s("* Loaded previously saved settings.") return msettings except: utils.s(" --> Error loading saved settings.") return settings.getDefaultSettings()
def generate_csvreport(ofile, filename): """Adlib fieldstats CSV report. Write HTML report of fieldstats using CSV input file with given name. These fieldstats are a general statistic about the occurence of fields in a dataset.""" utils.s("> generate_csvreport(%s)" % (filename)) utils.s(" + generating fieldstats") fs = fieldstats.FieldStats(filename, type="csv") ofile.write("<h1>Records in bestand: %s</h1>\n" % dn(filename)) ofile.write("<p>Aantal records: %s</p>\n" % fs.totaldocs) ofile.write( htmlutils.HelpElement( show="Toon uitleg bij deze tabel", help=""" <p>Onderstaande tabel toont alle velden die ingevuld werden voor minstens één record uit de lijst. Voor elk veld wordt volgende informatie getoond:</p> <dl> <dt>VELD</dt><dd>De naam van het veld.</dd> <dt>% GEBRUIKT</dt><dd>Het percentage van de records waarvoor dit veld is ingevuld. Opgepast: een waarde "0" geldt ook als ingevuld.</dd> <dt>AANTAL</dt><dd>Het aantal records waarvoor dit veld is ingevuld.</dd> <dt>MEERVOUDIGE WAARDE</dt><dd>Dit geeft aan hoeveel keer het veld <em>gemiddeld</em> is ingevuld per record. Een waarde van "1.2" betekent dat het veld meestal slechts éénmaal is ingevuld, maar voor sommige records twee (of meerdere) keren.<br/> Indien het veld meermaals is ingevuld voor ook maar één record, wordt het vakje paars gekleurd.</dd> <dt>GEM. VELDLENGTE</dt><dd>Het gemiddeld aantal karakters dat ingevuld werd in het veld.</dd> <dt>UNIEKE WAARDEN</dt><dd>Het aantal verschillende waarden dat ingevuld werd in dit veld.<br/> Voorbeeldje:<br/> Elk record zou een eigen, unieke "Naam" moeten hebben, dus moeten er evenveel unieke waarden ingevuld zijn als het aantal records. </dd> </dl> <p>Je kunt op de kolomtitel klikken om de tabel te sorteren volgens die kolom.</p> <p>Als je met de muis boven de naam van het veld hangt (waarde in de kolom "VELD"), krijg je een tooltip met daarin de verschillende waarden die zijn ingevuld voor dit veld en het aantal records waarvoor deze waarde is ingevuld.<br/> Wanneer je het vinkje aanklikt vóór de naam van het veld, verschijnt dit detailtabelletje onderaan de grote tabel, zodat je dit eventueel kunt afdrukken.<br/> Opgepast: de tooltip en de checkbox verschijnen alleen indien niet teveel verschillende waarden bestaan.</p> """, ).render() ) utils.s(" + writing report") fs.generateReport(ofile) utils.s("< generate_csvreport(%s)" % (filename)) fs = None gc.collect()
def generateReportFile(reportfilename, datamap, compliance_test=False, thesaurus_test=True, verbose=True): """Obtain all data and write to HTML. This method is called by regenAll. Datamap is a mapping of museum data files. (the museum objects defined in regenAll)""" output = getOutputFile(reportfilename) output.write(get_header()) if "name" in datamap: output.write("<div class='title'>Statistieken <strong>%s</strong></div>\n" % (datamap["name"])) utils.verbose = verbose thesaurus.setCustomThesauri(ensureList(datamap, "reference_thesauri")) utils.s("START") x = ensureList(datamap, "objects") for infile in ensureList(datamap, "objects"): generate_compliancereport(output, infile, not compliance_test, not thesaurus_test) for infile in ensureList(datamap, "thesaurus"): generate_thesaurusreport(output, infile) for infile in ensureList(datamap, "fieldstats"): generate_report(output, infile) for infile in ensureList(datamap, "csvfieldstats"): generate_csvreport(output, infile) utils.s("DONE") output.write(get_footer()) output.close()
def mage_fight(user_name): player = Mage(name = user_name) print player.name print "GET RRRRRRREEEEEEAAAADY! %s is about to enter the foru...arrr... I mean ...THE ARENA!!! "%player.name troll_name = troll_names[random.randrange(0, len(troll_names))] troll = Troll(name = troll_name) s() print "On the other side..." s() print "...a being so foul, so nasty..." s() print "...known throught the internets as..." s() print "%s!!!!"%troll.name.upper() print "GET READY ..." print "It's %s versus %s!!!"%(troll.name, player.name) return fight(player, troll)
def generate_thesaurusreport(ofile, filename): """Generate HTML report about the thesaurus of an adlib library.""" th = thesaurus.Thesaurus() th.name = dn(filename) utils.s("> generate_thesaurusreport('%s')" % (filename)) utils.s(" + parsing thesaurus") th.parseAdlibDoc(filename) ofile.write("<h1>Thesaurus: %s</h1>" % (dn(filename))) ofile.write("<p>Aantal termen: %s</p>" % (len(th.terms.keys()))) ''' disabling this report because it almost shows the same information as the collection report html += htmlutils.HelpElement(show="Toon uitleg bij deze vergelijkingen", help=""" <p>Onderstaande tabellen vergelijken de thesaurus uit de gebruikte registratiesoftware met een aantal standaard-thesauri.<br/> Er wordt geteld hoeveel termen uit de eigen thesaurus overeenkomen met de standaard-thesaurus.</p> <p>Bemerk dat dit een andere vergelijking is dan hoger bij "Gebruik van thesaurustermen": Hier worden de thesauri term per term vergeleken, onafhankelijk van het aantal keren dat een thesaurusterm werkelijk gebruikt werd in de collectie. In het hoofdstuk "Gebruik van thesaurustermen" wordt rekening gehouden met hoeveel objecten de term werkelijk gebruiken.</p> <p>Mogelijke resultaten zijn:</p> <dl> <dt>Voorkeurterm</dt><dd>De term uit de eigen thesaurus komt overeen met een voorkeurterm uit de standaard-thesaurus.</dd> <dt>Niet de voorkeurterm</dt><dd>De term uit de eigen thesaurus bestaat in de standaard-thesaurus maar is niet de voorkeurterm. De waarde zou vervangen moeten worden door de voorkeurterm.</dd> <dt>Niet in de ... thesaurus</dt><dd>De term is niet bekend in de standaard-thesaurus.</dd> </dl> """).render() 'utils.s("writing report") 'for thesa in thesaurus.getThesauri(): '' html += thesa.getThesaurusThesaurusReport(th)''' th = None gc.collect() ofile.write("<h2>Overzicht gebruikte velden bij de zelf gedefinieerde termen</h2>\n\n") ofile.write( htmlutils.HelpElement( show="Toon uitleg bij deze tabel", help=""" <p>Onderstaande tabel toont alle velden die ingevuld werden voor minstens één thesaurusterm die in de registratiedatabank werd ingevoerd. Voor elk veld wordt volgende informatie getoond:</p> <dl> <dt>VELD</dt><dd>De naam van het veld.</dd> <dt>% GEBRUIKT</dt><dd>Het percentage van de thesaurustermen waarvoor dit veld is ingevuld. Opgepast: een waarde "0" geldt ook als ingevuld.</dd> <dt>AANTAL</dt><dd>Het aantal thesaurustermen waarvoor dit veld is ingevuld.</dd> <dt>MEERVOUDIGE WAARDE</dt><dd>Dit geeft aan hoeveel keer het veld <em>gemiddeld</em> is ingevuld per thesaurustermen. Een waarde van "1.2" betekent dat het veld meestal slechts éénmaal is ingevuld, maar voor sommige thesaurustermen twee (of meerdere) keren.<br/> Indien het veld meermaals is ingevuld voor ook maar één thesaurusterm, wordt het vakje paars gekleurd.</dd> <dt>GEM. VELDLENGTE</dt><dd>Het gemiddeld aantal karakters dat ingevuld werd in het veld.</dd> <dt>UNIEKE WAARDEN</dt><dd>Het aantal verschillende waarden dat ingevuld werd in dit veld.</dd> </dl> <p>Je kunt op de kolomtitel klikken om de tabel te sorteren volgens die kolom.</p> <p>Als je met de muis boven de naam van het veld hangt (waarde in de kolom "VELD"), krijg je een tooltip met daarin de verschillende waarden die zijn ingevuld voor dit veld en het aantal objecten waarvoor deze waarde is ingevuld.<br/> Wanneer je het vinkje aanklikt vóór de naam van het veld, verschijnt dit detailtabelletje onderaan de grote tabel, zodat je dit eventueel kunt afdrukken.<br/> Opgepast: de tooltip en de checkbox verschijnen alleen indien niet teveel verschillende waarden bestaan.</p> """, ).render() ) utils.s(" + generating fieldstats notdoc") fs = fieldstats.FieldStats(filename, documentfilter=thesaurus.notInAnyDocFilter) utils.s(" + writing fieldstats notdoc report") fs.generateReport(ofile) utils.s("< generate_thesaurusreport('%s')" % (filename)) fs = None gc.collect()
def generate_compliancereport(ofile, filename, no_compliance=True, no_thesaurus=False): """Adlib Object XML report. Generate thesaurus compliance report for writing to HTML. A compliance report gives fieldstats information about the fields used in the specified adlib XML document. Unless no_thesaurus is set to true, the fields are also compared with reference thesauri, and a report is generated under the fieldstats table.""" utils.s("> generate_compliancereport(%s)" % filename) ofile.write("<h1>Collectie: %s</h1>\n" % dn(filename)) utils.s(" + generating fieldstats") fs = fieldstats.FieldStats() inputfileformat.parseSAXFile(filename, fs) ofile.write("<p>Aantal objecten in collectie: %s</p>\n" % fs.getSize()) ofile.write("<h2>Overzicht gebruikte velden</h2>\n") ofile.write( htmlutils.HelpElement( show="Toon uitleg bij deze tabel", help=""" <p>Onderstaande tabel toont alle velden die ingevuld werden voor minstens één object uit de collectie. Voor elk veld wordt volgende informatie getoond:</p> <dl> <dt>VELD</dt><dd>De naam van het veld.</dd> <dt>% GEBRUIKT</dt><dd>Het percentage van de objecten waarvoor dit veld is ingevuld. Opgepast: een waarde "0" geldt ook als ingevuld.</dd> <dt>AANTAL</dt><dd>Het aantal objecten waarvoor dit veld is ingevuld.</dd> <dt>MEERVOUDIGE WAARDE</dt><dd>Dit geeft aan hoeveel keer het veld <em>gemiddeld</em> is ingevuld per object. Een waarde van "1.2" betekent dat het veld meestal slechts éénmaal is ingevuld, maar voor sommige objecten twee (of meerdere) keren.<br/> Indien het veld meermaals is ingevuld voor ook maar één object, wordt het vakje paars gekleurd.</dd> <dt>GEM. VELDLENGTE</dt><dd>Het gemiddeld aantal karakters dat ingevuld werd in het veld.</dd> <dt>UNIEKE WAARDEN</dt><dd>Het aantal verschillende waarden dat ingevuld werd in dit veld.<br/> Twee voorbeelden:<br/> Aan elk object moet een eigen, uniek "Objectnummer" toegekend zijn, dus moeten er evenveel unieke waarden ingevuld zijn als het aantal objecten.<br/> Meestal beslaat een collectie slechts één instelling, dus zou er slechts één unieke waarde mogen zijn voor het veld "Instellingsnaam". </dd> </dl> <p>Je kunt op de kolomtitel klikken om de tabel te sorteren volgens die kolom.</p> <p>Als je met de muis boven de naam van het veld hangt (waarde in de kolom "VELD"), krijg je een tooltip met daarin de verschillende waarden die zijn ingevuld voor dit veld en het aantal objecten waarvoor deze waarde is ingevuld.<br/> Wanneer je het vinkje aanklikt vóór de naam van het veld, verschijnt dit detailtabelletje onderaan de grote tabel, zodat je dit eventueel kunt afdrukken.<br/> Opgepast: de tooltip en de checkbox verschijnen alleen indien niet teveel verschillende waarden bestaan.</p> <p>De veldnamen die het belangrijkst zijn volgens het MovE-invulboek, staan <strong>vet</strong> aangegeven. </p> """, ).render() ) utils.s(" + writing fieldstats report") fs.generateReport(ofile) fs = None gc.collect() collection = collectionstats.Collection() """ limit memory usage""" collection.onlyKeepFields = thesaurus.fields_to_check utils.s(" + generating collectionstats report") inputfileformat.parseSAXFile(filename, collection) utils.s(" + writing collectionstats report") collection.generateReport(ofile, no_compliance, no_thesaurus) collection = None gc.collect() utils.s("< generate_compliancereport(%s)" % filename)
#!/usr/bin/env python from utils import s import sys from test_db_setup import * bundle = { 'mouth': "", 'user': "******", 'channel': "uberj", 'msg': sys.argv[2], 'idea': sys.argv[1], # The fist half of the parsed message 'sensory_input':sys.argv[3] , # The second half of the parsed message 'conn': conn, 'cursor': cursor, 'log': "fail" # legacy code already? } print s(bundle)
def fight(player, troll): #Main fight function #Is called by the Mage or Warrior classes and takes in the player and troll objects #Handles their abilities, keeps track of the rounds and determines the winners. #Modularity and all that :) #Initialization conditions player_win = False troll_win = False round = 1 #main loop while (player_win is False and troll_win is False): #main fighting sequence if round == 1: n() print "Tutorial:" print "Both you and the troll get one action (or attack) per turn." print "You can choose which action you want to do by pressing the appropriate key (usually 1 or 2...maybe more in future implementations ;) )" n() print "ROUND "+ str(round) + "!" n() if round == 1: s() print "FIGHT!" n() print "Troll: %s hitpoints"%troll.hitpoints print "%s: %s hitpoints"%(player.name, player.hitpoints) s() n() player_damage = player.action() if player_damage != 0: if troll.dodge_attack(): player_damage = 0 n() s() else: troll.hitpoints = troll.hitpoints - player_damage print "Troll: %s hitpoints"%troll.hitpoints s() n() if dead_check(troll) is True: player_win = True break troll_damage = troll.action() if player.dodge_attack() is True: troll_damage = 0 s() else: player.hitpoints = player.hitpoints - troll_damage if round%2==0: print "Arrrghhh...you take one for the team" n() s() else: print "Not fast enough...dammit..." n() s() print "%s: %s hitpoints"%(player.name, player.hitpoints) n() if dead_check(player) is True: troll_win = True round += 1 if troll_win is True: print "%s finally smashes you into the ground...\n...alas bro, you have given in to his incessant trolling... "%troll.name if player_win is True: print "You are victorious!!!" s() n() print "%s lies defeated in a pool of his on blood after being on the receiving end of your attacks (and good arguments) one too many times"%troll.name print "Young children and old ladies can peruse forums and chatboards without being exposed to his vileness. \n The interwebs are safe...for now. " #
FACEBOOK_API_END = 'https://graph.facebook.com/{0}/feed'.format( FACEBOOK_PAGE_ID) FEED_URL = os.environ.get('FEED_URL') FEED_DATA = parse_rss_bytes(urlopen(FEED_URL).read()) for post in FEED_DATA.items: ITEM_TIMESTAMP = int(post.pub_date.strftime('%Y%m%d%H%M%S')) LAST_TIMESTAMP = int(datetime.now().strftime('%Y%m%d%H%M%S')) - 10000 ITEM_TITLE = u(html_unescape(post.title)) ITEM_LINK = u(post.guid) if ITEM_TIMESTAMP >= LAST_TIMESTAMP: FACEBOOK_API_DATA = { 'message': ITEM_TITLE, 'link': ITEM_LINK, 'access_token': FACEBOOK_ACCESS_TOKEN } HTTP_REQUEST = Request(url=FACEBOOK_API_END, data=s(urlencode(FACEBOOK_API_DATA))) while True: RESULT = json.loads(urlopen(HTTP_REQUEST).read()) if 'error' not in RESULT: print('Publicación exitosa: ' + ITEM_LINK) break
def start(self): museumName = self.museumnaamField.get() museumName = utils.ensureUnicode(museumName) if not museumName.strip(): tkMessageBox.showerror('Geen naam voor de collectie opgegeven', 'Vul de naam van de collectie in, aub.'); return outputFile = self.outputField.get() if not isValidOutputFile(outputFile): tkMessageBox.showerror('Fout bij het starten', 'Kon niet starten omdat er geen correct "Output" bestand is opgegeven.'); return if os.path.exists(outputFile): doOverwrite = tkMessageBox.askyesno('Bestand overschrijven?', 'Het gekozen "Output" bestand bestaat reeds. Wilt u verder gaan en het overschrijven?') if not doOverwrite: return try: waitDialog = WaitDialog(self.parent) utils.setMaxDetail(self.settings.maxUniqueValues) # Will only return input files with valid files and names filled in inputFiles = self.inputFilesTable.getValues() if inputFiles.size() == 0: waitDialog.close() tkMessageBox.showerror('Fout bij het starten', u'Kon niet starten omdat er geen geldige "Input" bestanden zijn opgegeven.\nEr is minstens één input bestand met ingevulde naam, type en bestandslocatie vereist.'); return if self.checkb["state"] != DISABLED and self.checkThesaurus.get(): checkThesaurus = True else: checkThesaurus = False # Set configured reference thesauri err = None if (checkThesaurus): referenceThesauri = self.settings.thesauri err = setCustomThesauri(referenceThesauri) else: err = setCustomThesauri(TEntries()) if (not (err is None)): waitDialog.close() tkMessageBox.showerror('Fout bij het starten', err); return # Set specified input files to analyse objects = [] thesauri = [] fieldstats = [] csvfieldstats = [] inputFiles.sort() for entry in inputFiles.values: utils.s("%s - %s - %s\n" % (entry.name, entry.type, entry.path)) if entry.type == 'Adlib XML Objecten': objects.append(entry.path) elif entry.type == 'XML Fieldstats' or entry.type == "Adlib XML Personen": fieldstats.append(entry.path) elif entry.type == 'CSV Fieldstats': csvfieldstats.append(entry.path) elif entry.type == 'Adlib XML Thesaurus': thesauri.append(entry.path) else: print "ERROR: Input bestand %s met type %s kan niet gebruikt worden" % (entry.name, entry.type) generateReport(museumName, objects, thesauri, fieldstats, csvfieldstats, outputFile, False) except Exception, e: waitDialog.close() stacktrace = traceback.format_exc() print "exception ..." print stacktrace print "done" ExceptionDialog(self.parent, e, stacktrace) return
def initThesauri(): '''Initialize thesauri by parsing them from XML files. Only thesauri for which the files are found are loaded, so it is safe to call this method when not all reference thesauri are present.''' global thesaurus_pref_order global init_done_already global customThesauri if (init_done_already): return init_done_already = True # Custom reference thesauri specified, load those global thesaurus_pref_order thesaurus_pref_order = [] customThesauri.sort() if len(customThesauri.values) > 0: utils.s(" - INITIALIZING custom thesauri (this might take some time) ...") for entry in customThesauri.values: thesaurus = Thesaurus(entry.name) if entry.type == 'Adlib XML Thesaurus': thesaurus.parseDefaultAdlibDoc(entry.path) elif entry.type == 'TXT Thesaurus': thesaurus.parseTextFile(entry.path) else: utils.s(' ! ERROR: reference thesaurus "%s" is of unknown type (%s), don\'t know how to parse it' % (entry.name, entry.type)) continue __thesauri[thesaurus.name] = thesaurus thesaurus_pref_order.append(thesaurus.name) utils.s(" - DONE thesaurus initialisation %s" % str(thesaurus_pref_order)) # Drop out here, do not load default thesauri return thesaurus_pref_order = ["MOT","AM-MovE","AAT-Ned"] # Else, try loading the defaults utils.s(" - INITIALIZING default thesauri (this might take some time) ...") thesauruspad = os.path.join(os.path.dirname(__file__), '..', 'data', 'reference', 'Am_Move_thesaurus06_10.xml') if(os.path.exists(thesauruspad)): try: utils.s(" - parsing MOVE thesaurus") AmMoveThesaurus = Thesaurus('AM-MovE') AmMoveThesaurus.parseDefaultAdlibDoc(thesauruspad) AmMoveThesaurus.name = AmMoveName __thesauri[AmMoveThesaurus.name] = AmMoveThesaurus except IOError as e: print("({})".format(e)) elif 'AM-MovE' in thesaurus_pref_order: thesaurus_pref_order.remove('AM-MovE') thesauruspad = os.path.join(os.path.dirname(__file__),'..', 'data', 'reference', 'aat2000.xml') if(os.path.exists(thesauruspad)): try: utils.s(" - parsing AAT thesaurus") AAT2000 = Thesaurus('AAT-Ned') AAT2000.parseDefaultAdlibDoc(thesauruspad) AAT2000.name = AATNedName __thesauri[AAT2000.name] = AAT2000 except IOError as e: print("({})".format(e)) elif 'AAT-Ned' in thesaurus_pref_order: thesaurus_pref_order.remove("AAT-Ned") thesauruspad = os.path.join(os.path.dirname(__file__), '..', 'data', 'MOT', 'mot-naam.txt') if(os.path.exists(thesauruspad)): try: utils.s(" - parsing MOT name list") MOT_name_list = Thesaurus('MOT') MOT_name_list.parseTextFile(thesauruspad) MOT_name_list.name = MotName __thesauri[MotName] = MOT_name_list except IOError as e: print("({})".format(e)) elif 'MOT' in thesaurus_pref_order: thesaurus_pref_order.remove("MOT") utils.s(" - DONE thesaurus initialisation %s" % str(thesaurus_pref_order))
FEED_URL = os.environ.get('FEED_URL') FEED_DATA = parse_rss_bytes(urlopen(FEED_URL).read()) for post in FEED_DATA.items: ITEM_TIMESTAMP = int(post.pub_date.strftime('%Y%m%d%H%M%S')) LAST_TIMESTAMP = int(datetime.now().strftime('%Y%m%d%H%M%S')) - 10000 ITEM_TITLE = u(html_unescape(post.title)) ITEM_LINK = u(post.guid) TWITTER_STATUS = ITEM_TITLE + ' ' + ITEM_LINK if ITEM_TIMESTAMP >= LAST_TIMESTAMP: SIGNATURE_TIMESTAMP = datetime.now().strftime('%s') SIGNATURE_ONCE = base64.b64encode( s(''.join([str(random.randint(0, 9)) for i in range(24)]))) SIGNATURE_BASE_STRING_AUTH = 'oauth_consumer_key=' + escape( TWITTER_CONSUMER_KEY) SIGNATURE_BASE_STRING_AUTH += '&oauth_nonce=' + escape(SIGNATURE_ONCE) SIGNATURE_BASE_STRING_AUTH += '&oauth_signature_method=' + escape( TWITTER_API_METHOD) SIGNATURE_BASE_STRING_AUTH += '&oauth_timestamp=' + escape( SIGNATURE_TIMESTAMP) SIGNATURE_BASE_STRING_AUTH += '&oauth_token=' + escape( TWITTER_OAUTH_TOKEN) SIGNATURE_BASE_STRING_AUTH += '&oauth_version=' + escape( TWITTER_API_VERSION) SIGNATURE_BASE_STRING_AUTH += '&status=' + escape(TWITTER_STATUS) SIGNATURE_BASE_STRING = s('POST&' + escape(TWITTER_API_END) + '&' + escape(SIGNATURE_BASE_STRING_AUTH)) SIGNATURE_KEY = s(
def intro(): print "Hello World!!! ...\n " s() print "And welcome to The Troll Pit, where aspiring, n00b or l33t, hackers \n fight their fears and confront the nastiest of all internet monsters: \n " s() s() print "THE VICIOUS TROLL!\n\n" s() print "This will be a battle to the death where you will be allowed to use:\n" print "SWORDS!!!" s() print "MAGIC!!!!!!" s() print "FOUL LANGUAGE FROM BEHIND AN ANONYMOUS USERNAME!!!! (note: in future patches)" s() print "...and everyone's favorite..." s() print "A RANDOM NUMBER GENERATOR TO RANDOMLY DETERMINE YOUR CHANCES OF SUCCESS!!!1!1\n\n\n"
from utils import s user = '******' id = 10 print s('Hello {user}. Your id is {id}')
#!/usr/bin/env python from utils import s import sys from test_db_setup import * bundle = { 'mouth': "", 'user': "******", 'channel': "uberj", 'msg': sys.argv[2], 'idea': sys.argv[1], # The fist half of the parsed message 'sensory_input': sys.argv[3], # The second half of the parsed message 'conn': conn, 'cursor': cursor, 'log': "fail" # legacy code already? } print s(bundle)