On 02:41 am, zadka.mo...@gmail.com wrote:
OK, so let me once again enumerate the tickets I'm going to open, because
it seems like we're reaching consensus:

[1] PROVIDES (pretty much as written: exarkun -- the idea is to walk up the
hierarchy and then back down, so I did mean IService -- go up until you
find a root, then go down and get all descendents)

Oops. You can't get children *or* a parent from IService. But you can at least get children from IServiceCollection.

Jean-Paul
[2] 3538 -- will do it with a flag to turn on .tac + plugin
[2.1] I'm assuming the deprecation dance is "flag to turn on" -> "flag to turn on + warn if .tac+plugin and no flag" -> "make flag no-op" -> "warn on flag" -> "remove flag". If someone doesn't want this dance, please let me
know preferred alternatives.

Glyph referred to the alternative.  Here it is fully spelled out:

https://twistedmatrix.com/trac/wiki/CompatibilityPolicy#ProcedureforExceptionstothisPolicy

Alternatively, do it the nice way but not *quite* as you described:

 * Make a new flag like --python but that combines with plugins.
 * Deprecate --python
 * Remove --python

Three steps instead of five and only bother the user once instead of twice.

Thanks!

Jean-Paul
[3] MAKE -- API for "createServiceFromNameAndOptions" (basically,
compose-as-a-library)
[4] COMPOSE (implements twistd_compose plugin)

I think there's at least rough consensus that these four pieces are useful, even if there's still some disagreement on the details, so maybe the next
step is to open the three to-be-opened tickets, and then to discuss the
details on the tickets. I'm going to do the ticket opening tomorrow, and maybe even work on them during the SF Python Meetup (anyone in SF -- you
should [a] go and [b] say hi also [c] optionally, help me with that).

If anyone has serious objections to this plan, let me know!

Thanks,
Moshe Z.

On Tue, May 19, 2015 at 2:35 PM Glyph <gl...@twistedmatrix.com> wrote:

> On May 19, 2015, at 14:01, Tom Prince <tom.pri...@ualberta.net> wrote:
>
> Glyph <gl...@twistedmatrix.com> writes:
>
>> You could also find some other way to split the argument list but "+"
doesn't seem particularly obscure in this context to me.  (If there's
really a need to pass a literal "+" to a plugin we could add an escaping
syntax as well.)
>
> I think if we are adding syntax, then we should also add escaping at the
> same time.
>
> On a related note, when designing this kind of syntax, I think it is
> often valuable to explictly leave some of the space as an explict error,
> to leave freedom to extend the syntax in the future.
>
> I wonder if there is any value in having a syntax that is nestable. I
> don't see any specific use case, but I can imagine wanting ot pass
> options to `compose` that are scoped to an individual plugin that it is > loading. And then, maybe you want to nest things so that those options > apply to a subset of plugins, which might naturally be implemented as
> compos of a compose.
>
> The suggestions in the last paragraph are perhaps somewhat contrived, > and certainly not something that should be *implemnted* in a first (or > even second pass). But considering the possiblity, and then picking a
> syntax that might allow those kinds of extension (and then explictly
> making the extension syntax an error) gives us the ability to add those
> features without breaking backwards compatibility.

We can un-escape '\+' as a token just fine, and if we do that, all of the
weird use-cases you just described are possible.  I can't think of any
options I'd want to pass to 'compose' myself, but it would be easy enough
to add some flags to its parser.

-g


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to