forked from endorphant/ttbp
		
	updating to 0.11.2
This commit is contained in:
		
						commit
						c5b17a0fdc
					
				
							
								
								
									
										3
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								setup.py
									
									
									
									
									
								
							| @ -4,7 +4,7 @@ from setuptools import setup | ||||
| 
 | ||||
| setup( | ||||
|     name='ttbp', | ||||
|     version='0.10.3', | ||||
|     version='0.11.2', | ||||
|     description='command line social blogging tool used on tilde.town', | ||||
|     url='https://github.com/modgethanc/ttbp', | ||||
|     author='~endorphant', | ||||
| @ -20,6 +20,7 @@ setup( | ||||
|         'inflect==0.2.5', | ||||
|         'mistune==0.8.1', | ||||
|         'colorama==0.3.9', | ||||
|         'six' | ||||
|     ], | ||||
|     include_package_data = True, | ||||
|     entry_points = { | ||||
|  | ||||
| @ -82,7 +82,7 @@ ___________________________________________________________ | ||||
| |  ____ ____ ____ _    ____    ____ _  _ ____ _ _  _ ____  | | ||||
| |  |___ |___ |___ |    [__     |___ |\ | | __ | |\ | |___  | | ||||
| |  |    |___ |___ |___ ___]    |___ | \| |__] | | \| |___  | | ||||
| |                                    ver 0.11.1 (rainbows) | | ||||
| |                                    ver 0.11.2 (rainbows) | | ||||
| |__________________________________________________________| | ||||
| '''.lstrip() | ||||
| 
 | ||||
| @ -146,4 +146,12 @@ version 0.9.3 features: | ||||
|       exciting | ||||
|     * general PSA: feel free to use the github repo for bugs/feature requests: | ||||
|             https://github.com/modgethanc/ttbp/issues""", | ||||
|         } | ||||
|         "0.11.2": """ | ||||
| ~[version 0.11.2 update]~ | ||||
| 
 | ||||
|     * added a new option to allow setting entries to default to either public or | ||||
|       non-public on posting; this option only really makes sense if you're | ||||
|       already publishing to html/gopher, but is available either way! | ||||
|        | ||||
|       you can find this option under 'settings' as 'post as nopub'.""" | ||||
| } | ||||
|  | ||||
							
								
								
									
										95
									
								
								ttbp/core.py
									
									
									
									
									
								
							
							
						
						
									
										95
									
								
								ttbp/core.py
									
									
									
									
									
								
							| @ -235,57 +235,60 @@ def write_global_feed(blogList): | ||||
|       prints to blog feed | ||||
|     ''' | ||||
| 
 | ||||
|     outfile = open(FEED, "w") | ||||
|     try:  | ||||
|         outfile = open(FEED, "w") | ||||
| 
 | ||||
|     ## header | ||||
|     outfile.write("""\ | ||||
| <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 3.2//EN\"> | ||||
| <html> | ||||
|     <head> | ||||
|         <title>tilde.town feels engine</title> | ||||
|         <link rel=\"stylesheet\" href=\"style.css\" /> | ||||
|     </head> | ||||
|     <body> | ||||
|         <div class="meta"> | ||||
|         <h1>tilde.town feels engine</h1> | ||||
|         ## header | ||||
|         outfile.write("""\ | ||||
|     <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 3.2//EN\"> | ||||
|     <html> | ||||
|         <head> | ||||
|             <title>tilde.town feels engine</title> | ||||
|             <link rel=\"stylesheet\" href=\"style.css\" /> | ||||
|         </head> | ||||
|         <body> | ||||
|             <div class="meta"> | ||||
|             <h1>tilde.town feels engine</h1> | ||||
| 
 | ||||
|         <h2><a href="https://github.com/modgethanc/ttbp">github | ||||
|         repo</a> | <a | ||||
|         href="http://tilde.town/~endorphant/blog/20160510.html">state | ||||
|         of the ttbp</a></h2> | ||||
|         <!--<p>curious? run <b>~endorphant/bin/ttbp</b> while logged in to tilde.town.</p> | ||||
|         <p>it's still a little volatile. let me know if anything breaks.</p>---></div> | ||||
|         <p> </p> | ||||
| """) | ||||
|             <h2><a href="https://github.com/modgethanc/ttbp">github | ||||
|             repo</a> | <a | ||||
|             href="http://tilde.town/~endorphant/blog/20160510.html">state | ||||
|             of the ttbp</a></h2> | ||||
|             <!--<p>curious? run <b>~endorphant/bin/ttbp</b> while logged in to tilde.town.</p> | ||||
|             <p>it's still a little volatile. let me know if anything breaks.</p>---></div> | ||||
|             <p> </p> | ||||
|     """) | ||||
| 
 | ||||
|     ## docs | ||||
|     outfile.write("""\ | ||||
|         <div class="docs">""") | ||||
|     outfile.write(mistune.markdown(open(os.path.join(config.INSTALL_PATH, "..", "README.md"), "r").read())) | ||||
|     outfile.write("""\ | ||||
|         </div>""") | ||||
|         ## docs | ||||
|         outfile.write("""\ | ||||
|             <div class="docs">""") | ||||
|         outfile.write(mistune.markdown(open(os.path.join(config.INSTALL_PATH, "..", "README.md"), "r").read())) | ||||
|         outfile.write("""\ | ||||
|             </div>""") | ||||
| 
 | ||||
|     ## feed | ||||
|     outfile.write("""\ | ||||
|         <p> </p> | ||||
|         <div class=\"feed\"> | ||||
|         <h3>live feels-sharing:</h3> | ||||
|             <ul>""") | ||||
|     for blog in blogList: | ||||
|         ## feed | ||||
|         outfile.write("""\ | ||||
|             <p> </p> | ||||
|             <div class=\"feed\"> | ||||
|             <h3>live feels-sharing:</h3> | ||||
|                 <ul>""") | ||||
|         for blog in blogList: | ||||
|             outfile.write(""" | ||||
|                     <li>"""+blog+"""</li>\ | ||||
|                         """) | ||||
| 
 | ||||
|         ## footer | ||||
|         outfile.write(""" | ||||
|                 <li>"""+blog+"""</li>\ | ||||
|                     """) | ||||
|                 </ul> | ||||
|             </div> | ||||
|       </body> | ||||
|     </html> | ||||
|     """) | ||||
| 
 | ||||
|     ## footer | ||||
|     outfile.write(""" | ||||
|             </ul> | ||||
|         </div> | ||||
|   </body> | ||||
| </html> | ||||
| """) | ||||
| 
 | ||||
|     outfile.close() | ||||
|     #subprocess.call(['chmod', 'a+w', FEED]) | ||||
|         outfile.close() | ||||
|         #subprocess.call(['chmod', 'a+w', FEED]) | ||||
|     except FileNotFoundError: | ||||
|         pass | ||||
| 
 | ||||
| ## misc helpers | ||||
| 
 | ||||
| @ -309,7 +312,7 @@ def meta(entries = FILES): | ||||
|     for filename in entries: | ||||
|       mtime = os.path.getmtime(filename) | ||||
|       try: | ||||
|         wc = subprocess.check_output(["wc","-w",filename], stderr=subprocess.STDOUT).split()[0] | ||||
|         wc = int(subprocess.check_output(["wc","-w",filename], stderr=subprocess.STDOUT).split()[0]) | ||||
|       except subprocess.CalledProcessError: | ||||
|         wc = "???" | ||||
|       timestamp = time.strftime("%Y-%m-%d at %H:%M", time.localtime(mtime)) | ||||
|  | ||||
							
								
								
									
										157
									
								
								ttbp/ttbp.py
									
									
									
									
									
								
							
							
						
						
									
										157
									
								
								ttbp/ttbp.py
									
									
									
									
									
								
							| @ -40,6 +40,7 @@ import time | ||||
| import json | ||||
| from email.mime.text import MIMEText | ||||
| import datetime | ||||
| from six.moves import input | ||||
| 
 | ||||
| import inflect | ||||
| 
 | ||||
| @ -49,7 +50,7 @@ from . import chatter | ||||
| from . import gopher | ||||
| from . import util | ||||
| 
 | ||||
| __version__ = "0.11.1" | ||||
| __version__ = "0.11.2" | ||||
| __author__ = "endorphant <endorphant@tilde.town)" | ||||
| 
 | ||||
| p = inflect.engine() | ||||
| @ -107,7 +108,7 @@ def menu_handler(options, prompt, pagify=10, rainbow=False, top=""): | ||||
|         return util.list_select(options, prompt) | ||||
| 
 | ||||
|     else: | ||||
|         return page_helper(options, prompt, pagify, rainbow, page, total, top) | ||||
|         return page_helper(options, prompt, pagify, rainbow, page, int(total), top) | ||||
| 
 | ||||
| def page_helper(options, prompt, pagify, rainbow, page, total, top): | ||||
|     ''' | ||||
| @ -125,7 +126,7 @@ def page_helper(options, prompt, pagify, rainbow, page, total, top): | ||||
|     optPage = options[x:y] | ||||
| 
 | ||||
|     util.print_menu(optPage, SETTINGS.get("rainbows", False)) | ||||
|     print("\n\t( page {page} of {total}; type 'u' or 'd' to scroll up and down )").format(page=page+1, total=total+1) | ||||
|     print("\n\t( page {page} of {total}; type 'u' or 'd' to scroll up and down)".format(page=page+1, total=total+1)) | ||||
| 
 | ||||
|     ans = util.list_select(optPage, prompt) | ||||
| 
 | ||||
| @ -224,14 +225,16 @@ def check_init(): | ||||
|             print("{greeting}, {user}".format(greeting=chatter.say("greet"), | ||||
|                 user=config.USER)) | ||||
| 
 | ||||
|         load_settings = load_user_settings() | ||||
| 
 | ||||
|         ## ttbp env validation | ||||
|         if not user_up_to_date(): | ||||
|             update_user_version() | ||||
| 
 | ||||
|         if not valid_setup(): | ||||
|         if not valid_setup(load_settings): | ||||
|             setup_repair() | ||||
|         else: | ||||
|             raw_input("press <enter> to explore your feels.\n\n") | ||||
|             input("press <enter> to explore your feels.\n\n") | ||||
| 
 | ||||
|         core.load(SETTINGS) | ||||
| 
 | ||||
| @ -244,7 +247,7 @@ def init(): | ||||
|     """ | ||||
| 
 | ||||
|     try: | ||||
|         raw_input(""" | ||||
|         input(""" | ||||
| i don't recognize you, stranger. let's make friends. | ||||
| 
 | ||||
| press <enter> to begin, or <ctrl-c> to get out of here.""") | ||||
| @ -294,7 +297,7 @@ press <enter> to begin, or <ctrl-c> to get out of here.""") | ||||
|     setup() | ||||
|     core.load(SETTINGS) | ||||
| 
 | ||||
|     raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n") | ||||
|     input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n") | ||||
|     return "" | ||||
| 
 | ||||
| def gen_header(): | ||||
| @ -326,23 +329,14 @@ def gen_header(): | ||||
|     """ | ||||
|     return header | ||||
| 
 | ||||
| def valid_setup(): | ||||
| def valid_setup(load_settings): | ||||
|     ''' | ||||
|     Checks to see if user has a valid ttbp environment. | ||||
|     ''' | ||||
| 
 | ||||
|     global SETTINGS | ||||
| 
 | ||||
|     if not os.path.isfile(config.TTBPRC): | ||||
|     if not load_settings: | ||||
|         return False | ||||
| 
 | ||||
|     try: | ||||
|         SETTINGS = json.load(open(config.TTBPRC)) | ||||
|     except ValueError: | ||||
|         return False | ||||
| 
 | ||||
|     core.load(SETTINGS) | ||||
| 
 | ||||
|     for option in iter(DEFAULT_SETTINGS): | ||||
|         if option != "publish dir" and SETTINGS.get(option, None) is None: | ||||
|             return False | ||||
| @ -361,6 +355,24 @@ def valid_setup(): | ||||
| 
 | ||||
|     return True | ||||
| 
 | ||||
| def load_user_settings(): | ||||
|     """attempts to load user's ttbprc; returns settings dict if valie, otherwise | ||||
|     returns false""" | ||||
| 
 | ||||
|     global SETTINGS | ||||
| 
 | ||||
|     if not os.path.isfile(config.TTBPRC): | ||||
|         return False | ||||
| 
 | ||||
|     try: | ||||
|         SETTINGS = json.load(open(config.TTBPRC)) | ||||
|     except ValueError: | ||||
|         return False | ||||
| 
 | ||||
|     core.load(SETTINGS) | ||||
| 
 | ||||
|     return SETTINGS | ||||
| 
 | ||||
| def setup_repair(): | ||||
|     ''' | ||||
|     setup repair function | ||||
| @ -380,7 +392,8 @@ def setup_repair(): | ||||
|             "publishing": select_publishing, | ||||
|             "publish dir": select_publish_dir, | ||||
|             "gopher": gopher.select_gopher, | ||||
|             "rainbows": toggle_rainbows | ||||
|             "rainbows": toggle_rainbows, | ||||
|             "post as nopub": toggle_pub_default | ||||
|             } | ||||
| 
 | ||||
|     for option in iter(settings_map): | ||||
| @ -394,7 +407,7 @@ def setup_repair(): | ||||
| 
 | ||||
|     print("...") | ||||
|     time.sleep(1) | ||||
|     raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n") | ||||
|     input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n") | ||||
| 
 | ||||
| def setup(): | ||||
|     ''' | ||||
| @ -418,7 +431,7 @@ def setup(): | ||||
|     util.print_menu(menuOptions, SETTINGS.get("rainbows", False)) | ||||
| 
 | ||||
|     try: | ||||
|         choice = raw_input("\npick a setting to change (or type 'q' to exit): ") | ||||
|         choice = input("\npick a setting to change (or type 'q' to exit): ") | ||||
|     except KeyboardInterrupt: | ||||
|         redraw(EJECT) | ||||
|         return SETTINGS | ||||
| @ -473,7 +486,14 @@ def setup(): | ||||
|         save_settings() | ||||
|         return setup() | ||||
| 
 | ||||
|     raw_input("\nyou're all good to go, {friend}! hit <enter> to continue.\n\n".format(friend=chatter.say("friend"))) | ||||
|     #nopub toggling | ||||
|     elif settingList[int(choice)] == "post as nopub": | ||||
|         SETTINGS.update({"post as nopub": toggle_pub_default()}) | ||||
|         redraw("posting default set to {nopub}".format(nopub=SETTINGS.get("post as nopub"))) | ||||
|         save_settings() | ||||
|         return setup() | ||||
| 
 | ||||
|     input("\nyou're all good to go, {friend}! hit <enter> to continue.\n\n".format(friend=chatter.say("friend"))) | ||||
|     redraw() | ||||
| 
 | ||||
|     return SETTINGS | ||||
| @ -509,7 +529,7 @@ def main_menu(): | ||||
|     util.print_menu(menuOptions, SETTINGS.get("rainbows", False)) | ||||
| 
 | ||||
|     try: | ||||
|         choice = raw_input("\ntell me about your feels (or type 'q' to exit): ") | ||||
|         choice = input("\ntell me about your feels (or type 'q' to exit): ") | ||||
|     except KeyboardInterrupt: | ||||
|         redraw(EJECT) | ||||
|         return main_menu() | ||||
| @ -569,12 +589,12 @@ def feedback_menu(): | ||||
|     ''' | ||||
| 
 | ||||
|     util.print_menu(SUBJECTS, SETTINGS.get("rainbows", False)) | ||||
|     choice = raw_input("\npick a category for your feedback: ") | ||||
|     choice = input("\npick a category for your feedback: ") | ||||
| 
 | ||||
|     cat = "" | ||||
|     if choice in ['0', '1', '2', '3']: | ||||
|         cat = SUBJECTS[int(choice)] | ||||
|         entered = raw_input(""" | ||||
|         entered = input(""" | ||||
| composing a {mail_category} to ~endorphant. | ||||
| 
 | ||||
| press <enter> to open an external text editor. mail will be sent once you save and quit. | ||||
| @ -752,7 +772,7 @@ i'd love to hear about your ideas and brainstorm about new features! | ||||
| thanks to everyone who reads, listens, writes, and feels.\ | ||||
|         """) | ||||
| 
 | ||||
|     raw_input("\n\npress <enter> to go back home.\n\n") | ||||
|     input("\n\npress <enter> to go back home.\n\n") | ||||
|     redraw() | ||||
| 
 | ||||
|     return | ||||
| @ -764,7 +784,7 @@ def write_entry(entry=os.path.join(config.USER_DATA, "test.txt")): | ||||
|     main feels-recording handler | ||||
|     ''' | ||||
| 
 | ||||
|     entered = raw_input(""" | ||||
|     entered = input(""" | ||||
| feels will be recorded for today, {today}. | ||||
| 
 | ||||
| if you've already started recording feels for this day, you | ||||
| @ -786,17 +806,21 @@ editor. | ||||
| 
 | ||||
|     left = "" | ||||
| 
 | ||||
|     if core.publishing(): | ||||
|         core.load_files() | ||||
|         core.write("index.html") | ||||
|         left = "posted to {url}/index.html\n\n>".format( | ||||
|             url="/".join( | ||||
|                 [config.LIVE+config.USER, | ||||
|                     str(SETTINGS.get("publish dir"))])) | ||||
|     if SETTINGS.get("post as nopub"): | ||||
|         core.toggle_nopub(os.path.basename(entry)) | ||||
|     else: | ||||
|         if core.publishing(): | ||||
|             core.write("index.html") | ||||
|             left = "posted to {url}/index.html\n\n>".format( | ||||
|                 url="/".join( | ||||
|                     [config.LIVE+config.USER, | ||||
|                         str(SETTINGS.get("publish dir"))])) | ||||
| 
 | ||||
|     if SETTINGS.get('gopher'): | ||||
|         gopher.publish_gopher('feels', core.get_files()) | ||||
|         left += " also posted to your ~/public_gopher!\n" | ||||
|         if SETTINGS.get('gopher'): | ||||
|             gopher.publish_gopher('feels', core.get_files()) | ||||
|             left += " also posted to your ~/public_gopher!\n" | ||||
| 
 | ||||
|     core.load_files() | ||||
|     redraw(left + " thanks for sharing your feels!") | ||||
| 
 | ||||
|     return | ||||
| @ -976,7 +1000,7 @@ wall will be recorded if you save the file, and you can cancel | ||||
| your changes by exiting without saving. | ||||
| 
 | ||||
| """) | ||||
|         raw_input("press <enter> to visit the wall\n\n") | ||||
|         input("press <enter> to visit the wall\n\n") | ||||
|         subprocess.call([SETTINGS.get("editor"), config.WALL]) | ||||
|         subprocess.call(["rm", config.WALL_LOCK]) | ||||
|         redraw("thanks for visiting the graffiti wall!") | ||||
| @ -984,6 +1008,46 @@ your changes by exiting without saving. | ||||
| 
 | ||||
| ## misc helpers | ||||
| 
 | ||||
| def toggle_pub_default(): | ||||
|     """setup helper for setting default publish privacy (does not apply | ||||
|     retroactively).  """ | ||||
| 
 | ||||
|     if SETTINGS.get("post as nopub", False) is True: | ||||
|         (nopub, will) = ("(nopub)", "won't") | ||||
|     else: | ||||
|         (nopub, will) = ("public", "will") | ||||
| 
 | ||||
|     if SETTINGS.get("publishing", False) is True: | ||||
|         publishing = "" | ||||
|     else: | ||||
|         publishing = """\ | ||||
| since you're currently not publishing your posts to html/gopher, this setting | ||||
| won't affect the visibility of your posts.  however, the option is still here if | ||||
| you'd like to change it. | ||||
| """ | ||||
| 
 | ||||
|     print(""" | ||||
| 
 | ||||
| DEFAULT POST PRIVACY | ||||
| 
 | ||||
| your entries are set to automatically post as {nopub}. this means they {will} be | ||||
| posted to your world-visible pages at first (which you can always change after | ||||
| the fact.) | ||||
| 
 | ||||
| this setting only affects subsequent posts; it does not apply retroactively. | ||||
| 
 | ||||
| {publishing}""".format(nopub=nopub, will=will, publishing=publishing)) | ||||
| 
 | ||||
|     ans = util.input_yn("""\ | ||||
| would you like to change this behavior? | ||||
| 
 | ||||
| please enter""") | ||||
| 
 | ||||
|     if ans: | ||||
|         return not SETTINGS.get("post as nopub") | ||||
|     else: | ||||
|         return SETTINGS.get("post as nopub") | ||||
| 
 | ||||
| def toggle_rainbows(): | ||||
|     """setup helper for rainbow toggling | ||||
|     """ | ||||
| @ -1037,13 +1101,13 @@ def select_publish_dir(): | ||||
|         print("\ncurrent publish dir:\t"+os.path.join(config.PUBLIC, SETTINGS["publish dir"])) | ||||
|         republish = True | ||||
| 
 | ||||
|     choice = raw_input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ") | ||||
|     choice = input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ") | ||||
|     if not choice: | ||||
|         choice = "blog" | ||||
| 
 | ||||
|     publishDir = os.path.join(config.PUBLIC, choice) | ||||
|     while os.path.exists(publishDir): | ||||
|         second = raw_input("\n"+publishDir+"""\ | ||||
|         second = input("\n"+publishDir+"""\ | ||||
|  already exists! | ||||
| 
 | ||||
| setting this as your publishing directory means this program may | ||||
| @ -1244,7 +1308,6 @@ def update_user_version(): | ||||
|             ttbprc.close() | ||||
| 
 | ||||
|         # from earlier than 0.10.1 | ||||
| 
 | ||||
|         if y < 10: | ||||
|             #  select gopher | ||||
|             print("[ NEW FEATURE ]") | ||||
| @ -1266,6 +1329,12 @@ def update_user_version(): | ||||
|             print("[ NEW FEATURE ]") | ||||
|             SETTINGS.update({"rainbows": toggle_rainbows()}) | ||||
| 
 | ||||
|         if z < 2: | ||||
|             # set default option for 0.11.2 | ||||
|             # print("default nopub: false") | ||||
|             SETTINGS.update({"post as nopub": False}) | ||||
|             save_settings() | ||||
| 
 | ||||
|     print(""" | ||||
| you're all good to go, """+chatter.say("friend")+"""! please contact ~endorphant if | ||||
| something strange happened to you during this update. | ||||
| @ -1283,10 +1352,14 @@ something strange happened to you during this update. | ||||
|         # version 0.11.1 patch notes | ||||
|         print(config.UPDATES["0.11.1"]) | ||||
| 
 | ||||
|     if y < 11 or z < 2: | ||||
|         # version 0.11.2 patch notes | ||||
|         print(config.UPDATES["0.11.2"]) | ||||
| 
 | ||||
|     confirm = "" | ||||
| 
 | ||||
|     while confirm not in ("x", "<x>", "X", "<X>"): | ||||
|         confirm = raw_input("\nplease type <x> when you've finished reading about the updates! ") | ||||
|         confirm = input("\nplease type <x> when you've finished reading about the updates! ") | ||||
| 
 | ||||
|     print("\n\n") | ||||
| 
 | ||||
|  | ||||
| @ -25,6 +25,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
| ''' | ||||
| import random | ||||
| import time | ||||
| from six.moves import input | ||||
| 
 | ||||
| import colorama | ||||
| import inflect | ||||
| @ -179,7 +180,7 @@ def list_select(options, prompt): | ||||
|     ans = "" | ||||
|     invalid = True | ||||
| 
 | ||||
|     choice = raw_input("\n"+prompt) | ||||
|     choice = input("\n"+prompt) | ||||
| 
 | ||||
|     if choice in BACKS: | ||||
|         return False | ||||
| @ -205,11 +206,11 @@ def input_yn(query): | ||||
|     ''' | ||||
| 
 | ||||
|     try: | ||||
|         ans = raw_input(query+" [y/n] ") | ||||
|         ans = input(query+" [y/n] ") | ||||
|     except KeyboardInterrupt: | ||||
|         input_yn(query) | ||||
| 
 | ||||
|     while ans not in ["y", "n"]: | ||||
|         ans = raw_input("'y' or 'n' please: ") | ||||
|         ans = input("'y' or 'n' please: ") | ||||
| 
 | ||||
|     return ans == "y" | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user