2020-01-31 15-57-04 PST Martin Owens Ah, we are brothers in disunity then and that's not bad advice to be honest. 2020-03-28 11-17-52 PDT Martin Owens Keeping the OverloadGuard in utils is optional, doesn't matter too much since utils isn't a part of the API. 2020-03-28 11-18-28 PDT Martin Owens You would test on every load? 2020-02-02 14-45-36 PST Martin Owens Using a document of many types of objects with lots of group levels and multiple types of transformations. Then attempt to move objects, their children etc. The box should stay around the object as you move it. 2020-03-04 07-22-54 PST Martin Owens That's the tradeoff, although for 1.1 we'd likely fold API changes into deprications. 2020-03-30 12-03-25 PDT Martin Owens Most extension writers are going to copy and paste and most extension writers aren't going to know what _ means anyway. 2020-04-06 21-23-44 PDT Martin Owens :-) 2020-03-31 11-45-53 PDT Martin Owens Hi 2020-03-02 10-35-40 PST Martin Owens The channel is #bug_migration 2020-03-04 07-24-04 PST Martin Owens You should rebase your MR 170 on master so it can be merged. 2020-03-28 10-56-31 PDT Martin Owens Is this a good thing to put into `tests/test_inkex.py` or something similar? 2020-03-02 08-52-39 PST Martin Owens As a firefox user I won't be able to test much. The idea is nice though. GitLab's interface isn't the greatest for joined up downloading. 2020-03-28 12-34-50 PDT Martin Owens Nah the issue is only with `__getitem__` we're in the clear with using only `__setitem__` 2020-03-28 13-16-32 PDT Martin Owens What was the error? 2020-03-28 12-41-55 PDT Martin Owens Yes, works good, python 3.7 2020-03-30 12-12-12 PDT Martin Owens People copy and paste extensions code from each other, so if we exhibit clean code in the core (and tutorials) then extension writers will follow without being too adventurous. 2020-03-28 12-34-55 PDT Martin Owens https://bugs.python.org/issue31968 2020-03-04 07-20-37 PST Martin Owens We got a first casualty of a developer trying to keep up with our API changes Layer vs. Group. We'll have to be careful going into 1.0 I think. 2020-03-30 12-13-23 PDT Martin Owens So Kristian Benoit committed two things directly to master. From email it looks like they're unaware they pushed directly to master. Broke damn near everything. 2020-03-28 13-16-23 PDT Martin Owens Although not sure, I didn't test it on direct file modules. 2020-03-28 12-47-29 PDT Martin Owens Oh right! 2020-04-01 12-20-34 PDT Martin Owens They should be hidden from the menu 2020-02-07 08-44-42 PST Martin Owens In the meantime 2020-03-28 13-21-47 PDT Martin Owens No problem. 2020-01-29 10-51-08 PST Martin Owens Thanks for your help. We've done good. 2020-02-21 16-47-46 PST Martin Owens Good luck with the thesis! I know they can be stressful 2020-04-01 12-20-27 PDT Martin Owens Templates and help links makes sense 2020-03-29 15-26-06 PDT Martin Owens I wish to be as generous as possible to the work and the review. We have two solutions which have a) some problems and b) writers who both /feel/ but can not evident the reason why it's better. This is a reciepe for impasse. 2020-02-02 14-46-48 PST Martin Owens Yes 2020-03-30 12-08-46 PDT Martin Owens Do you know Kristian Benoit 2020-03-29 16-21-12 PDT Martin Owens I've pushed a rename, it removes the underscores and moves `_base.py` to `primitives.py` 2020-04-10 05-43-22 PDT Martin Owens It's waiting for after 1.0 2020-03-28 12-52-52 PDT Martin Owens `__name__` is covered in the example code 2020-03-28 11-20-38 PDT Martin Owens Can be done without testing globals, modules have dictionaries, these can be used without messing with the import. 2020-03-28 11-42-31 PDT Martin Owens So I would move all the import statements into `def setUp(self):` and use an object variable to stoe the state as you go. 2020-04-01 10-10-44 PDT Martin Owens Trying to see if we have bug fixes for extensions that would help the release. 2020-04-01 12-32-15 PDT Martin Owens I agree to a degree, but I'm also aware of the ideal vs. the reality. 2020-01-29 08-34-34 PST Martin Owens Yes, I'm trying to get the constructor stuff done quickly so you can rebase. 2020-01-29 08-39-37 PST Martin Owens Ready 2020-03-28 00-35-11 PDT Martin Owens No same name conflicts? 2020-01-31 15-57-33 PST Martin Owens We could probably produce our own pussy riot. UK music has been getting a bit soft anyway. 2020-03-28 00-45-06 PDT Martin Owens I've pushed a review. It looks good, just a few things to clear up. 2020-03-28 13-17-00 PDT Martin Owens Oh? I'll test locally, hang on 2020-04-01 12-32-37 PDT Martin Owens I will be able to review this properly in a week or so, I'm crushing under a docs upgrade and some paid work. 2020-03-28 11-45-33 PDT Martin Owens I think I see what you're trying to prevent, a sync issues between __init__ and the test. 2020-01-31 16-29-26 PST Martin Owens Aye. There are just some certain days with more content that I want ;-) 2020-03-28 11-43-15 PDT Martin Owens (and convert to a regular test, but I don't know if you know how to write tests, I think yes) 2020-04-01 12-25-47 PDT Martin Owens On review, those hidden flags all make sense. 2020-03-28 13-21-57 PDT Martin Owens Have a good night and hope all is well! 2020-02-02 14-05-57 PST Martin Owens Hello 2020-04-01 12-21-04 PDT Martin Owens embed selected images is run from the right click menu 2020-03-28 01-52-01 PDT Martin Owens You can generate the lists from checking each module's dictionary. 2020-01-31 16-05-42 PST Martin Owens Heh, "make a fuss" 2020-02-07 08-47-09 PST Martin Owens None required, thanks. 2020-02-07 08-41-59 PST Martin Owens Hello 2020-03-29 15-50-24 PDT Martin Owens Merged 2020-03-29 15-44-13 PDT Martin Owens Then I owe you a big appology 2020-03-28 11-36-55 PDT Martin Owens print statements intentional? 2020-03-28 11-40-51 PDT Martin Owens You can use `type(attr).__name__` to get a better print out 2020-01-31 15-51-12 PST Martin Owens What used to be called the UK. 2020-03-28 11-41-12 PDT Martin Owens `type(attr).__module__, type(attr).__name__` 2020-03-28 12-46-58 PDT Martin Owens Question is, how can we both be right. 2020-04-06 15-44-49 PDT Martin Owens If you feel at all like you're not able to mentor as well as you want to be able to, I can take the review. Either way works for me. 2020-03-31 11-49-48 PDT Martin Owens We have only a handful of python people. I had to ask outside of Inkscape to get an assessment of our module namespace checker. 2020-03-31 11-46-04 PDT Martin Owens The reversion should be in now for the namespaces. 2020-03-29 15-44-48 PDT Martin Owens Rename elements.base to anything you want. Even basics works there. 2020-03-28 11-46-03 PDT Martin Owens I will look online for existing solutions, 2020-03-28 12-32-40 PDT Martin Owens Weird the PEP I read said they changed it in python3 to allow for this. 2020-02-02 14-11-23 PST Martin Owens But in this case, since the bug (at least your one, not nathen's) is code logic and not evident in running, it's hard to do much about. I understand why it works, but it might not be obvious. If you can narrow down what your seeing into symptoms. Or predictions. Then other bug testers can test them for you. 2020-03-04 07-31-22 PST Martin Owens It's mostly about sounding out the release, we /need/ to get release out the door before we all die of old age. 2020-04-01 12-22-00 PDT Martin Owens I don't know what stock/effect is, is this your new directory structure? 2020-03-29 15-47-29 PDT Martin Owens I am become mess, the destroyer of beauty. 2020-03-02 14-13-29 PST Martin Owens For the latest? 2020-01-29 08-39-44 PST Martin Owens In your own time, no rush 2020-03-28 12-59-37 PDT Martin Owens Now we're cooking with rolling rocks! 2020-04-01 10-10-29 PDT Martin Owens @sizmailov I like the idea, it's been on my todo for a while, although we're about to cut 1.0 rc1 so we may wait on merging until after 1.0 if that's ok? 2020-03-29 15-44-07 PDT Martin Owens Really? 2020-03-28 12-33-29 PDT Martin Owens In python2 you couldn't subclass globals, because it asked for the C dictionary type. 2020-03-02 08-56-23 PST Martin Owens I solved one of the issues with the extensions by using a little known GitLab API url so I can always go to the latest artefact from the main project site. 2020-01-28 18-02-08 PST Martin Owens Back from my adventures in parenting 2020-03-29 15-44-24 PDT Martin Owens My review has been predicated on the renaming of inkex.base 2020-03-30 12-03-43 PDT Martin Owens So I think we're 98% safe. 2020-03-29 15-45-02 PDT Martin Owens Sorry 2020-01-31 15-50-32 PST Martin Owens You'll have to give me some space, my country has just committed a slow suicide and I'm not feeling all that great. 2020-03-28 13-20-47 PDT Martin Owens With that fix, local testing on `inkex.paths` works as expected. I added `FOO =1; FOO=2` to paths to confirm it raises as expected. 2020-04-01 12-27-14 PDT Martin Owens The last directory seems a little overkill. /effect/color/less_saturation/less_saturation.inx I think it can just be /effect/color/less_saturation.inx 2020-04-01 12-12-13 PDT Martin Owens If the code is in the core extensions repository, they shouldn't be hidden (if they are, let me know) 2020-03-29 15-46-33 PDT Martin Owens Groups has also been renamed? 2020-03-02 08-55-37 PST Martin Owens But if you'll always be available to fix it ;-) 2020-03-28 12-47-47 PDT Martin Owens Of course, my code doesn't import inkex again, it RUNS inkex/__init__.py as a script. 2020-03-28 12-42-10 PDT Martin Owens I added in some pretend collisions, picked them up. 2020-03-30 12-07-11 PDT Martin Owens I do have a seperate question for you though 2020-03-28 12-24-09 PDT Martin Owens ``` from unittest import TestCase as BaseCase
import inkex import inkex.elements from inkex.utils import PY3
class MyGlobals(dict): """Python 3.3 and above globals dictionary""" def __setitem__(self, name, value): if name in self and value != self[name]: raise KeyError("While importing {} the API name {} was imported twice".format(self['__name__'], name)) super(MyGlobals, self).__setitem__(name, value)
class TestModuleCollisions(BaseCase): """Test imports to make sure the API is clean""" def assertNoCollisions(self, module): # pylint: disable=invalid-name """Make sure there are no API collisions in the give module on import""" if not PY3: self.skipTest("API testing python 3.3 and above only.")
with open(inkex.__file__, 'r') as fhl: exec(fhl.read(), MyGlobals({'__name__': module.__name__})) # pylint: disable=exec-used
def test_inkex(self): """Test inkex API have no collisions""" self.assertNoCollisions(inkex)
def test_inkex_elements(self): """Test elements API have no collisions""" self.assertNoCollisions(inkex.elements)``` 2020-03-31 11-50-20 PDT Martin Owens Best place inside inkscape is the extensions chat channel though. More contextual. devel is mostly C++ 2020-03-28 11-17-12 PDT Martin Owens I would move it into a test. One the API is set, it doesn't have to check every inkex load, that's Kw of energy doing nothing on thousands of computers. But having the warning in the CI builder in a test, ideal IMO. 2020-03-04 07-31-40 PST Martin Owens Your thoughts would be welcome. 2020-03-28 11-00-05 PDT Martin Owens On review, the only item from `elements/base` that people would import directly is `load_svg` 2020-01-31 16-09-15 PST Martin Owens The common disquiet as it's known. 2020-01-31 16-30-59 PST Martin Owens Indeed it is 2020-03-04 08-04-35 PST Martin Owens Merged 2020-03-02 14-08-07 PST Martin Owens See the coverage label on this page? https://gitlab.com/inkscape/extensions/ 2020-03-28 11-02-12 PDT Martin Owens A poem! 2020-02-07 08-44-04 PST Martin Owens No, just one pair of hands ;-) 2020-03-28 12-23-42 PDT Martin Owens OK I have a solution 2020-03-30 12-40-38 PDT Martin Owens The MR policy is lax, I think this is the first mistake. 2020-03-28 13-19-50 PDT Martin Owens Oh my code has a bug. `with open(inkex.__file__, 'r') as fhl` -> `with open(module.__file__, 'r') as fhl` 2020-03-29 15-28-18 PDT Martin Owens In the meantime, we can go ahead with your original MR without the checks to keep it all clean. 2020-04-01 12-20-47 PDT Martin Owens Because they are accessed via either the New from Template or the help menu 2020-03-30 12-02-49 PDT Martin Owens Yes, but underscoring modules is super rare outside of python proper. I figured I'd moved you to do something you wouldn't have done otherwise with my mistake. 2020-03-29 15-27-51 PDT Martin Owens I'm going to invite a third party who knows python to review both out solutions. I'll make a MR and I can send both links out. 2020-03-02 09-08-14 PST Martin Owens It's possible. I know I don't need a tool like this myself, because I don't interact with artefacts much. But the team that does is going to be the bug/issues team, since they like to bisect and download lots of versions. 2020-03-30 12-07-03 PDT Martin Owens I'm not sure how to break that down further. 2020-04-02 07-36-45 PDT Martin Owens If you like. Do you have a desired schedule to get it merged? 2020-03-04 07-28-20 PST Martin Owens Will you be at the meeting on Friday to discuss the 1.0 release? 2020-01-31 16-09-19 PST Martin Owens Interesting to hear. 2020-03-28 01-45-07 PDT Martin Owens There is a way 2020-02-07 08-44-36 PST Martin Owens Any chance I could get you to look at one of the items on this list: https://gitlab.com/inkscape/vectors/general/issues/136 ? 2020-01-31 15-50-05 PST Martin Owens s/busy/depressed/ 2020-01-31 16-29-43 PST Martin Owens by the way, delta is the right thing to use, it's just not scaled to the user units. 2020-03-29 15-30-31 PDT Martin Owens Yes, so long as `basics.py` is back to `base.py`, I think that was the only other issue. 2020-04-06 15-43-59 PDT Martin Owens I'm actually really impressed with your patience. Thank you for investing the time. I have the same feeling that I could have done the code, but at the same time this isn't going to fix anything really, it's a nice to have we can take our sweet time on. I'd only code it myself if Kristian went AWOL. 2020-01-31 16-03-41 PST Martin Owens Primal screams are primal screams. No one said it was supposed to /do/ anything. 2020-04-01 12-12-42 PDT Martin Owens If you mean extensions like the uniconverter extensions, those are abandoned/obsolete/rejected etc 2020-03-28 13-02-27 PDT Martin Owens Maybe add a comments about the fact this only works for setitem and not getitem? 2020-02-14 12-25-46 PST Martin Owens Thanks for the ping :-D 2020-03-29 15-43-07 PDT Martin Owens I thought `_base.py` was for `inkex/elements/base.py` I'm dead set against changing the name of `inkex/base.py` to anything. 2020-01-31 15-49-34 PST Martin Owens Hello 2020-03-04 07-29-44 PST Martin Owens Friday 6pm UTC in the developer chat 2020-04-01 12-29-57 PDT Martin Owens Each directory depth will slow inkscape's loading. 2020-03-28 10-57-50 PDT Martin Owens If a name change is required, I'd change `inkex/elements/base` rather than `inkex/base` just based on what we've asked extension developers to do when upgrading their extension. 2020-02-02 14-09-16 PST Martin Owens There's always room for perfection. I'm trying hard to make it the enemy of the good. 2020-02-07 08-42-39 PST Martin Owens I owe you those reviews, but I can't deliver right now. :-( 2020-03-28 11-00-29 PDT Martin Owens So this is reasonable so long as the import in `__init__` is the landing point for that anyway. 2020-03-04 08-05-35 PST Martin Owens Are you able to look at any of the issues on this list? https://gitlab.com/inkscape/vectors/general/issues/136 2020-03-04 08-07-52 PST Martin Owens That's probably true. If boredom strikes ;-) 2020-01-28 18-55-50 PST Martin Owens No problem, good night! 2020-03-28 11-02-39 PDT Martin Owens And I agree 2020-03-02 08-53-42 PST Martin Owens I don't think so, I could check the stats on the website if you want. 2020-03-30 12-40-25 PDT Martin Owens Agreed 2020-03-28 01-52-09 PDT Martin Owens Convert them into sets and xor them. 2020-03-28 12-45-43 PDT Martin Owens Put a print in `__setitem__` it is running and it is testing. 2020-03-28 11-33-15 PDT Martin Owens It's the same same, since `from inkex import elements; elements.__dict__` is sort of the same as `from inkex.elements import *; globals()` except you don't get python builtins in the first one (except if you want them) 2020-04-10 09-25-54 PDT Martin Owens Should be May 4th ish. The RC1 is out now, so not too long. 2020-03-02 08-55-11 PST Martin Owens Theissue I see is maint burden; one of the reasons to use GitLab (and not host our own) is to reduce the amount of stuff we have to look after ourselves. 2020-02-21 13-15-14 PST Martin Owens Thanks. I'm still working on the canvas bug. Almost a week of research and poking. How's your programming? 2020-04-10 12-53-54 PDT Martin Owens No problem, though this kind of thing should be discussed in the public channels. 2020-03-28 12-42-50 PDT Martin Owens Sorry what's the initalize once problem? (I may have missed that one, sorry) 2020-03-28 12-47-54 PDT Martin Owens That's why it works. 2020-03-28 13-16-07 PDT Martin Owens paths isn't a module directory though, so it might have collisions. 2020-03-29 15-47-48 PDT Martin Owens Right we'll get this in as is. 2020-03-28 12-24-04 PDT Martin Owens This might seem mad, but it's a small codebase and covers quite a lot of ground without repetition: 2020-03-27 19-34-45 PDT Martin Owens If you're willing to help there. That would be great. 2020-03-30 12-14-15 PDT Martin Owens I'll personally shout at anyone who uses it. I'll find them on github and it will be all over for them! 2020-03-28 13-16-42 PDT Sergei Izmailov The was no error, but it should be 2020-01-31 16-09-05 PST Sergei Izmailov Hopefully society would evolve and we will be in better future 2020-03-29 12-30-04 PDT Sergei Izmailov Don't we use pytest? 2020-03-28 12-30-37 PDT Sergei Izmailov If only globals is provided, it must be a dictionary (and not a subclass of dictionary), 2020-04-06 09-40-50 PDT Sergei Izmailov (it's not an urgent question, take your time) 2020-04-01 12-22-05 PDT Sergei Izmailov yes 2020-02-07 08-42-25 PST Sergei Izmailov https://gitlab.com/inkscape/extensions/-/merge_requests/172 2020-04-06 09-38-02 PDT Sergei Izmailov Please tell how it looks from a side. 2020-04-06 09-32-35 PDT Sergei Izmailov Hi, seems like we have communication problem in https://gitlab.com/inkscape/extensions/-/merge_requests/184 2020-03-30 12-16-26 PDT Sergei Izmailov (if we mark submodules as implementation detail, of course) 2020-03-28 12-34-02 PDT Sergei Izmailov We can use regular dict and do check manually 2020-01-29 08-56-17 PST Sergei Izmailov added a couple of comments 2020-01-31 15-50-27 PST Sergei Izmailov don't be :) 2020-03-28 11-01-53 PDT Sergei Izmailov All elements submodules are pretty new, so number of people who already depend on `elements/base` should be very few. 2020-04-10 11-10-29 PDT Sergei Izmailov A (better) alternative would be to optimize inkscape for low-requirement set of options, but it seems to be a bit harder since it's bound to GIO and would require some architectural changes... 2020-03-28 13-01-21 PDT Sergei Izmailov I'll adapt your snippet and update MR 2020-01-31 15-52-34 PST Sergei Izmailov But I'm almost out reach for public news 2020-03-30 12-11-47 PDT Sergei Izmailov It's not about what they do. In python there is no way to keep user from doing any nasty things. All we can do is to draw line of our responsibility and guarantees we provide. 2020-03-28 10-56-32 PDT Sergei Izmailov WRT elements submodules. I find it useful to make it underscored. It's a usage restriction so we can move stuff around without breaking well-behaved user's code 2020-03-02 14-09-27 PST Sergei Izmailov it's an answer, not a question 2020-03-28 11-19-25 PDT Sergei Izmailov (it's non-trivial and ~~sometimes~~ most of time impossible to unload python module) 2020-02-21 13-00-03 PST Sergei Izmailov Hi, here is another ping ;) 2020-04-01 02-21-47 PDT Sergei Izmailov What do you think? 2020-03-02 10-36-27 PST Sergei Izmailov thx 2020-01-31 16-05-20 PST Sergei Izmailov Just random freaks who decided to be against and made some hype. 2020-03-29 15-48-30 PDT Sergei Izmailov Sometimes it happens to all of us (humans) 2020-02-02 14-07-06 PST Sergei Izmailov I think I can help you fix it 2020-03-29 15-43-29 PDT Sergei Izmailov I didn't touch `inkex/base.py` at all 2020-04-01 02-20-10 PDT Sergei Izmailov I'm going to sort out all stock extensions based on their type `effect/input/output` and sub-menu name. For example `render_barcode.{inx,py}` are going to `stock/effect/barcode/classic/` 2020-01-31 15-49-24 PST Sergei Izmailov Hi! 2020-02-02 14-12-17 PST Sergei Izmailov What do you look at 2020-03-28 11-34-54 PDT Sergei Izmailov I've pushed commit with this change 2020-03-29 15-46-50 PDT Sergei Izmailov All of `inkex/elements/*` 2020-01-30 03-12-00 PST Sergei Izmailov Added commits/comments, please take a look 2020-03-28 12-44-39 PDT Sergei Izmailov This means `exec` doesn't do much 2020-03-02 08-55-07 PST Sergei Izmailov Can you think about inconveniences you (and others) meet on daily basis that can be solved with extension/extra web page? 2020-03-28 11-37-31 PDT Sergei Izmailov no, of course 2020-03-30 12-05-33 PDT Sergei Izmailov [ ](https://chat.inkscape.org/direct/doctormo?msg=3XZtMgFo4NxJeCf2P) What do you mean? () 2020-03-04 08-07-03 PST Sergei Izmailov I did take a look, but unresolved issues seems to be time-consuming and I don't really have too much spare time these days 2020-03-28 11-42-09 PDT Sergei Izmailov `tests/test_inkex.py` is a bit off-standard: it doesn't define test functions/methods, it causes top-level error on failure. But I think it's fine. 2020-03-29 15-28-42 PDT Sergei Izmailov I can withdraw "veryfy no name clash" from MR so we can address this separately 2020-03-30 12-01-18 PDT Sergei Izmailov I think it's bad decision. Looks like you ignored/didn't address my arguments.
The only use for public-available submodules of `inkex/elements/*` is `from inkex.elements.primitives import *` which is should be discouraged. For regular imports `from inkex.elements import Group` is always preferable to `from inkex.elements.groups import Group`.
Anyhow by the of the day it's up to you. 2020-02-07 08-44-04 PST Sergei Izmailov Take you time. I'll keep pinging once a week :) 2020-03-28 12-45-30 PDT Sergei Izmailov I tried next snippet which is roughly what you have, right? ``` gl, loc = {}, {} exec("import inkex", gl, loc) print(dir(loc["inkex"])) gl2, loc2 = {}, {} exec("import inkex", gl2, loc2) print(dir(loc2["inkex"])) ``` 2020-02-07 08-45-31 PST Sergei Izmailov I'll take a look 2020-01-31 15-53-27 PST Sergei Izmailov By the way, here in Russia, I don't feel like we are going in bright future either :) 2020-03-30 12-09-27 PDT Sergei Izmailov :) 2020-03-28 01-42-46 PDT Sergei Izmailov [ ](https://chat.inkscape.org/direct/doctormo?msg=gnkKZk8bB2tGYrSXZ) Is there automated tool to verify? I think there should be no conflict as the only thing was changed is content of `inkex.elements` now resides in `inkex` too, so it's very limited list to check. () 2020-02-02 14-12-49 PST Sergei Izmailov ? 2020-03-29 13-08-22 PDT Sergei Izmailov I've pushed updateв "dummy scheme" check. It's far from being perfect, but it's never false-negative. I think it's good enough for file that doesn't change often. 2020-03-28 12-52-34 PDT Sergei Izmailov ```python import inkex gl, loc = {}, {} with open(inkex.__file__, 'r') as fhl: exec (fhl.read(), gl, loc) ``` gives me ``` /usr/bin/python3.7 /home/sergei/CLionProjects/inkscape/share/extensions/TEMP2.py :15: ImportWarning: can't resolve package from __spec__ or __package__, falling back on __name__ and __path__ /usr/lib/python3/dist-packages/apport/report.py:13: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import fnmatch, glob, traceback, errno, sys, atexit, locale, imp Traceback (most recent call last): File "/home/sergei/CLionProjects/inkscape/share/extensions/TEMP2.py", line 4, in exec (fhl.read(), gl, loc) File "", line 15, in KeyError: "'__name__' not in globals" ``` 2020-04-01 12-28-59 PDT Sergei Izmailov I think it's better to keep "extension-directory" structure even if it contains only two files (`.inx` and `.py` ) 2020-01-29 08-16-40 PST Sergei Izmailov Will you be here to give a quick feedback? 2020-04-01 02-18-05 PDT Sergei Izmailov Hi! 2020-01-28 13-57-05 PST Sergei Izmailov Hi! 2020-03-02 14-16-15 PST Sergei Izmailov It doesn't require job id 2020-04-06 20-41-26 PDT Sergei Izmailov Thanks, I'm really on my limit. May be I'll step aside from discussion. I think already said all I wanted to say (and at least you did understand me). I can give a (final) code review tough. 2020-03-30 12-21-13 PDT Sergei Izmailov Again, it's minor thing, but I think it's worth to do it right. Let's ask someone else if we cannot converge on it. 2020-03-28 11-18-09 PDT Sergei Izmailov It can go to tests as well, right 2020-03-30 12-24-16 PDT Sergei Izmailov (or push-without-MR policy) 2020-03-27 19-53-44 PDT Sergei Izmailov I have two options: rely on python convention and make all non-underscore variables exported, or explicitly list everything in `__all__` 2020-01-31 16-03-16 PST Sergei Izmailov The cite from post-soviet KINO band 2020-03-29 15-30-05 PDT Sergei Izmailov probably we can merge it right away, right? 2020-03-02 14-15-54 PST Sergei Izmailov I've missed https://docs.gitlab.com/ee/api/jobs.html#download-a-single-artifact-file-fro... 2020-03-29 15-50-34 PDT Sergei Izmailov cool, thanks! 2020-03-02 14-18-23 PST Sergei Izmailov Don't spend time on it. I'm still not sure what it's for. If it's for web site only we can do arbitrary complex queries. 2020-02-28 07-31-28 PST Sergei Izmailov Hi, here is one more ping 2020-03-02 09-02-07 PST Sergei Izmailov Please let me know if you think this extension is worth it and how and what we would improve with it. 2020-02-02 14-08-48 PST Sergei Izmailov I see your point. It's apparently works, performance greatly improved, so it might be not as important as many other things. 2020-03-27 19-56-14 PDT Sergei Izmailov Strictly speaking prefixing non-exported stuff with underscore would be a breaking change 2020-03-27 23-00-04 PDT Sergei Izmailov https://gitlab.com/inkscape/extensions/-/merge_requests/181 2020-01-31 16-30-35 PST Sergei Izmailov Yeah, good news about delta. :) 2020-03-29 15-30-48 PDT Sergei Izmailov Didn't we agree on `_base.py` ? 2020-02-21 17-57-31 PST Sergei Izmailov Yeah, thanks! The process is no fan, so it's easy to get close to apathy-like state, which slows process even further. Hopefully I will be able to finish it in two weeks from now. 2020-03-28 13-21-54 PDT Sergei Izmailov (I'm staying home, but still, i'm going :) 2020-01-31 15-49-49 PST Sergei Izmailov I know you are busy with many problems 2020-03-02 08-54-12 PST Sergei Izmailov It's not a problem to make two extensions for most popular browsers 2020-01-28 13-57-14 PST Sergei Izmailov Added some comments to MR 2020-04-06 09-34-45 PDT Sergei Izmailov I could have make my own MR in half of time I've already spent on the discussion, but I thought it would be worth to guide a new potential member of community. 2020-03-28 12-34-35 PDT Sergei Izmailov It means a bit of rewriting of `assertNoCollisions` 2020-03-28 12-43-49 PDT Sergei Izmailov It should be printed only once 2020-03-02 09-09-04 PST Sergei Izmailov Is there special channel? 2020-03-28 10-55-22 PDT Sergei Izmailov I've turned your idea with module inspection into robust procedure. We can be sure there is no name conflict and we are protected from future pitfalls. 2020-02-07 08-43-41 PST Sergei Izmailov Ok. I was afraid that something unspoken keeps you from review. 2020-04-01 12-31-42 PDT Sergei Izmailov We should sacrifice architecture last 2020-03-29 15-45-28 PDT Sergei Izmailov No problem, I should have accent your attention on it (I had impression you get me wrong) 2020-02-02 14-09-14 PST Sergei Izmailov But it still bothers me as we leave known bug without even note 2020-03-29 12-38-45 PDT Sergei Izmailov I appreciate that "dummy scheme" is not elegant, but it's robust and straightforward to maintain (although it's extra manual work). 2020-03-02 08-57-51 PST Sergei Izmailov I'm asking because there should be set of problems to solve. Otherwise it's just a play 2020-01-29 08-35-58 PST Sergei Izmailov I didn't start yet 2020-04-01 12-17-15 PDT Sergei Izmailov There are some ``` $ find stock -iname '*.inx' -exec grep --color " hidden=" {} + stock/effect/inkscape_manual/inkscape_help_manual.inx: stock/effect/envelope/template_envelope.inx: stock/effect/follow_link/inkscape_follow_link.inx: stock/effect/dvd_cover/template_dvd_cover.inx: stock/effect/business_card/template_business_card.inx: stock/effect/seamless_pattern/template_seamless_pattern.inx: stock/effect/report_a_bug/inkscape_help_reportabug.inx: stock/effect/blank_page/template_page.inx: stock/effect/new_in_this_version/inkscape_help_relnotes.inx: stock/effect/desktop/template_desktop.inx: stock/effect/keys_and_mouse_reference/inkscape_help_keys.inx: stock/effect/ask_us_a_question/inkscape_help_askaquestion.inx: stock/effect/video_screen/template_video.inx: stock/effect/icon/template_icon.inx: stock/effect/svg_11_specification/inkscape_help_svgspec.inx: stock/effect/command_line_options/inkscape_help_commandline.inx: stock/effect/faq/inkscape_help_faq.inx: stock/effect/generic_canvas/template_generic.inx: stock/effect/embed_selected_images/embedselectedimages.inx: ``` 2020-04-01 12-30-38 PDT Sergei Izmailov Then directory walker should be optimized. 2020-01-31 16-28-39 PST Sergei Izmailov I know "there are people who suffer much more" never helps.
You are doing good valuable stuff and apparently you _enjoy it_. I think this should you keep you above depression level all the time you work :) 2020-03-28 11-37-26 PDT Sergei Izmailov damn 2020-03-28 11-43-12 PDT Sergei Izmailov I want to keep it as close to `inkex/__init__.py` as possible. Don't you think it's worth it? 2020-04-02 07-28-34 PDT Sergei Izmailov Hi, should I assign stock extension sort to you ? 2020-04-01 12-29-53 PDT Sergei Izmailov Otherwise it starts resemble existing pile of files 2020-02-14 10-37-29 PST Sergei Izmailov Hi, here is weekly review-my-MRs ping :) 2020-01-28 18-43-17 PST Sergei Izmailov I hoped we could nail it down quickly, but now it's my turn to leave :) 2020-03-02 08-59-02 PST Sergei Izmailov Probably most of experienced people overcome it with their own tools/hacks. We can gather it, rework and provide a better tool 2020-04-10 10-54-44 PDT Sergei Izmailov (of course it would require changes in `.inx` file, but it's still less work than porting extension to python3, e.g. abandoned ones with no maintainer) 2020-03-02 14-19-10 PST Sergei Izmailov I was wondering if you know some well-hidden / undocumented feature 2020-03-30 12-07-37 PDT Sergei Izmailov go ahead 2020-03-28 13-16-05 PDT Sergei Izmailov As it should be equivalent to star import 2020-02-07 08-42-27 PST Sergei Izmailov https://gitlab.com/inkscape/extensions/-/merge_requests/170 2020-02-02 14-05-27 PST Sergei Izmailov Hi! 2020-02-21 16-18-31 PST Sergei Izmailov Almost nohow wrt inkscape. I'm rushing my thesis, I have almost no spare time these days. 2020-03-27 17-19-08 PDT Sergei Izmailov I can create a MR to address `__all__` issue + importability of any component from head `inkex`. Those two seems to be coupled enough to go in single MR. 2020-04-10 11-11-11 PDT Sergei Izmailov While I was writing this I realized that latter is the right way to go. Sorry for bothering you :( 2020-03-30 12-16-06 PDT Sergei Izmailov If they do and then things break it's THEIR fault, not ours 2020-03-30 12-18-41 PDT Sergei Izmailov I want to provide reach API with minimum possible guarantees. Submoudles structure doesn't contribute to API/convenience, so should be hidden. 2020-03-28 11-34-54 PDT Sergei Izmailov https://gitlab.com/inkscape/extensions/-/merge_requests/181/diffs?commit_id=... 2020-03-02 09-00-41 PST Sergei Izmailov It could be there is no common denominator in community and workflow pattern is hairy and differ from one person to another. 2020-03-02 14-10-42 PST Sergei Izmailov I was thinking about more reliable way to do `https://gitlab.com/inkscape/inkscape/-/jobs/artifacts/master/download?job=ap... 2020-03-28 10-58-31 PDT Sergei Izmailov I'm for `inkex/elements/base` -> `inkex/elements/_base` 2020-03-28 12-30-43 PDT Sergei Izmailov https://docs.python.org/3/library/functions.html#exec 2020-03-28 10-59-30 PDT Sergei Izmailov So we use "base" name secretly within `elements` for private needs 2020-03-31 11-44-36 PDT Sergei Izmailov Hi, I'm not sure I can (should) push to your MR branch, so I've added a couple of comments with minor changes. 2020-01-29 08-36-04 PST Sergei Izmailov I'll do in hour or two 2020-03-28 11-28-32 PDT Sergei Izmailov True, but I would prefer to keep it in `import *` style to ease sync 2020-01-31 15-49-59 PST Sergei Izmailov ? 2020-03-04 07-24-42 PST Sergei Izmailov Ok, I'll do. 2020-03-30 12-23-17 PDT Sergei Izmailov [ ](https://chat.inkscape.org/direct/doctormo?msg=XwAigzgntR2zTbs5J) Seems to be a problem. () 2020-01-31 15-54-20 PST Sergei Izmailov My current "plan" is simple. Just outlive idiots in the government 2020-03-29 12-36-35 PDT Sergei Izmailov I don't understand your approach. You are executing statements from module line by line. But module contains relative paths to other modules. It doesn't work like that. Hot-patching source is not a reliable procedure. I feel more comfortable with dummy scheme I use right now (copy-paste imports & add checking commands) 2020-04-01 11-23-38 PDT Sergei Izmailov This restructuring is not free, it needs extensive testing as many extensions rely one on another and particular file structure which is disturbed now. I think it's not a bad idea to hold it until 1.y (it's potentially buggy infrastructural change with near-zero value to end users). 2020-01-31 16-02-21 PST Sergei Izmailov Pussy riot didn't change a thing. In their confrontation there was no good side. 2020-03-02 14-11-03 PST Sergei Izmailov Sometimes it's a 404 for no obvious reason 2020-04-01 04-59-31 PDT Sergei Izmailov Here is preliminary layout https://gitlab.com/sizmailov/extensions/-/tree/sort-stock-extensions/stock 2020-03-02 08-53-24 PST Sergei Izmailov Is firefox primary browser in inskcape community? 2020-02-02 14-14-25 PST Sergei Izmailov The testing part is no obvious to me 2020-03-02 08-50-32 PST Sergei Izmailov Hi, I'm not really familiar with reporters workflow, but I guess they have to download bundles quite often. I've build a chrome extension to augment every comment-link with direct link to appimage artefact. It's not a whole lot of time saving, but still, it's 1 click instead of 5. I think I can make it work for Mac and WIndows as well.
https://chat.inkscape.org/file-upload/F3rsGK8BJtAoz5NjY/AppImage%20links
Moini mentioned another problem: publish most recent master/1.0 branch artifact link on web site, etc.
What do you think. Can we simplify reporter/tester workflow a bit? 2020-03-02 14-12-03 PST Sergei Izmailov What you suggest requires predictable file name, but it's not for inkscape bundles 2020-04-01 11-28-57 PDT Sergei Izmailov Are they abandoned/obsolete/not (yet) working? 2020-02-07 08-45-53 PST Sergei Izmailov (without promise to do anything so far) 2020-03-28 13-21-30 PDT Sergei Izmailov Sorry, need to go. I'll get back to it tomorrow 2020-03-02 14-13-58 PST Sergei Izmailov Yes 2020-04-01 12-21-39 PDT Sergei Izmailov Templates probably should go to `stock/template` instead of `stock/effect` 2020-03-28 11-45-49 PDT Sergei Izmailov Right 2020-03-04 07-28-52 PST Sergei Izmailov meeting happens in chat? 2020-03-28 11-38-52 PDT Sergei Izmailov (fixed) 2020-03-04 08-04-51 PST Sergei Izmailov Cool 2020-04-10 10-52-51 PDT Sergei Izmailov Hi! What do you think about setting a couple of env variables in inkscape? They can be used to enable python2-only extensions within inkscape-1.0 environment.
**Variables set by inkscape:** ```bash INKSCAPE_SYSTEM_DIR=... INKSCAPE_USER_DIR=... ```
Then we can turn python2 extension into a bash extension via simple wrapper script: ```bash export PYTHONPATH="$INKSCAPE_SYSTEM_DIR/extensions/deprecated-simple:$INKSCAPE_USER_DIR/extensions" my/path/to/python2 $@ ``` 2020-03-27 22-59-54 PDT Sergei Izmailov It turned out that core change is really small as you already had almost everything in place 2020-03-28 13-16-22 PDT Sergei Izmailov This is silly 2020-04-01 11-28-07 PDT Sergei Izmailov By the way what is the status of "hidden" extensions? 2020-02-02 14-07-33 PST Sergei Izmailov (if you plan to work on it next days) 2020-03-04 08-08-27 PST Sergei Izmailov I do something here and there to have a brake with my thesis 2020-04-01 12-30-11 PDT Sergei Izmailov By how much? 2020-03-02 08-51-29 PST Sergei Izmailov Extension is most powerful tool available, but it's not as flexible as curated self-hosted web-page. 2020-03-28 13-15-52 PDT Sergei Izmailov this should give an error, right? 2020-02-02 14-47-06 PST Sergei Izmailov ok, thanks 2020-03-02 14-14-50 PST Sergei Izmailov `https://gitlab.com/inkscape/inkscape/-/jobs/456464633/artifacts/raw/Inkscape... does the trick, but it requires job id and commit sha 2020-03-02 14-09-19 PST Sergei Izmailov oh, 2020-03-31 11-46-45 PDT Sergei Izmailov I was talking about https://gitlab.com/inkscape/extensions/-/merge_requests/182 2020-03-28 12-42-00 PDT Sergei Izmailov I mean the "initialize once" problem is still there 2020-01-29 08-16-17 PST Sergei Izmailov Hi, I'm going to submit a couple of improvements to inkex today 2020-03-31 11-47-39 PDT Sergei Izmailov I've seen your revert, thanks for reassessing. Probably I've turned too early to others 2020-03-29 15-45-06 PDT Sergei Izmailov I've pushed rebased version without name clash checks, please see 2020-04-02 07-37-39 PDT Sergei Izmailov Not really. But it's always better earlier than later. 2020-03-27 19-54-40 PDT Sergei Izmailov It can be mixed solution, i.e. we can rely on convention in one module and redefine `__all__` in another one 2020-03-27 17-14-37 PDT Sergei Izmailov Hi! Do you plan to do followup to https://gitlab.com/inkscape/extensions/-/merge_requests/178 ? 2020-01-29 08-36-17 PST Sergei Izmailov Let me look at MR 2020-03-02 13-13-04 PST Sergei Izmailov [ ](https://chat.inkscape.org/direct/doctormo?msg=uf8ja8aukNfDiz8ZD) What is it? () 2020-03-04 07-17-58 PST Sergei Izmailov Hi, can you have another look at https://gitlab.com/inkscape/extensions/-/merge_requests/170 ? 2020-01-31 15-49-59 PST Sergei Izmailov Would you find a minute to review MRs 2020-04-01 12-32-51 PDT Sergei Izmailov We *may* sacrifice it, but as a last resort. 2020-03-04 07-30-27 PST Sergei Izmailov Not sure how helpful would I be, but ok, I'll try to attend 2020-04-01 02-21-28 PDT Sergei Izmailov Deep subdirectories seems to be already supported in master, (didn't test 1.0) 2020-03-30 12-13-44 PDT Sergei Izmailov 1) I did a clean up. And no extension currently use elements submodule explicitly 2) It's about guarantees we make, not about what people do 2020-03-04 07-29-16 PST Sergei Izmailov In principle I think I can be there 2020-02-02 14-06-22 PST Sergei Izmailov GUI testing is not fast and easy 2020-03-29 15-47-15 PDT Sergei Izmailov I think it's better to keep this split an "implementation detail" 2020-01-31 15-50-56 PST Sergei Izmailov May I ask you where are you from? 2020-03-02 14-09-31 PST Sergei Izmailov ;) 2020-01-28 18-44-51 PST Sergei Izmailov I think I'll be back in 15 hours or so. See you 2020-03-02 14-08-32 PST Sergei Izmailov yep 2020-04-01 12-22-22 PDT Sergei Izmailov See the link above 2020-03-28 11-18-55 PDT Sergei Izmailov Python modules are loaded once no matter what 2020-03-29 12-39-38 PDT Sergei Izmailov We can add extra check that all import statements from `inkex/__init__.py` present in `tests/test_inkex.py` 2020-02-07 08-42-05 PST Sergei Izmailov Can you give a review for extension MRs ? 2020-03-28 10-57-53 PDT Sergei Izmailov I don't think it's really feasible, let me try 2020-02-02 14-12-09 PST Sergei Izmailov Can you describe how you test it 2020-04-01 05-01-53 PDT Sergei Izmailov There is plenty of clean-up and checks to be done, but alreay you can see the picture in broad lines 2020-03-30 12-15-47 PDT Sergei Izmailov Seems like you didn't get it. Its up to user to rely on submodule structure or not. 2020-03-30 12-23-52 PDT Sergei Izmailov Probably it's a sign to revise list of high-privilege members of all repos 2020-04-06 09-33-18 PDT Sergei Izmailov Are my comments illiterate rubbish and no one can read it? 2020-01-31 16-02-51 PST Sergei Izmailov Some may support them because "Those who are against those who are against us Can't cope with them without us" 2020-03-04 07-52-33 PST Sergei Izmailov Force-push of rebased commits wiped out your approval. 2020-03-28 11-18-35 PDT Sergei Izmailov The main issue - testing "the right thing". 2020-02-02 14-06-13 PST Sergei Izmailov I want to help with bbox MR, but I'm really limited in time 2020-04-10 05-52-55 PDT Sergei Izmailov ok, no problem. What is 1.0 release date by the way? 2020-03-28 12-43-33 PDT Sergei Izmailov Add `print(__name__, "init complete")` to the end of `inkex/__init__.py` 2020-03-28 01-44-51 PDT Sergei Izmailov I'll check it one more time manually today and let you know. 2020-03-29 12-30-38 PDT Sergei Izmailov I mean your example seems to be based on unittest 2020-03-30 12-09-02 PDT Sergei Izmailov No, should I? 2020-03-28 13-15-31 PDT Sergei Izmailov ``` def test_inkex_paths(self): """Test path API have no collisions""" self.assertNoCollisions(inkex.paths) ``` 2020-04-10 04-53-11 PDT Sergei Izmailov Hi, just wanted to remind you about extension sort MR (it awaits your review) 2020-03-04 07-22-45 PST Sergei Izmailov Although changes must be well-reviewed 2020-03-29 15-43-50 PDT Sergei Izmailov All discussion was about `inkex/elements/*` 2020-03-28 12-55-15 PDT Sergei Izmailov Ok, seems to be hacky, but working solution 2020-03-04 07-25-50 PST Sergei Izmailov I know it's not fun to keep updating your extension which did work yesterday, but it's cost of keeping up with latest chagnes 2020-03-27 17-16-01 PDT Sergei Izmailov I think can help there (along the lines of my comment to !178). 2020-03-04 07-22-11 PST Sergei Izmailov That's why it's better to do sooner than later. 2020-04-10 10-58-09 PDT Sergei Izmailov It's almost equivalent to calling `inkscape --system-data-director`, but it takes more than 0.1 second on my machine which is a lot for such a simple operation. 2020-02-02 14-46-17 PST Sergei Izmailov By box you mean dashed selection line, right? 2020-03-27 20-01-20 PDT Sergei Izmailov Probably prefixing with underscore is more about making parts of API "private", probably should be addressed in separate MR 2020-01-28 13-57-24 PST Sergei Izmailov We can discuss if you are still there. 2020-03-30 12-14-59 PDT Sergei Izmailov Being nice to everyone is not possible. Sometimes you have to tell people they are wrong. That's how they mature and grow as programmers 2020-03-28 11-20-15 PDT Sergei Izmailov I'm going to move all this fortification to tests, so we don't have overhead in inkex 2020-03-30 12-10-20 PDT Sergei Izmailov What would people copy and paste? 2020-03-02 09-04-33 PST Sergei Izmailov Sorry for bothering you in person, but the comment in dev chat got no reaction. May be it's worth waiting with this discussion until May 2020-02-07 08-41-48 PST Sergei Izmailov Hi! 2020-01-31 16-07-38 PST Sergei Izmailov I'm a bit out of trend, but currently I don't see some who actively do riot performances. It feels like almost everyone does a bit. 2020-03-28 10-53-56 PDT Sergei Izmailov Hi! 2020-03-04 07-27-39 PST Sergei Izmailov As long it's beta it's permissible, once 1.0 released we have some obligations. 2020-01-31 16-08-29 PST Sergei Izmailov Even one who used to be completely apolitical starting making some claims 2020-03-04 07-26-40 PST Sergei Izmailov inkscape itself changes CLI and probably other public interfaces 2020-04-01 12-33-20 PDT Sergei Izmailov Sure, this project is not nearly ready to review 2020-01-29 10-24-54 PST Sergei Izmailov Sorry, already getting sleepy. Probably I'll be unable to submit today, probably in next couple of days 2020-01-31 15-52-06 PST Sergei Izmailov One of the last countries I would think as "suicidal" 2020-03-28 11-13-44 PDT Sergei Izmailov [ ](https://chat.inkscape.org/direct/doctormo?msg=WRgATvvaE4ZyyfSYt) Ok, it's possible but we have to repeat everything from `inkex/__init__.py` in test function, it's not bad on it's own, but the question how to keep it in sync? At least we can place a comment to `inkex/__init__.py` to reflect changes in corresponding test file () 2020-03-28 12-41-40 PDT Sergei Izmailov Did you test it? 2020-04-02 07-39-42 PDT Sergei Izmailov Maybe someone (including me) will fix some bugs in core extensions. It's better to avoid extra rebases/merge conflicts