From bbda6f561275bb1d4d4ceec243de62febc4304ce Mon Sep 17 00:00:00 2001 From: "\"Gustavo Sverzut Barbieri\"" Date: Wed, 7 Nov 2007 09:20:20 -0800 Subject: [PATCH] Re: Disabling docstrings in generated .so? --- Cython/Compiler/CmdLine.py | 5 ++++- Cython/Compiler/Nodes.py | 12 +++++++----- Cython/Compiler/Options.py | 1 + 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Cython/Compiler/CmdLine.py b/Cython/Compiler/CmdLine.py index 0cf66f2d..716e0f25 100644 --- a/Cython/Compiler/CmdLine.py +++ b/Cython/Compiler/CmdLine.py @@ -23,7 +23,8 @@ Options: module. Emulates the behavior of putting "from import *" at the top of the file. --incref-local-binop Force local an extra incref on local variables before - performing any binary operations. + performing any binary operations. + -D, --no-docstrings Remove docstrings. """ #The following experimental options are supported only on MacOSX: # -C, --compile Compile generated .c file to .o file @@ -82,6 +83,8 @@ def parse_command_line(args): Options.incref_local_binop = 1 elif option == "--cleanup": Options.generate_cleanup_code = int(pop_arg()) + elif option in ("-D", "--no-docstrings"): + Options.docstrings = False else: bad_usage() else: diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index d5a8887d..2479dd87 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -1024,7 +1024,9 @@ class DefNode(FuncDefNode): Naming.pyfunc_prefix + prefix + name entry.pymethdef_cname = \ Naming.pymethdef_prefix + prefix + name - if not entry.is_special: + if not Options.docstrings: + self.entry.doc = None + elif not entry.is_special: if Options.embed_pos_in_docstring: entry.doc = 'File: %s (starting at line %s)'%relative_position(self.pos) if not self.doc is None: @@ -1120,7 +1122,7 @@ class DefNode(FuncDefNode): code.putln("%s; /*proto*/" % header) if proto_only: return - if self.entry.doc: + if self.entry.doc and Options.docstrings: code.putln( 'static char %s[] = "%s";' % ( self.entry.doc_cname, @@ -1433,7 +1435,7 @@ class PyClassDefNode(StatNode, BlockNode): self.body = body import ExprNodes self.dict = ExprNodes.DictNode(pos, key_value_pairs = []) - if self.doc: + if self.doc and Options.docstrings: if Options.embed_pos_in_docstring: doc = 'File: %s (starting at line %s)'%relative_position(self.pos) doc = doc + '\\n' + self.doc @@ -1546,7 +1548,7 @@ class CClassDefNode(StatNode): api = self.api) scope = self.entry.type.scope - if self.doc: + if self.doc and Options.docstrings: if Options.embed_pos_in_docstring: scope.doc = 'File: %s (starting at line %s)'%relative_position(self.pos) scope.doc = scope.doc + '\\n' + self.doc @@ -1588,7 +1590,7 @@ class PropertyNode(StatNode): def analyse_declarations(self, env): entry = env.declare_property(self.name, self.doc, self.pos) if entry: - if self.doc: + if self.doc and Options.docstrings: doc_entry = env.get_string_const(self.doc) entry.doc_cname = doc_entry.cname self.body.analyse_declarations(entry.scope) diff --git a/Cython/Compiler/Options.py b/Cython/Compiler/Options.py index 8c190978..04151a93 100644 --- a/Cython/Compiler/Options.py +++ b/Cython/Compiler/Options.py @@ -9,6 +9,7 @@ embed_pos_in_docstring = 0 gcc_branch_hints = 1 pre_import = None +docstrings = True # This is a SAGE-specific option that will # cause Cython to incref local variables before -- 2.26.2