From 024e5dcea9411e8e0f8b5dc60c0d887259ded6c1 Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Wed, 23 May 2012 21:07:52 +0000 Subject: [PATCH] Use absolute imports in catch-all module * lib/mudpy/misc.py: Absolute imports are more readable and easier to debug, so use them. --- lib/mudpy/misc.py | 82 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 37 deletions(-) diff --git a/lib/mudpy/misc.py b/lib/mudpy/misc.py index 73f0253..1bef3f3 100644 --- a/lib/mudpy/misc.py +++ b/lib/mudpy/misc.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """Miscellaneous functions for the mudpy engine.""" -# Copyright (c) 2004-2011 Jeremy Stanley . Permission +# Copyright (c) 2004-2012 Jeremy Stanley . Permission # to use, copy, modify, and distribute this software is granted under # terms provided in the LICENSE file distributed with this software. @@ -12,7 +12,7 @@ class Element: def __init__(self, key, universe, filename=None): """Set up a new element.""" - import data + import mudpy.data import os.path # keep track of our key name @@ -56,7 +56,7 @@ class Element: # add the file if it doesn't exist yet if filename not in self.universe.files: - data.DataFile(filename, self.universe) + mudpy.data.DataFile(filename, self.universe) # record or reset a pointer to the origin file self.origin = self.universe.files[filename] @@ -169,23 +169,23 @@ class Element: def getlist(self, facet, default=None): """Return values as list type.""" - import data + import mudpy.data if default is None: default = [] value = self.get(facet) if value: - return data.makelist(value) + return mudpy.data.makelist(value) else: return default def getdict(self, facet, default=None): """Return values as dict type.""" - import data + import mudpy.data if default is None: default = {} value = self.get(facet) if value: - return data.makedict(value) + return mudpy.data.makedict(value) else: return default @@ -457,7 +457,7 @@ class Universe: def load(self): """Load universe data from persistent storage.""" - import data + import mudpy.data # the files dict must exist and filename needs to be read-only if not hasattr( @@ -475,7 +475,7 @@ class Universe: del self.files[data_filename] # start loading from the initial file - data.DataFile(self.filename, self) + mudpy.data.DataFile(self.filename, self) # make a list of inactive avatars inactive_avatars = [] @@ -575,7 +575,7 @@ class User: def __init__(self): """Default values for the in-memory user variables.""" - import telnet + import mudpy.telnet self.account = None self.address = "" self.authenticated = False @@ -755,12 +755,15 @@ class User: def adjust_echoing(self): """Adjust echoing to match state menu requirements.""" - import telnet - if telnet.is_enabled(self, telnet.TELOPT_ECHO, telnet.US): + import mudpy.telnet + if mudpy.telnet.is_enabled(self, mudpy.telnet.TELOPT_ECHO, + mudpy.telnet.US): if menu_echo_on(self.state): - telnet.disable(self, telnet.TELOPT_ECHO, telnet.US) + mudpy.telnet.disable(self, mudpy.telnet.TELOPT_ECHO, + mudpy.telnet.US) elif not menu_echo_on(self.state): - telnet.enable(self, telnet.TELOPT_ECHO, telnet.US) + mudpy.telnet.enable(self, mudpy.telnet.TELOPT_ECHO, + mudpy.telnet.US) def remove(self): """Remove a user from the list of connected users.""" @@ -778,7 +781,7 @@ class User: prepend_padding=True ): """Send arbitrary text to a connected user.""" - import telnet + import mudpy.telnet # unless raw mode is on, clean it up all nice and pretty if not raw: @@ -830,7 +833,8 @@ class User: output = wrap_ansi_text(output, wrap) # if supported by the client, encode it utf-8 - if telnet.is_enabled(self, telnet.TELOPT_BINARY, telnet.US): + if mudpy.telnet.is_enabled(self, mudpy.telnet.TELOPT_BINARY, + mudpy.telnet.US): encoded_output = output.encode("utf-8") # otherwise just send ascii @@ -839,12 +843,14 @@ class User: # end with a terminator if requested if add_prompt or add_terminator: - if telnet.is_enabled(self, telnet.TELOPT_EOR, telnet.US): - encoded_output += telnet.telnet_proto(telnet.IAC, - telnet.EOR) - elif not telnet.is_enabled(self, telnet.TELOPT_SGA, telnet.US): - encoded_output += telnet.telnet_proto(telnet.IAC, - telnet.GA) + if mudpy.telnet.is_enabled( + self, mudpy.telnet.TELOPT_EOR, mudpy.telnet.US): + encoded_output += mudpy.telnet.telnet_proto( + mudpy.telnet.IAC, mudpy.telnet.EOR) + elif not mudpy.telnet.is_enabled( + self, mudpy.telnet.TELOPT_SGA, mudpy.telnet.US): + encoded_output += mudpy.telnet.telnet_proto( + mudpy.telnet.IAC, mudpy.telnet.GA) # and tack it onto the queue self.output_queue.append(encoded_output) @@ -912,7 +918,7 @@ class User: def enqueue_input(self): """Process and enqueue any new input.""" - import telnet + import mudpy.telnet import unicodedata # check for some input @@ -928,7 +934,7 @@ class User: self.partial_input += raw_input # reply to and remove any IAC negotiation codes - telnet.negotiate_telnet_options(self) + mudpy.telnet.negotiate_telnet_options(self) # separate multiple input lines new_input_lines = self.partial_input.split("\n") @@ -951,7 +957,8 @@ class User: line = line.strip() # log non-printable characters remaining - if telnet.is_enabled(self, telnet.TELOPT_BINARY, telnet.HIM): + if mudpy.telnet.is_enabled(self, mudpy.telnet.TELOPT_BINARY, + mudpy.telnet.HIM): asciiline = filter(lambda x: " " <= x <= "~", line) if line != asciiline: logline = "Non-ASCII characters from " @@ -1322,7 +1329,7 @@ def random_name(): def replace_macros(user, text, is_input=False): """Replaces macros in text output.""" import codecs - import data + import mudpy.data import os.path # third person pronouns @@ -1372,7 +1379,7 @@ def replace_macros(user, text, is_input=False): # this is how we handle local file inclusion (dangerous!) elif macro.startswith("inc:"): - incfile = data.find_file(macro[4:], universe=universe) + incfile = mudpy.data.find_file(macro[4:], universe=universe) if os.path.exists(incfile): incfd = codecs.open(incfile, "r", "utf-8") replacement = "" @@ -1495,7 +1502,7 @@ def reload_data(): def check_for_connection(listening_socket): """Check for a waiting connection and return a new user object.""" - import telnet + import mudpy.telnet # try to accept a new connection try: @@ -1519,7 +1526,7 @@ def check_for_connection(listening_socket): user.address = address[0] # let the client know we WILL EOR (RFC 885) - telnet.enable(user, telnet.TELOPT_EOR, telnet.US) + mudpy.telnet.enable(user, mudpy.telnet.TELOPT_EOR, mudpy.telnet.US) user.negotiation_pause = 2 # return the new user object @@ -1712,10 +1719,11 @@ def get_choice_action(user, choice): def handle_user_input(user): """The main handler, branches to a state-specific handler.""" - import telnet + import mudpy.telnet # if the user's client echo is off, send a blank line for aesthetics - if telnet.is_enabled(user, telnet.TELOPT_ECHO, telnet.US): + if mudpy.telnet.is_enabled(user, mudpy.telnet.TELOPT_ECHO, + mudpy.telnet.US): user.send("", add_prompt=False, prepend_padding=False) # check to make sure the state is expected, then call that handler @@ -1789,13 +1797,13 @@ def handler_entering_account_name(user): def handler_checking_password(user): """Handle the login account password.""" - import password + import mudpy.password # get the next waiting line of input input_data = user.input_queue.pop(0) # does the hashed input equal the stored hash? - if password.verify(input_data, user.account.get("passhash")): + if mudpy.password.verify(input_data, user.account.get("passhash")): # if so, set the username and load from cold storage if not user.replace_old_connections(): @@ -1823,7 +1831,7 @@ def handler_checking_password(user): def handler_entering_new_password(user): """Handle a new password entry.""" - import password + import mudpy.password # get the next waiting line of input input_data = user.input_queue.pop(0) @@ -1839,7 +1847,7 @@ def handler_entering_new_password(user): ): # hash and store it, then move on to verification - user.account.set("passhash", password.create(input_data)) + user.account.set("passhash", mudpy.password.create(input_data)) user.state = "verifying_new_password" # the password was weak, try again if you haven't tried too many times @@ -1864,13 +1872,13 @@ def handler_entering_new_password(user): def handler_verifying_new_password(user): """Handle the re-entered new password for verification.""" - import password + import mudpy.password # get the next waiting line of input input_data = user.input_queue.pop(0) # hash the input and match it to storage - if password.verify(input_data, user.account.get("passhash")): + if mudpy.password.verify(input_data, user.account.get("passhash")): user.authenticate() # the hashes matched, so go active -- 2.11.0