Expanding functionality of the addon via pie-menu

Damjan, I'd like to share a cool idea that came to me.
What if instead of complex checks you'll add a 8-section pie-menu instead?
Advantages:

no need for complex coding for you with headache regarding tricky checks, proper naming and renaming
a user can choose what he would like to modify. AND! This way we also can CONVERT!!! one primitive into another! Change a cube into a cylinder, a cone into a sphere etc.!
using the pie-menu is a VERY convenient way of working - in couple of days there is a muscle memory formed for frequently used menus

I've already made a semi-workable prototype as proof of the concept (no coding from my side, just using Pie Menu Editor Addon):
Video1:
https://github.com/eXzacT/RePrimitive/assets/84742853/2e8ea9c6-fcea-4a59-9643-4bec85e7c18e
Video2 (booleans/BoxCutter):
https://github.com/eXzacT/RePrimitive/assets/84742853/7613a582-ba7a-4f83-a9a7-333a5c6a9774
This thing can expand the functionality of your addon substantially :)

That's a pretty good idea, however the issue here is that going from 1 object to another, I can't guarantee what would happen as the scripts are tailored to each object, it's possible that the object ends up being huge or even worse problems.
I can't say for sure as I never tested the operators for a different object type than the object actually is, as there was no need to do so.
It did seem to work fine with your examples though.
Also I think there has to be a different math-y way to figure out which object it is without fixing their rotations, but I remember not being able to come up with one before.

Side note, my laptop is falling apart when I'm running a boolean with an exact solver, is that happening for you guys too?
Even if I am just moving the cutter around and not using reprimitive on it.
I've fixed the parenting and booleans losing track of a cutter object, there's still some bugs left when the location/rotation is applied though, probably finishing that today along with adding loop cuts.

I can't guarantee what would happen as the scripts are tailored to each object
You can add to the description that besides the main functionality the addon has an another conversion feature, but it's outcome can not be 100% predicted and it's up to the user experimenting with it.
Regarding huge sizes - is it possible to implement bounding-box check of the initial mesh and make the resulting mesh similar to it? Somewhere in the future, as 2nd grade task. As the main thing now, I guess,  is the preserving the initial state of the object - parenting, origin, booleans and shading(wired/solid, smooth/flat)

The other problem with this is that I would also need to create a built in pie menu because not everyone has it and it does add some work for the user which is what I'm trying to avoid, I think most people wouldn't want to choose which operator to use and would prefer if the addon figured out

Side note, my laptop is falling apart when I'm running a boolean with an exact solver, is that happening for you guys too?
Only on very dense meshes. On something simple like in the videos above - all works fine.
Besides hardware power , you can check if some other addons (like Kit OPS) take resources of your laptop.

some work for the user which is what I'm trying to avoid
Well, there is still no such a button "make me a prop without any efforts". Even with all the fuss around AI...
To be serious. Do you mean it can be confusing to a user to choose proper option in the menu?
Well, if you want you can preserve the current one-button implementation and add the pie-menu as advanced option for another hothey.

Yes I know, I was thinking about that as an option, that one might take a while though because I don't know how long it would take me to add a pie menu, I'm thinking since it exists as a separate addon it's probably not easy at all

https://gifyu.com/image/SUFh2

I suppose a simpler thing would be to just add the quick rename mesh

https://gifyu.com/image/SUFh2
It looks like everything  is fixed! I'm eager to try it :))
Reg. PME  - this is really complex addon with a lot of functionality. I barely use 50% of it...  I'm not a programmer, and can't give you any advice regarding it unfortunately. But I think it shouldn't be too complex to create 8-section pie menu. I believe I've seen something regarding it on youtube.

Here is a video on YT: https://www.youtube.com/watch?v=41fXtvzJ3Ik&t=8s

Which object do you use most for cutters, I assume cylinders? If you want I can make it work for word Cutter aswell but it will assume it's a cylinder.
I'll upload the files here because it's not fully finished for a release yet

RePrimitive.zip

Well... there aren't one most shape for cutters. All variations of cubes, cylinders and n-gons are used quite often. No, thanks. I think I'll stick with the menu approach - it's more flexible for my needs.
RePrimitive.zip
Answered in the "Boolean / Parenting / Vieport Display" topic

Oh, man! It's so cool be able to work like this thanks to your addon!
https://github.com/eXzacT/RePrimitive/assets/84742853/68d51967-8564-4bc5-b367-887ba80e3057

I'm glad you're having fun :)

is there any point adding loop cut support for toruses or is it just for cylinders/cones?

No, adding support for cylinders/cones is enough.
Bu the way, I'm going to try add an another item in the pie-menu - Cube (4 sided cylinder + 45 degree rotation). It could be useful for faster conversion.

I don't know if I want to add the pie menu, because going from 1 object to another one makes no sense, I mean calculation-wise
but I do have to figure out a way for Cutters to also be accepted as a name and to pick the correct operator that gets called.
I don't know if there's a nice way to do that other than going down a huge tree and deciding which path to take and once you reach the end of a path you can say with 100% certainty what kind of shape it was

An another use case I've found for RePrimitive :)
https://github.com/eXzacT/RePrimitive/assets/84742853/d4b9197f-24f8-49d3-8247-27af7d9e409f

That looks funky ahahhahaha 😄

Can you tell me if a cutter is always parented to the object it's cutting? Or is that not always the case, because right now it's looking for modifiers that a parent has, I would have to change it to go through every object in the scene and check if some have modifiers that are linked to the object you're changing, which might be costly depending on the scene but probably fine,
also would you like the loop cuts to get reapplied after changing the object? That might be a bit tricky since I can't really know where to put those cuts again, I guess I could get the height of a cut and what's the percentage of total height, then reapply it at that height percentage

"Can you tell me if a cutter is always parented to the object it's cutting?" - if we're talking about BoxCutter, than yes, it always parents a cutter as well as creates the folder Cutters, and put there the cutter as well.
Hmm.. I'm not sure I understand why it's necessary to looking for modifiers, but it's technical things I'm not competent with :)
" would you like the loop cuts to get reapplied after changing the object?" - if it's possible, it could be very handy for cylinders and cones. Probably it's worth to  implement it via checkmark? Good idea regarding height! I don't know if this is useful but BC orients cutters along Z axis:
https://github.com/eXzacT/RePrimitive/assets/84742853/562f482f-3fec-46a3-9c2f-3c804adaab36

Because the object you are changing is the target in the boolean modifier of the parent object, so when I delete the old objects I have to point the parent at the new one, I'm guessing that's one of the reasons they put it as a parent so they can easily track which objects have cutters and which cutters are cutting what.
Okay I'll see about reapplying the loopcuts at the correct heights again, I'll send the fixes I've doen so far here later today :)

Set it as not planned since I think I can solve it in a better way, I've done the rest you mentioned here though(I think), please let me know if you find any issues I'll get to fixing them as soon as I can, thanks :)

Great job Damjan! :)
RePrimitive preserves origin now, the same thing with Flat/Smooth. Working with the addon is very comfortable now!

Thank you, glad you found it helpful :D

Looks like we didn't notice the elephant in the room :D
There are couple of problems if we edit a source object:

with parenting;
loss of a boolean if we edit a cutter AFTER editing the source object

https://github.com/eXzacT/RePrimitive/assets/84742853/52b0b914-fb56-43a2-bb15-50b0aa9cc1e8

Oh of course, I should have thought of that 🤦, fixing it right now

RePrimitive.zip
I think it works now, can you please check if I understood you correctly?

Yeah, you fixed these 2 issues! *thumbs up
Though I've noticed it creates unnecessary duplicate:
https://github.com/eXzacT/RePrimitive/assets/84742853/aeb9e87a-1b8c-44d1-ac53-bec6db718126
Could you also add preserving shading?

One more thought. Probably it would be better if scaling of an object could work from the origin.
https://github.com/eXzacT/RePrimitive/assets/84742853/49dfb642-b9fe-47ad-a618-68344401791f
What do you think?

Oof the scaling might be really hard, I have to check it out, when you change radius/depth I think it's different from the "s" scaling one, but I could be wrong

I think it's Shade Auto Smooth. Though there are some changes in Blender 4.1 regarding shading. I haven't test 4.1 yet, but I heard this option removed completely and replaced by either a modifier or geometry node modifier (not 100% sure)

As far as I know, there is no way for me to tell whether shade smooth OR shade smooth(auto) was used on an object, so I can't know which of those two to reapply. Right now I'm reapplying shade smooth which is why the code doesn't work for you.
Maybe the best thing I can do is just always shade smooth auto it(if either was used) if that one is generally more used

False alarm sorry, I can find out which shading was used

This smoothy thing is subject to change in B4.1, so please don't invest to much time into it.
I need a couple of days to figured out all the changes that B4.1 has brought, since it was released yesterday.

It was just couple lines of code to change it(I think it should work fine now)
I'm trying to reproduce the bug where it created duplicates but it doesn't happen to me, was it in that specific scenario or is it creating duplicates constantly?

Oh maybe because you're on 4.1

No, I'm on still 4.0.3
I guess this has to do with additional collections in the project.

Nope, this is related with the selection state of a collection:
https://github.com/eXzacT/RePrimitive/assets/84742853/7b2b7491-71f0-40d2-8cf5-4bc9b7af6d38

It creates a duplicate if something other than the Collection and Cutters folders is selected

I don't think it's a duplicate, just linked to two different collections at once

but I still don't know how to recreate the bug, could you do it manually without boxcutter creating some collections?

I think I'm supposed to unlink it from the default blender collection where objects get added if it wasn't there to begin with, let me check after meeting

I don't think it's a duplicate, just linked to two different collections at once

Yes, you're right.

but I still don't know how to recreate the bug,
I can send you the file:
RePrimitive_01_2.zip

could you do it manually without boxcutter creating some collections?
Checking it atm

The same thing without using BC:
https://github.com/eXzacT/RePrimitive/assets/84742853/9f9a3725-bc8e-4a32-80b2-142c6eedf3f1

Yep it's as I suspected, I thought about it when originally writing the code but I forgot, by default when we add new objects they go to the scene collection so I was linking it to the previous collection correctly but didn't unlink it from default if it wasn't inside it
RePrimitive.zip
I think it should work now, also the shading

Awesome, I'll wait a bit before releasing it because I'm sure you'll find something else hahahahahah

Hahaha! )))
Sorry man, this really isn't my goal to bother you with my discoveries :)

hahahaha it's not a problem, good that someone finds it

I've been trying to implement a preset system via PME. Something like this:

Unsuccessfully yet unfortunately :(
Is there a proper command or a way to run a pre-created in RePremitive preset?
I tried 3 methods:

Run one command:

Run the command + execute the preset:

Record and run all these commands:

you just want to spawn a specific primitive shape? you can just use the standard blender commands for that one
bpy.ops.mesh.primitive_cone_add(radius1=1, radius2=0, depth=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1)) but yeah you can't really spawn it where it was previously

oh I think I know what you mean, just do bpy.ops.object.reprimitive_primitivename
so either .reprimitive_cone
reprimitive_cylinder etc

The issue is operators I made don't support for input, they calculate everything by themselves, so calling them with some other data won't work because there is a lot of underlying data that is computed and you can't pass those

you just want to spawn a specific primitive shape? you can just use the standard blender commands for that one

No, I want to create a button(s), which can run RePrimitive command, let's say Tweak Cylinder, and set necessary number of vertices (6/12/32.. etc).
So instead of :

press hotkey
move the cursor to the field
manually type number of vertices  in that fielt

Do these steps:

press hotkey
select proper preset

oh I think I know what you mean, just do bpy.ops.object.reprimitive__primitivename_
so either .reprimitive_cone
reprimitive_cylinder etc

Yeah, that's the first thing I tied (№1).

The thing is when you do bpy.ops.object.reprimitive_cylinder for example

it is calling this function with those variables, and you don't have them defined because you essentially skip all the steps that are assigning those variables

So this command
bpy.ops.object.reprimitive_cylinder(vertices=32, depth=2.0, cap_fill='NGON', radius=1.0, b_UV=True, align='WORLD', operator_called_from_cancel=False)
isn't enough to determine these variables?

yep those are just the ones that you see in the UI, and the ones that blender has when adding primitives too, there's a lot more hidden and you can't pass those

for example it's also passing the rotation, location and sure if you didn't apply it then you could just pass the current object location and rotation, but if either are applied there's quite some edge cases and you wouldn't be able to pass the correct data yourself

Damn, sometimes I regret I haven't invest my time in studying Python...
It looks like PME addon can't help in this case.

One last idea.
PME can run an exterior script.
Could you please separate this necessary part of the code into the script? Tweak Cylinder, set 12 vertices.
I could use this script as the example, and modify for other vertices.

Yeah I can help you set it up, tomorrow though :)

Sure, no hurry. When you have some time :)

I was wrong you can pass variables as long as you add 'INVOKE_DEFAULT' to the call, like this
bpy.ops.object.reprimitive_cylinder('INVOKE_DEFAULT')
but whatever you pass will get overwritten anyway since I'm calculating it myself, are verts the only thing you care about? I can change it so it doesn't get calculated if it's passed

Yep, the idea is that a preset should set predefined amount of vertices, other than that it should work as the standard Tweak Cylinder tool (preserving radius, depth, origin, shading etc.).

RePrimitive.zip
so the way you can use it is add the menu as you did in pie menu addon, and bind each button to different strings such as
bpy.ops.object.reprimitive_cone('INVOKE_DEFAULT', vertices=32)
bpy.ops.object.reprimitive_cone('INVOKE_DEFAULT', vertices=16)
bpy.ops.object.reprimitive_cylinder('INVOKE_DEFAULT', vertices=32)
bpy.ops.object.reprimitive_cylinder('INVOKE_DEFAULT', vertices=16)
bpy.ops.object.reprimitive_circle('INVOKE_DEFAULT', vertices=32)
bpy.ops.object.reprimitive_circle('INVOKE_DEFAULT', vertices=16)
I've only added it for those 3, wasn't sure if you wanted to do it for others too since they don't have verts but major and minor segments, also you can only add vertices=, others are overwritten
I've added a way to check what type an object is so you don't need to rename them anymore, they'll keep their original name and mesh name, there are some edge cases where it won't work like cone with 4 sides, since all the faces are quads I'll just assume it's a torus, also some cases with cones being pyramids but it should guess what type an object is for 99% cases
Could you please try instaling then closing blender and reopening and see if the keybinds still work? cause they don't for me, I want to know if I messed something up locally or for everyone

Testing it atm :)

Could you please try instaling then closing blender and reopening and see if the keybinds still work? cause they don't for me, I want to know if I messed something up locally or for everyone

It looks keybindings work fine on my side. Tried uninstall->save->reload->install->save->reload. And my usual method: delete old files in the addon directory and copy the new ones.

Aren't there any conflicts in your Keymap?

Oh it's because I rebound it when I was testing a specific function, thanks :)
Everything works as you expected it to?

Just super! Presets system works great!!! Very convenient to use it! Thank you so much Damjan!!!
In case you'd like to see how it works , I've recorded a demo:
https://github.com/eXzacT/RePrimitive/assets/84742853/a4a1e73f-e6f4-4274-935d-d149f9a621c8
I've noticed some changes in this version in the main tool, there is strange behavior with live update in the pop-up window. But it is probably with my setup only. I've been trying to figured it out, but no success yet (it's too late here and I'm half asleep ). I'll try tomorrow with a fresh head.

I was doing a lot of refactors again since I've made the addon like 2 or 3 years ago, so I might have changed some functionality during the refactors, everything seemed the same though

Pie menu is so cool but I can't implement it as going from 1 shape to another doesn't make sense, a lot of the code is specific to the shape you're working with so I can't guarantee there won't be no errors/crashes etc

A couple of observations regarding that live-update issue.
First, how it worked in previous 2.0.1 build: it was possible to tweak values in both windows (pop-up window and default undo window)
https://github.com/eXzacT/RePrimitive/assets/84742853/78fea1ac-0694-424f-80c7-22ab93298008

With the current build tweaking values in the pop-up window does nothing (though if we press Ok button it applies the values). I've noticed that it's related to the state of the  "operator_called_from_cancel" command:
https://github.com/eXzacT/RePrimitive/assets/84742853/2f0e04ca-e712-47c5-b50d-66323f35c197

love the question marks 😂, it works if you use it regularly but it doesn't when you pass the verts manually, should work with this one
RePrimitive.zip
It's a temporary fix but I have to look into what I was trying to do with those from_cancel and from_check booleans and if they're necessary at all, I vaguely remember having issues where execute was running twice so I added those extra checks for performance reasons. I have a plan of writing the calculated data into object meta data so it doesn't have to be calculated again, it should perform A LOT better that way, the downside is every object that was changed by the addon would have that metadata written inside them, which shouldn't be a big deal because it's just a couple of integers. It would also theoretically help a lot with loop cuts, so if you called the operator on an object without loop cuts, it would properly save all its data, then you could add loop cuts ad they wouldn't affect the already saved data, I could then reapply those loop cuts

actually it depends on how you use the addon, if you keep closing and calling the operators again then it computes it every time, but if you generally keep it open and just change it in the first popup or even in the bottom left it's just calculating twice, it would help with loop cuts though and any kind of destructive workflow as it would remember the data from the time the object wasn't changed drastically

It works for the first time now.  If I execute the command next time - the same thing as before. Also, if a preset was used previously, than it applies the exact number of vertices as it was in the preset.
In case it has any importance , I noticed some changes in Data->Custom Properties section
https://github.com/eXzacT/RePrimitive/assets/84742853/54b89501-aa74-4922-b696-555565c1e87c

In case it has any importance , I noticed some changes in Data->Custom Properties section, what do you mean by this, I am writing whether cone was sharp_tipped so I don't have to compute it twice, but then deleting the property afterwards, you shouldn't be able to see it

the bc, hops and the other one? it's from hardops not me, but maybe me adding a property is triggering theirs to show or something

the bc, hops and the other one?
You mentioned metadata previously, so I thought it might me important for you to know that these ones are disappeared after using the addon :)

I'm not using that approach yet, currently only for the cone and 1 specific property is_sharp_tipped, you don't need to know about this but let's just say cones are such a pain... million edge cases 🤦♂

Did you check my gif? Everything works fine for me idk what's the problem

the bc, hops and the other one?

You mentioned metadata previously, so I thought it might me important for you to know that these ones are disappeared after using the addon :)

Oh that might be a problem for other addons working with this one, I could just copy all the properties when creating a new object, but first let's see if it actually creates a problem, I am not using hops so idk what they use those properties for

Did you check my gif? Everything works fine for me idk what's the problem

Yes, you're shooting presets commands. And presets work great (thank you again :)!
But try to run this one twice:
bpy.ops.object.reprimitive_cylinder(operator_called_from_cancel=False)
Can you change values after second run in the pop-up window under the cursor?

bpy.ops.object.reprimitive_cylinder(operator_called_from_cancel=False)
don't call it like that
just do ('INVOKE_DEFAULT', vertices = ?)

if you want the addon to guess which operator should be called(should work in most cases, I have to take care of some edge ones)
then you can just do bpy.ops.object.reprimitive(), but it's even better if you manually call a specific operator since it skips to check which one it is
here you have to add 'INVOKE_DEFAULT'
bpy.ops.object.reprimitive_cylinder('INVOKE_DEFAULT'), this one will calculate verts
bpy.ops.object.reprimitive_cylinder('INVOKE_DEFAULT',vertices = 20), this one will calculate them but overwrite with the ones you passed, so it will end up being 20

Man, you're a genius!!!
This command works smoothly for the main tool(calculating vertices)

bpy.ops.object.reprimitive_cylinder('INVOKE_DEFAULT')

And this one for pre-defined presets(buttons)

bpy.ops.object.reprimitive_cylinder('INVOKE_DEFAULT',vertices = 20)

hahahahahahah let me know if you find something else :D


Color a shape progressively from one side?  Centrally align a text inside a shape?

How to color a shape progressively from one side?
How to centrally align a text inside a shape?

I will only answer the first question, the second one is very easy to solve if you see the documentation or tutorials on YT:
class ColorExample(Scene):
    def construct(self):
        c=Circle(fill_opacity=1,vect=[0,1,0])
        c.set_color(color=[RED,BLUE])
        color_direction=[0,1,0]
        c.set_sheen_direction(color_direction)
        self.add(c)


Necessary steps to reintegrate BSRGANx2

Hi,
I've been investigating the problems you were facing with BSRGANx2 and I believe the flaw is actually with your code, not the model or torchml version. I managed to get it working again with the old BSRGANx2.pth file.
Step 1: Removing upconv2
The BSRGANx2 model does not contain the upconv2 dimension, but your code currently always looks for it. Commenting these lines out while using the BSRGANx2 model allowed it to work properly.
        if sf == 4:
            self.upconv2 = nn.Conv2d(nf, nf, 3, 1, 1, bias=True)
...
        if self.sf == 4:
            fea = self.lrelu(self.upconv2(F.interpolate(fea, scale_factor=2, mode='nearest')))

Solution: Alter these if statements to also check if the model is != BSRGANx2.
Step 2: Reducing scaling multipliers
The latest version hardcodes the multipliers for * 4 for example inside fix_tile_shape and get_final_image_shape. We must instead change this to * 2 when using BSRGANx2.
That's all, it's working fine for me now. Please let me know if you need assistance, and I am very much looking forward to BSRGANx2 being added again! 🎉

Sorry, I realize now that sf is "scaling factor" and you intended it to be 2 when using the BSRGANx2 model. It should still work the same. I'm curious to hear about the issues you were facing, because I'm successfully upscaling images of any size with the 2x model on the latest version using these changes.
I did encounter problems at one point when I set strict=False on load_state_dict and ran your existing code. The resulting images were wrong and discolored. But by removing the upconv2 code, it works as expected.

Hi my friend, i resolved the problem just yeasterday! Thank you :D
It will be reintroduced in next release :)

That's great news! Thank you so much for your hard work. 😄
If you are open to suggestions for the next version, may I suggest adding a window title, and allowing images to be dragged and dropped into the application again? Otherwise, let me know if you are open for PRs on these after the next release. 😄
Thank you!

Thank you my friend ❤
Unfortunately customtkinter doesn't support any kind of drag&drop, I'm also following a thread on github about it but I don't see any development :(

I was able to get drag and drop working, although I haven't fully implemented it in a usable state yet. The trick is to use tkinterdnd2 and create a custom Tk class like so:
class Tk(CTk, TkinterDnD.DnDWrapper):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.TkdndVersion = TkinterDnD._require(self)

Then, replace your window line with this:
    window = Tk();

With this alone, the app will continue working as before. However, you can now listen for drag and drop on something like the up_background:
def get_path(event):
    print(event.data)

def place_up_background():
    up_background = CTkLabel(master  = window,
                            text    = "",
                            fg_color = dark_color,
                            font     = bold12,
                            anchor   = "w")

    up_background.place(relx = 0.5,
                        rely = 0.0,
                        relwidth = 1.0,
                        relheight = 1.0,
                        anchor = tk.CENTER)

    up_background.drop_target_register(DND_ALL)
    up_background.dnd_bind("<<Drop>>", get_path)

Now, the drop cursor is displayed, and dropping a file will successfully print the file path.
Does that help? Perhaps this is worth its own issue, if you'd like me to open one for more exploration.

Thank you, I will look into it 😄


add bdd test for create-a-wishlist

add bdd test for creating a wishlist
update index.html
add js functions
update create a wishlist in routes.py

Codecov Report

Merging #91 (1e77931) into main (429b630) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main      #91   +/-   ##
=======================================
  Coverage   97.56%   97.56%
=======================================
  Files           7        7
  Lines         533      534    +1
=======================================
+ Hits          520      521    +1
  Misses         13       13

Impacted Files
Coverage Δ

service/routes.py
97.66% <100.00%> (+0.01%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 429b630...1e77931. Read the comment docs.

IBM Cloud toolchain: Delivery Pipeline deployed wishlists to prod, including commit 4f973814d1114fc41e78f6177cdd6766a0044ca7


Rocky 8: Generate a more complete overcloud image

The standard rocky container is very bare-bones and is missing many useful utilities. The container-generic image is supposed to be more like the generic cloud image.

Hmm, only in xena


Use of mainline kernel

Is any release of ROCm compatible with any mainline release of the Linux kernel? E.g., can I use ROCm 1.5 with kernel 4.11? If not, what are the plans for ROCm to be mainlined?

1.5 uses the 4.9 kernel,  we are in the process of upstreaming all the key components.   With 1.6 we finally have full DKMS support.  We full engineering team dedicated to ROCm maintaining it.
On May 5, 2017, at 7:19 AM, almson <notifications<EMAIL_ADDRESS>wro
Is any release of ROCm compatible with any mainline release of the Linux kernel? E.g., can I use ROCm 1.5 with kernel 4.11? If not, what are the plans for ROCm to be mainlined?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/RadeonOpenCompute/ROCm/issues/118, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AD8DucR9tNmZEwADy3WatIMIsuxlQ_0sks5r2xPvgaJpZM4NR19l.

@gstoner thanks for the info. So you don't plan going upstream with ROCK for 4.12?

Merge windows for Linux kernel are delicate balance,  we are working on getting all the code where applicable up streamed

In short, wait until the 1.6 release and verification that the mainline kernel has full support for it. Got it.

Although you have Ryzen support, Ryzen processors really like a 4.10 kernel. So this will be good for Ryzen users too...

It in the plans.
 So this will be good for Ryzen users too...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/RadeonOpenCompute/ROCm/issues/118#issuecomment-305756045, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AD8DuR_pmdz31h6EWfggLNxXxIsTRYNqks5r_-sbgaJpZM4NR19l.

What version of mainline kernel is required to run rocm?

It best to load Ubuntu 16.04 and follow the install instruction,  we have new instruction at
https://rocm.github.io/ROCmInstall.html   Currently ROCm uses the 4.9 Linux kernel.   Note for Ubuntu, it best to use our kernel.     We have base 4.11 Kernel update in our internal mainline, it under test now.
We are working with the community to upstream the extra driver components we need.

@gstoner I thought, that this issue was closed, because all needed patches were upstreamed to mainline. So support of mainline kernel is not ready yet? If it's so, can you reopen this issue, please?

Mainline kernel support hasn't been updated or it wouldn't be necessary
for the custom 4.9 kernel and I could just run dkms directly via Debian
and have it hooked into Debian Sid.
I sure am looking forward to the OpenCL stack from ROCm and Mesa since
the OpenGL track and later Vulkan support [another interesting topic
that will come up when AMD is ready with their Vulkan stack vs. RADV]
since that is the direction AMD has committed to achieving relies on the
OpenCL stack from ROCm, and not Gallium.
However, I sure as hell am never going to use Ubuntu proper so the only
full stack that AMD offers in deb format off AMD is out of reach for me.
I'm a happy AMD investor in stock and hardware but an irritated Linux
user. I am fully aware of software release schedules in my career.
My other systems are OS X and as an ex-NeXT/Apple engineer I understand
the need to satisfy the Enterprise markets first and legacy professional
markets.
With the increased visibility and growth in this upcoming Q10 I urge AMD
to double the size of their staff for this endeavor. It's paramount that
the ROCm initiative be mature, across Windows and Linux, and wise if
they extend their business relationship with Apple to do everything
possible for the iMac Pro, Mac Pro and future potential Zen systems to
achieve a long term stable corporation.

Marc J. Driftmeyer

On 07/02/2017 01:00 PM, Iavael wrote:

@gstoner https://github.com/gstoner I thought, that this issue was
closed, because all needed patches were upstreamed to mainline. So
support of mainline kernel is not ready yet? If it's so, can you
reopen this issue, please?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/RadeonOpenCompute/ROCm/issues/118#issuecomment-312513590,
or mute the thread
https://github.com/notifications/unsubscribe-auth/APhR6gNBG2tWsztIFws2vJ95I7Ms8gyvks5sJ_bKgaJpZM4NR19l.

Guys I wish we could service all the flavor of Linux, but we can not currently. Marc hit the nail on the head engineering and testing staff is critical to broadening our support.  Remember we balancing supporting new silicon ( Vega10, EPYC, Threadripper, Ryzen, Power, ARM AArch64 etc)  new capabilities, new libraries, new application, improving the software we have already put in place.  All on moving target the Linux Kernel.
Now it would have been fun to have NextOS and what we doing with ROCm today, plus that engineering team help exploit what we can do with EPYC   Naples is game changer and it  Have 4 Vega10 GPU's on Single socket with 32 cores 64 threads and 8 channel of 4TB memory up  200-250 GB/s bandwidth.
I give you a preview for 1.7  release  REHL/Centos 7.3, Ubuntu, Fedora via DKMS.  Once we have base DKMS in place we can look at qualifying other Linux Distro. This is the last 1.x series to satisfy this requirement by late mid-summer,  then we focused on 2.0 release for the fall.
Here is a list of all the packages we rolled out with ROcm 1.6, https://github.com/ROCm/ROCm.github.io/blob/master/ROCmLinuxpackages.md

@gstoner  I just wanted to have some place to keep track on effort to run rocm on distro/mainline/custom kernel (in-tree, dkms or any other way). And I thought that this issue is such place. If it's not, then could you tell me where to look?

I will build something on ROCm.github.io to talk about how to build custom kernels.  I have been talking to the Linux team about not just dropping a single kernel but breaking out the major components of ROCm kernel driver as separate projects so it easier to understand what is really changing in the kernel.  Also, make it easier to port this to other OS.     Short of this, I set aside some time documentation on the website describing the kernel changes and changes Kernel graphics driver.
I have been looking at this anyone since I want to work with eBPF with PERF on a EPIC system with Vega10.

@gstoner The way GitHub works, is that if there is a feature request, then it exists as an open issue until the feature request is implemented. There are multiple reasons for this, including the notification mechanism that GitHub has.
So, reopen this issue.

Yeah, keeping the issue closed suggests it's a wontfix and, as far as I understand, it's the opposite - on the roadmap.

We are working on DKMS solution,  for the stack so no it not that we not going to do this, Patience we doing a lot of work with a small team.   We also have REHL/CENTOS and SUSE support on the Roadmap,  REHL/CENTOS is coming first.
@almson  I know you have strong opinion, but moderation is how GitHub works, this tread has been moderated

@gstoner I read the whole thread so I perfectly know this. I'm just signaling that the issue being closed miscommunicates:

open = just reported / todo / in progress / awaiting merge / ...
closed = fixed / wontfix / invalid / duplicate / obsolete / notabug

This issue clearly should be open, since you're working on it.

We already have a solution,  Base Linux kernel the same for AMDGPU and AMDGPUpro the later use DKMS and Kernel Compatibility layer.   Also, we are upstreaming all the core foundation update for ROCm into the Linux kernel so it will be maintained in each update.
The issue is closed

I have a simple request: Close this after this is upstreamed and mainlined into the Linux Kernel. At the rate AMDGPU and OpenCL is evolving we might be ready for Navi.

Marc

Marc Jeffrey Driftmeyer
Founder & CEO of Reanimality Studios LLC
Cell:<PHONE_NUMBER>
url: https://www.reanimastudios.com https://www.reanimastudios.com/
url: https://www.holoworlds.net https://www.holoworlds.net/
email<EMAIL_ADDRESS><EMAIL_ADDRESS>email<EMAIL_ADDRESS><EMAIL_ADDRESS>
On Aug 7, 2017, at 9:50 AM, Gregory Stoner<EMAIL_ADDRESS>wrote:
We already have a solution, Base Linux kernel the same for AMDGPU and AMDGPUpro the later use DKMS and Kernel Compatibility layer. Also, we are upstreaming all the core foundation update for ROCm into the Linux kernel so it will be maintained in each update.
The issue is closed
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/RadeonOpenCompute/ROCm/issues/118#issuecomment-320717926, or mute the thread https://github.com/notifications/unsubscribe-auth/APhR6n2_rHbfdp1FnK83sNXs0BqfOV4dks5sV0BCgaJpZM4NR19l.


cookiecutter keywords pyproject.toml scripts do not resolve

[tool.poetry.scripts]
{{cookiecutter.project_name}} = "{{cookiecutter.__project_slug}}.cli:main"

is translated to:
[tool.poetry.scripts]
Project_X = "{{ cookiecutter.project_name|lower()|replace(' ', '_')|replace('-', '_') }}.cli:main"

name replacement doesn't work for the project name either.

I just tried this using cruft create and all default choices (besides the project name = Project-X [- instead of _) and I got
[tool.poetry.scripts]
Project-X = "project_x.cli:main"

Is this different from what you are seeing?

doing the same, in pyproject.toml I get:
[tool.poetry.scripts]
Project-X = "{{ cookiecutter.project_name|lower()|replace(' ', '_')|replace('-', '_') }}.cli:main"

@sierra-moxon , is this still happening?

still an issue?


Updated Apache POI to 5.2.5 and Spark to 3.5.1

Hi @dazfuller can we merge this PR? 🚀

Hey, can you target the 0_1_13-release branch instead of main, that way I can test out the snapshot release before finalising the commit. The actual changes look good though


chore: release 1.3.0

:robot: I have created a release *beep* *boop*
1.3.0 (2019-09-16)
Bug Fixes

deps: update dependency yargs to v14 (68a0867)
include the correct version of node in a header (#286) (0c758f9)

Features

load protos from JSON, grpc-fallback support (435c5d0)
GroupServiceClient: support recursive option when deleting group (#294) (f7749af)

This PR was generated with Release Please.

Release is at https://github.com/googleapis/nodejs-monitoring/releases/tag/v1.3.0

The release build has started, the log can be viewed here. :sunflower:

:egg: You hatched a release! The release build finished successfully! :purple_heart:


Convert JS object map to TS

Changes
Converts the JS object map to TS. No functionality change.
Checklist

[x] have tested my change
[ ] updated relevant documentation
[x] Remove any/all console.logs I added
[x] eslint is not complaining
[ ] have added myself to the contributors' list in CONTRIBUTING.md
[ ] for feature PRs: PR only includes one feature enhancement.

@chrjorgensen Check this out and let me know what you think.


find and use overrides opts in lintText

fixes sindresorhus/atom-linter-xo#20
This was really annoying me.

[x] Fix
[x] Code review
[x] Unit tests

Sorry, totally forgot about this one. Hard to review without tests though.

@jamestalmage LGTY?

I did a bit of a refactor so that instead of grouping, and then working backwards from the group, it just merges in the applicable overrides directly.

@forivall Sorry again for slow response... Looks great! I'll merge right away if you could fix the merge conflict.

@sindresorhus Conflicts were trivial. Updated, and pending CI!

Yay! Thank you @forivall :) 🍰 for you.


Delay passing data from React Class  to the Webview

Bug description:
There is a delay in passing the data of 2-3 seconds
To Reproduce:
I have set up my Web View like this:
in MainActivity.Java
 @Override
  protected ReactActivityDelegate createReactActivityDelegate() {
    return new ReactActivityDelegate(this, getMainComponentName()) {
      @Override
      protected Bundle getLaunchOptions() {
        Bundle initialProperties = new Bundle();
        String authToken = "totallyAuthenticated";

        initialProperties.putString("authToken", authToken);
        return initialProperties;
      }
    };
  }

in App.js
import { WebView } from 'react-native-webview';
class App extends Component {

  render() {
    const runFirst = `
      window.authToken = '${this.props.authToken}';
    `;

    return (
      <View style={{ flex: 1 }}>
        <WebView
          source={{
            uri:
              'http://<IP_ADDRESS>:3333/',
          }}
          injectedJavaScript={runFirst}
        />
      </View>
    );
  }
};

and in the web app running on port 3333
 render() {
    return (
      <this.Components.Container >

          {/* {this.renderListTitle} */}

AUTH: {window.authToken}

          {this.renderList}

      </this.Components.Container>
    )
  }

web app running on http://<IP_ADDRESS>:3333/ does receive the value of the authToken prop attached to window.authToken, but it takes 2-3 seconds, until then it's undefined
Expected behavior:
I expect the data available immediately after starting the app and opening the web app in the web view
Screenshots/Videos:

Environment:

OS: Android Emulator
OS version: Pie
react-native version: 0.6
react-native-webview version: 6.11

Hi, this issue still persists.


Keys() for enumerating keys in the store

For generating monitoring metrics, say to export to prometheus, it would be nice to be able to enumerate the keys in the store. An interface as simple as this would be fine with me:
type Store interface {
    Keys() string[]
}

This interface with a Peek (#11) would make it possible to implement metrics, I think.

Hey Brandon - that seems fine, but I'm a bit worried about the lock contention as we'd need to lock the entire map, build a new data structure with all the string keys, and return that. Given the focus on performance, that could get expensive, especially if you're calling Keys() frequently.
Are you interested in the specific keys or the number of keys? Having a Size() or NumKeys() would be much more efficient because we can just grab the size of the map and avoid the extra allocation of the []string.

I would probably do the operation every 30 seconds or something like that.
I suppose the thing I am most interested in is keys that hit a ratelimit.
So, I could just keep a separate data structure.
I think I will close this for now and just see if rate limit hits is enough
visibility.
On Fri, Aug 14, 2020, 6:59 AM Seth Vargo<EMAIL_ADDRESS>wrote:

Hey Brandon - that seems fine, but I'm a bit worried about the lock
contention as we'd need to lock the entire map, build a new data structure
with all the string keys, and return that. Given the focus on performance,
that could get expensive, especially if you're calling Keys() frequently.
Are you interested in the specific keys or the number of keys? Having a
Size() or NumKeys() would be much more efficient because we can just grab
the size of the map and avoid the extra allocation of the []string.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/sethvargo/go-limiter/issues/13#issuecomment-674088583,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAIGCHKE3YTOJPFNJ4JSVLSAU7LBANCNFSM4P7HOYIQ
.

Okay sounds good - I'm definitely interested in making this flexible and extensible 😄


github.com/gogo/protobuf/gogoproto/gogo.proto: File not found.

$  goctl rpc protoc proto\forward.proto --go_out=. --go-grpc_out=. --zrpc_out=.
github.com/gogo/protobuf/gogoproto/gogo.proto: File not found.
proto/forward.proto:7:1: Import "github.com/gogo/protobuf/gogoproto/gogo.proto" was not found or had errors.
forward.proto:
syntax = "proto3";
package forward;
option go_package="./forward";
import "google/protobuf/descriptor.proto";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
message OrderSendRequest{
string channel = 1;
string order = 2;
string data = 3;
string requestID = 4;
}
message OrderSendResponse{
int32 code = 1;
string message = 2;
bytes  data = 3[(gogoproto.customtype) = "InterfaceType"];;
}
message ForwardRequest{
string channel = 1;
}
message ForwardResponse{
string channel = 1;
string cipher = 2;
}
service ForwardService {
// Send 发送指令
rpc Send(OrderSendRequest) returns(OrderSendResponse);
}

You should specify the directory path where the proto is located by -I, which is the same as protoc

@d-anz  had you finished it yet?


Introduce Vaibhav-Kaushik

Also vaibhav you might want to see this note:- https://github.com/gaurav1999/LearnGit/pull/2#issuecomment-502387581

@vaibhav-99 Got your changes, now we need to learn how to improve the commit history. Here you have got 3 commits but we want it to be the last one only to keep a linear history.

@vaibhav-99 , good work. Let's get it merged.


5.0.0-rc collector error Too many open files

Please answer these questions before submitting your issue.

Why do you submit this issue?
[ ] Question or discussion
[ ] Bug
[ ] Requirement
[ ] Feature or performance improvement

Question
org.apache.skywalking.apm.collector.core.util.FileUtils -895529116 [pool-3-thread-1] ERROR [] - ../buffer/offset_20180830141734.sw (Too many open files)

Bug

Which version of SkyWalking, OS and JRE?
skywalking 5.0.0-rc
Which company or project?
collector
What happen?
If possible, provide a way for reproducing the error. e.g. demo application, component version.

Requirement or improvement

Please describe about your requirements or improvement suggestions.

2018-09-09 23:02:41,120 - org.apache.skywalking.apm.collector.analysis.segment.parser.provider.buffer.OffsetManager -895514116 [pool-3-thread-1] ERROR [] - flush offset file in background failure.
java.lang.NullPointerException: null
2018-09-09 23:02:43,125 - org.apache.skywalking.apm.collector.analysis.segment.parser.provider.buffer.SegmentBufferReader -895516121 [pool-4-thread-1] ERROR [] - Segment buffer pre read failure.
java.lang.NullPointerException: null
2018-09-09 23:02:44,120 - org.apache.skywalking.apm.collector.core.util.FileUtils -895517116 [pool-3-thread-1] ERROR [] - ../buffer/offset_20180830141734.sw (Too many open files)

Most likely, caused by this https://github.com/apache/incubator-skywalking/pull/1661

根据1661的pr修改后，句柄数没有明显的改善，还是很大

English please.

Still keep this open, no one reported this again. And can't pinpoint the leak right now.

@zshi456 First of all, say sorry about this issue. Some times ago, I've been coding the feature of the SkyWalking 6.0. Now, I will check this issue, maybe few days later, It will be fixed.

Really, I've startup the OAP server and mock a lot of trace into it,  the file handlers leaked.
There are 479 files opened when OAP server startup.
There are 499 file handlers hold by the process after I send 1000 trace into OAP server.

@zshi456 I've fixed this issue in 6.0 beta, you could copy my changed code to the 5.0 version, and package it yourself.


gltfpack: Fix optimizeMaterials incorrectly optimizing on MR fallback

If a material has both a metallic-roughness model and a specular-glossiness model, optimizeMaterials only checks the metallic-roughness model, which makes it incorrectly set the alphaMode to OPAQUE. This PR fixes the bug by checking both shading models instead of the first available model.

Thanks!


How to test diagnostic .py scripts

We cannot expect the diagnostics developers to write tests for their diagnostics, especially for external packages that will be included in the ESMValTool as they are and that most likely do not include tests.
We already have an example from the autoassess diagnostics recently implemented by @valeriupredoi (see #309).
We need therefore to develop an alternative strategy for testing diagnostic scripts, also because a standard testing approach for NCL code is not available.
We could think about two possibilities:

Run a short version of the namelist(s) including the diagnostics to be tested (e.g., using the nice option proposed by @nielsdrost  in #219) and just make sure that is runs without errors.
Run a full version of the namelist(s) and compared the output with a reference output.

Ideally, the above should be automated and run automatically at the PR, as it happens now with CircleCI.

It looks like this is not just a problem with python diagnostic scripts, but with diagnostic scripts in any language.
I think the approach proposed by @mattiarighi is good, but we may not be able to use CircleCI for it, except for the most simple cases, because they provide a limited amount of compute in their free plan. They do have paid options though, where this would be possible.
https://github.com/ESMValGroup/ESMValTool/issues/80 is a related issue, on how to get input data for testing (in case we want to run the tests on a machine where the input data is not available, e.g. CircleCI).


create an aim plugin

I don't really see why this needs to use react (unless I'm missing something). Would it make sense to abstract this away to an aim plugin and have a minimal react-aim wrapper?

You're right that the logic part of this library is not react specific, only the implementation. It would indeed be possible to extract the logic and create a separate library for it. I'll leave this issue open as a reminder to do this in the future, as it would require a bit of work.


removes xunit and inmemorydatabase warnings

Background
There was some stray warnings on the solution, we just fix them
Changes done

Changes parameter position on Assert.Equal(expectedValue, actualValue)
Adds a string on the uses of UseInMemoryDatabase (void value was deprecated)

Demo

Fixes #15.


[labs/virtualizer] Could the Events generated within the RenderItem rendering have the this set to the same this as specified

Should this be an RFC?

[X] This is not a substantial change

Which package is this a feature request for?
Virtualizer (@lit-labs/virtualizer)
Description
I'm using virtuliser like this

        <lit-virtualizer
          .items=${this.settings}
          .renderItem=${setting => html`

${setting.name}

              ${setting.boolean === 0 ? html`
              <pas-input class="value" type="number" min="2" data-name="${setting.name}" required .value=${setting.value}
                @blur=${this._valueChanged}></pas-input>
              `: html`
              <pas-checkbox class="value" data-name="${setting.name}" ?value=${setting.value} @value-changed=${this._booleanChanged}></pas-checkbox>    `}

${setting.description}

        `}
        ></lit-virtualizer>

When I do actually get either of the events and (say) this._valueChanged gets called the this value is the virtualizer itself not the surrounding CustomElement class.
It would be nice if it could rebind so that it works how I had expected it to.
Alternatives and Workarounds
As a workaround, in the constructor of the surrounding element I have to do a
this._valueChanged = this._valueChanged.bind(this)

Which one is the "surrounding element" you speak of? I'm guessing the component where this snippet of template is being rendered. I suppose the default calling behavior of event listeners will provide <lit-virtualizer> as the host.
I'm not sure if it's possible for virtualizer to know the context of where it's being rendered, so either binding like you did or using an arrow function like
  @blur=${(e) => {this._valueChanged(e)}

might just be necessary.
@usergenic might know more?

We also stumbled upon this behaviour and we were expecting this to be bound to the custom element.


a python notebook for beginners

Do you have plan to write a notebook for simple use cases? It was quite complex for me to understand without simple use cases.

i feel the same


Type Mismatch: Signed to Unsigned

Summary
The function GDTCCTNetworkConnectionInfoNetworkMobileSubtype() in GDTCCTNanopbHelpers.m is declared to return an unsigned value, but on line 253 it returns a signed value.The function is declared to return an unsigned number but returns a signed value.
[REQUIRED] Step 1: Describe your environment

Xcode version: 11.3.1
Firebase SDK version: 6.6.7
Firebase Component:  Core,  Messaging
Installation method: `CocoaPods

[REQUIRED] Step 2: Describe the problem
Explanation
It is dangerous to rely on implicit casts between signed and unsigned numbers because the result can take on an unexpected value and violate weak assumptions made elsewhere in the program.

Hello, thanks for the report. Can you explain how you found and/or see this problem?
gdt_cct_NetworkConnectionInfo_MobileSubtype is an enum type, which is a signed int in C.
From https://en.wikipedia.org/wiki/Enumerated_type#C

C exposes the integer representation of enumeration values directly to the programmer. Integers and enum values can be mixed freely, and all arithmetic operations on enum values are permitted. It is even possible for an enum variable to hold an integer that does not represent any of the enumeration values. In fact, according to the language definition, the above code will define Clubs, Diamonds, Hearts, and Spades as constants of type int, which will only be converted (silently) to enum cardsuit if they are stored in a variable of that type.


Use virtual-dom to insert content

Would it make sense to use a virtual-dom[1] to bring the html which we got from the server side and put it into the DOM tree? I guess there could be some savings like less DOM operations and maybe off-the-dom-tree style calculations which we could benefit from (maybe in a WebWorker).
The best summary of what all the virtual-dom libs are trying to achieve is https://gist.github.com/Raynos/8414846
I am no virtual-dom expert, so take this with a grain of salt.
[1] https://github.com/Matt-Esch/virtual-dom or https://github.com/trueadm/inferno or ...

Thanks for suggesting! Pjax currently does a very simple insert of contents into a container element. I think using a virtual DOM in this case would be an overkill. Furthermore, this library will probably not receive future features and enhancements.


route not found, is this is flow router?

Oops, looks like there's no route on the client or the server for url: "http://localhost:3000/tables."
Im getting this immediately under my data, the data populates just fine based on flowrouter and blaze-layout... Is this a flow router error? Or possibly one of my packages in the app depends on iron router... I swear ive seen this before in iron router.

That's because on of your package depends on IR.

I wish there was a command line tool that would output all the dependencies for each package.. Or can you already do this somehow?
thanks arunoda!


Extend dropdown/select features by Select3

Select3 has a good functionality. Does it make any sence to integrate it into Semantic-UI?

No it doesn't


Let the output from 'openssl enc -ciphers' go to stdout

Also, don't exit with an error code

#2715 should work once this is merged.

Merged.
master: 341de5f1997d21b60cee69be656f1ae709bccdac
1.1.0: ce180867a4ae781cd84fdcf01ba6e2320de651ef