Making repeat_interval work irrespective of data.retention

I noticed that in the docs for repeat_interval that this interval is equivalent to min(repeat_interval, data.retention) because notification log entries that have not been updated in data.retention are garbage collected.
# How long to wait before sending a notification again if it has already
# been sent successfully for an alert. (Usually ~3h or more).
# Note that this parameter is implicitly bound by Alertmanager's
# `--data.retention` configuration flag. Notifications will be resent after either
# repeat_interval or the data retention period have passed, whichever
# occurs first. `repeat_interval` should not be less than `group_interval`.
[ repeat_interval: <duration> | default = 4h ]

However, I don't understand why the ExpiresAt field for a notification log entry is not "refreshed" each time the aggregation group is flushed. This would prevent active alerts from having their notification logs deleted, and ensure the retention period only garbage collects unused data rather than data that is still in use.
I'm happy to open a PR for this work, but before I do is there a good reason why it works this way and why it should not be changed?

I'm thinking perhaps we don't need to reset ExpiresAt on each flush after all, and instead we can change how expiresAt is calculated to match silence.go#L557 https://github.com/prometheus/alertmanager/issues/1605#issuecomment-1217707514.
diff --git a/nflog/nflog.go b/nflog/nflog.go
index c318cede..04a68b70 100644
--- a/nflog/nflog.go
+++ b/nflog/nflog.go
@@ -389,10 +389,7 @@ func (l *Log) Log(r *pb.Receiver, gkey string, firingAlerts, resolvedAlerts []ui
                }
        }

-       expiresAt := now.Add(l.retention)
-       if expiry > 0 && l.retention > expiry {
-               expiresAt = now.Add(expiry)
-       }
+       expiresAt := now.Add(expiry).Add(l.retention)

I'm thinking perhaps we don't need to reset ExpiresAt on each flush after all, and instead we can change how expiresAt is calculated to match silence.go#L557 #1605 (comment).
diff --git a/nflog/nflog.go b/nflog/nflog.go
index c318cede..04a68b70 100644
--- a/nflog/nflog.go
+++ b/nflog/nflog.go
@@ -389,10 +389,7 @@ func (l *Log) Log(r *pb.Receiver, gkey string, firingAlerts, resolvedAlerts []ui
                }
        }

-       expiresAt := now.Add(l.retention)
-       if expiry > 0 && l.retention > expiry {
-               expiresAt = now.Add(expiry)
-       }
+       expiresAt := now.Add(expiry).Add(l.retention)

Discussed this with @rwwiv and @santihernandezc and we realized there is an attack vector here where a bad actor could create routes with large repeat intervals and exhaust the resources of the Alertmanager (mostly memory). This might be mitigated somewhat by the limit on aggregation groups, but we need to do more work to understand it better.


what's the correct way of using nuitka

Nuitka version,
<IP_ADDRESS>
Python: 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)]
Executable: C:\Users\Andrew\Anaconda3\python.exe
OS: Windows
Arch: x86_64

How did you install Nuitka and Python
conda install nuitka

my gui program(my_program.py) imports PyQt5, openpyxl and xlrd. I wish i could compile/package it as a standalone executable so it runs on another computer without python installed.
case 1)
nuitka --standalone --mingw64 --show-memory --show-progress --plugin-enable=qt-plugins --recurse-all --output-dir=out my_program.py
this command does NOT finish in serveral hours.
case 2)
nuitka --nofollow-imports --standalone --mingw64 --show-memory --show-progress --plugin-enable=qt-plugins --recurse-all --output-dir=out my_program.py
this command finishes in less than 1 min, and generate my_program.exe.
however, on executed, there is a ModuleNotFoundError(No module named 'openpyxl')
case 3)
nuitka --standalone --mingw64 --show-memory --show-progress --plugin-enable=qt-plugins --recurse-all --output-dir=out --include-package=openpyxl my_program.py
command finishes in minutes.
runtime error: there is a ModuleNotFoundError (a module imported by openpyxl)

There are scalability problems with Nuitka, that explains case 1. I believe these will improve with future releases, as I am finishing the long awaited scalability work for constants. Case 3 looks very similar though.
The correct way clearly involves reading upon options used. When I see --nofollow-imports being used, in case 2, I am not surprised about modules not being there.
For case 3 I would appreciate a minimal reproducer. Also the --include-package ought to not normally be necessary. These might be hidden dependencies that we need to add to Nuitka, but it's not happening without a reproducer.

I'll add to this post, as a "simple" application using any GL libraries gets pretty insane.
I used this game/library as an example and ran nuitka3 --standalone Game.py, and it sort of almost compiles. But ends with this:

And this is the resources you need to even get this far, let alone wait for 4 hours or so.

I want to be extremely clear, I am not complaining.
This is probably a bit of a one-off thing to use nuitka for, and I find nuitka to be Amazing for so many things I do like distributing my installer scripts and what not.
But If this feedback helps, I want to give it as I'd love to be able to distribute games etc later on with it.

Good Linux distributions do not need chrpath installed, because rpath should not be used, but Nuitka then needs to clean  it and if it's needed becomes only clear later.
Then 100GB seem extreme.
On factory, there is now code that tells us the times for slow compilations when they end, and informs about them when they become long running.
I guess, I would be interested to know what module causes this. Generated Python code probably.
Yours,
Kay

Good Linux distributions do not need chrpath installed, because rpath should not be used, but Nuitka then needs to clean it and if it's needed becomes only clear later.
Then 100GB seem extreme.
On factory, there is now code that tells us the times for slow compilations when they end, and informs about them when they become long running.
I guess, I would be interested to know what module causes this. Generated Python code probably.
Yours,
Kay

I'll have to read up some more to know what chrpath and rpath is. The 100GB is a bit extreme, heh.
It appeared as if there were looping Python optimizations being done, meaning I saw (I think) the same module/code being found recursively and optimized over and over. It seams that the main issue might be PIL, but I can't confirm yet.
The huge RAM usage comes from scons, when that stage runs it eats RAM like crazy.
Thanks for a fast response,
//Anton

That is the C compilation, and one of the generated C files will be to blame, giving the gcc a hard time.

Any way I can help to diagnose or identify it?

Running with factory will output the slow commands, but factory is getting the constants work that should better it, but will be very likely broken for some time.

@Torxed, you can see the generated files in the program.build directory. Usually if you sort those files by size, the problematic files will stand out like sore thumbs, the giveaway being their sheer size (had a similar problem, but then again, my program is not as big, and my machine has 64 GiB of RAM so it was bad but not that bad. A pyasn1 submodule compiled to whopping 12 megabytes of C).
Looking at the compilation with some process monitor like top or htop, or what have you, will point you straight at the difficult file.
The thing about Nuitka is that it generates plain C, there are no crazy or overly clever things in it, like recursive C++ template compilation or worse, so it's usually the code size that is killing the compiler.
(I've noticed that it also compiles with -O3 by default; maybe that is contributing, too.)

The scalability should be a bit better on develop now, but I think this issue has no clear topic.


Should have better information on using multi-port to support both http and https connections

Can I have a bit more detail about what this issue is about? If I knew then I might be able to work on it :-)

@kprobst Is the content that you are requesting already here (or is this where you want more info added): https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/services.md#multi-port-services

If that is the information, it sounds like maybe it's not surfaced in the pertinent locations?

We should add an example to the new service section of the user guide, if there isn't one already.

This is done. #11246


Added how to enable debug output and fixed expected output

Hey guys, after trying to run your program and seeing it wasn't showing any real output except "Cleaning " I decided to investigate a little on what was wrong, to show the debug and trace outputs an environmental variable needs to be setup, I added how to do that to the readme, aswell as fixing the expected output

I haven't been accepting most readme changes but this one is something I was meaning to do. Appreciate it!


npm aware includePaths

Is there a simple way to set includePaths to be the npm paths from module.paths from the command line?
At the moment I want to import files from a dependency, so have to write a script to call node-sass with the includePaths option set to module.paths, but ideally I would want to do this in a one line CLI call.
Possibly I could add a boolean flag of --include-node-modules or similar to automatically do this if it's not already possible?

@lennym is there a use case that -I node_modules doesn't cut it for?

In our case we have a shared module which depends on https://github.com/alphagov/govuk_frontend_toolkit and imports some sass file from there.
We were doing -I node_modules for a while, but then it broke unexpectedly because an upstream project had added this as a dependency so govuk_frontend_toolkit was no longer being installed into ./node_modules.
If this is an extreme corner case then fine, but it feels like for a node-specific implementation of sass, it might be good to have some option to have includePaths work in a similar way to require.

it broke unexpectedly because an upstream project had added this as a dependency

I'm not entirely sure what happened if. Since installing global modules is an anti-pattern I don't understand how modules.paths is solving a problem -I node_modules doesn't.

it might be good to have some option to have includePaths work in a similar way to require.

I'm not sure there is benefit in this. I'm happy to be proven wrong. My main concern is that this is a big break away from the sass cli. Doing so would need to prove to be a large benefit to the community.
This issue will also be negated by the changes coming in npm@3 which will have much better support for web modules like bower.

It's not a question of global module installs, just that npm doesn't install a module in ./node_modules if a compatible version exists higher in the dependency tree.
If I have an tree that looks like:
├─┬ module-a
│  └─ module-b
└─ module-b

then module-b will not be installed in module-a/node_modules, so any attempt to use -I node_modules will fail because module-b is actually installed at module-a/../../node_modules
If I want compilation within module-a to work reliably then I need to not be sensitive to the install location of my dependencies, because there is no guarantee at all that they will exist in the local node_modules directory.

Eyeglass is now the recommended solution for this.

Thanks, I ended up writing npm-sass and others (@mikemaccana) have also written their own similar modules, but I'll take a look at eyeglass too.
FYI @xzyfer - the link in your comment above is broken

Link fixed. Thanks.


Update to Material3

Material's Swipeable has been replaced by Foundation's AnchoredDraggable APIs in Material3. Are there any plans on changing to material3?

Fixed with version 2.0.0-beta01


Validate prototype by adding an extra table

Until now we have only had the UTxO table on the UTxO-HD prototype. In the foreseeable future, we will add more tables to the implementation, possibly delegations.
We should add some other table to the prototype to make sure that we will be able to do so in the future without major modifications to the prototype. The table might be trivial, but it should give us enough confidence that we will be able to support other types of tables that can capture the other large maps that exist in the ledger state.
Possible approach
A possible way to approach this is to use SOP in the LedgerStateKind:
type MapKind = Type -> Type -> Type -> Type
type LedgerStateKind = NP MapKind '[UTxO :: Type, OtherMap] -> Type

data LedgerTables (LedgerState ByronBlock) mk = NoByronLedgerTables

newtype LedgerTables (LedgerState (ShelleyBlock proto era)) mk = ShelleyLedgerTables {
  npTables :: ZipUncurry mk [ (SL.TxIn (EraCrypto era), Core.TxOut era)    -- k and v for UTxO
                            , (OtherKey era,            OtherValue era) ]  -- k and v for OtherMap
  }

In this way, functions that deal with tables would become NPs of functions. For example:
mapLedgerTables :: NP (mk1 -.2-> mk2) KVs -> LedgerTables l mk1 -> LedgerTables l mk2

(-.2-> is meant to be like -.-> but applies to 2 types, key and value)

The general plan ahead seems to be the following:
Phase 1 - Extracting the common behavior of TableStuff

Extracting mapLedgerTables etc from TableStuff because they are the same for ~every instance (and in particular they are isomorphic to unitary NPs, and byron is isomorphic to just NP .. '[])

Redefine all instances to depend on this new abstraction, perhaps this is even easier and Ledger.Basics can define a general instance. We would just need to require it when defining each ledger state.

Phase 2 - Lifting the tables into SOP

Make the tables an NP

type Zip :: [a] -> [b] -> [(a, b)]
type family Zip as bs where
  Zip (a : as) (b : bs) = '(a, b) : Zip as bs
  Zip _ _ = '[]

type ApplyPair :: (a -> b -> Type, (a, b)) -> Type
newtype ApplyPair fp = ApplyPair { getApplyPair :: Fst fp (Fst (Snd fp)) (Snd (Snd fp)) }

type ZippedNP :: [a -> b -> Type] -> [(a, b)] -> Type
newtype ZippedNP fs ps = ZippedNP (NP ApplyPair (Zip fs ps))

infixr 5 ::*

pattern (::*) :: f a b -> ZippedNP fs abs -> ZippedNP (f : fs) ('(a, b) : abs)
pattern fab ::* fabs <- ZippedNP (ApplyPair fab :* (ZippedNP -> fabs))
  where
    fab ::* (ZippedNP fabs) = ZippedNP (ApplyPair fab :* fabs)

pattern ZipNil :: ZippedNP '[] '[]
pattern ZipNil = ZippedNP Nil

{-# COMPLETE (::*), ZipNil #-}

Each instance from Phase 1 can be then lifted into the instance for a unitary table, something along the lines of

-- defined for each ledger?
instance TableStuff ... '[x] where
  mapLedgerTables = ...
  ...

The TableStuff class will have a type level list as its last argument with the list of tables

class TableStuff ... xs where
  ...

-- defined in `Basics`?
instance All (TableStuff ...) xs => TableStuff ... xs where
  ...

where the general instance can be defined using some kind of injection using Index  (or some other Peano like type level natural), an NP would be "easily" mapped on one component using something like this:
type family Replace (i :: Index xs y) y2 xs where
  Replace 'IZ x (y ': ys) = (x ': ys)
  Replace ('IS n) x (y ': ys) = y ': (Replace n x ys)

-- Maybe not singletons? Maybe proxys? Maybe Nat?, this is just a skeleton
foo :: forall r xs y (i :: Index xs y). SingI i => Sing i -> (f y -> f r) -> NP f xs -> NP f (Replace i r xs)
foo theSing f (x :* xs) = case theSing of
   SIZ -> mapLedgerTables f (UnitaryTables x) :* xs
   SIS n -> x :* foo n f xs

Phase 1 implemented in #4234

Despite this plan allowing for extremely expressive semantics, it was noted by @nfrisby that (1) the cost of maintaining this might be too much and (2) we don't really need "arbitrary lists of tables", we will only have to define a handful of tables at most.
So I'm leaving this in favor of the much simpler design:

[x] Phase 1 - move TableStuff to Ouroboros.Consensus.Ledger.Tables (didn't need to be this PR but incidentally that is what it ended up like) #4234
[ ] Add a second MapKind variable to the LedgerStateKind which controls the second ledger table. Functions now will have to be duplicated/a tag has to be given.

On hold waiting for a meeting with the Ledger team which is bound to happen later this week or at most next week

The meeting with the ledger took place, now the remaining step is to flesh out the outcomes on an MD document. In general it seems the UTxO-HD tables framework will also work for the remaining tables.

The sketch was merged, so closing!


Change "url" to "href" in link schema

Jira

http://vjira2:8080/browse/BDS-786

Summary
Find instances of link includes and change "url" to "href".
Details
Update instances of link includes (components and patterns) to reflect the new schema. Note: for now we're only making this update to links. Other components will be updated later.
How to test

Review the files changed and confirm only link components have been updated from "url" to "href"
Go to https://boltdesignsystem-iynnpluhjz.now.sh/pattern-lab/index.html and confirm that the link patterns still work, i.e. their href's are populated.
Review a few other components (for example: action blocks, nav, breadcrumb) and confirm the same.

@sghoweri @mikemai2awesome after some discussion, deciding to leave this one as is. We'll aim for one-to-one mapping of standard HTML attributes but in this case, where "url" is already widely in use, let's allow both, and not recommend switching to "href".


AAD-SF has disclaimer for City and County (_guidelines.html.haml).

To whom does our disclaimer apply?

Next step: setup disclaimer document in google drive to share with LGROW legal writer.

https://docs.google.com/document/d/1BHQe3nJ7LnlZWPV4YbgemG26WRAuRjOmp3_b0ug_qqI/edit?usp=sharing

Refer to duplicate Issue #171


Kubernetes' nodes need to handle 45GB containers

Will test current situation and whther upgrades are needed

No longer required. See https://github.com/EBI-Metagenomics/InterProScan


feature-admin-approval_func

This function returns different parameters that can aid the administrator in determining the proper data of location, state, and time and other tweet ids that are associated with an incident id.
Parameter 0 - returns the count of root-tweet-city/state/date with an incident id
Parameter 1 - brings all tweet ids that are associated with an incident_id
Parameter 2 - brings the total number of incidents with the same incident ids to the admin
Pull Request Template
Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Test A
[ ] Test B

Test Configuration:

Firmware version:
Hardware:
Toolchain:
SDK:

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules
[x] I have checked my code and corrected any misspellings

closing duplicated


Add an html output as grcov output

We should produce and html output for weighted-code-coverage which can be uploaded on gh-pages in order to be visible.

[x] The templates modules
[x] The file that generates the html output using tera library

Part of #15


Add Cancellable Interaction for Presentation Animation

Hey @christianselig!
As promised, I had a bit of a play with making the opening presentation animation and I got it working! :D
Here's the things I changed:

I modified ChidoriAnimationController to also conform to the interactive controller protocol, and modified ChidoriMenu to retain and provide the same instance to both animation and interactive delegates.
I included a public cancel method that retains the context of the animation to allow cancellations, and also stops, and then restarts the "opening" animation in reverse.
When a presentation starts, it is treated as interactive from the start, meaning touches automatically work by default.
When the user taps the dimming view, this now forwards the tap through a delegate pattern to ChidoriMenu
Chidori menu then calls the cancellation method, but if the animation has already completed, it also calls dismiss to dismiss it as normal.

I've also included a small Xcode project in order to make it super quick to test this out. I'd also recommend adding CocoaPods and Swift Package Manager support (or if you'd like, I can do that).
Please try it out, and let me know what you think. There might be some better ways to streamline this logic and code organization, but this should hopefully be a good start.
All the best!

This looks awesome! Thank you so much! Very clean and I learned a bunch reading through this, it's not as scary as it seems apparently. 😛
One catch probably worth adding, is that when it interrupts in this way my way of making the tintAdjustmentMode controlled via the UIPresentationController subclass doesn't really work so much anymore as an actual dismissal never occurs.
In ChidoriAnimationController could you add something like this? Seems to take care of the tintAdjustment nicely. 😀
func cancelTransition() {
  guard let context = context,
        let animator = animatorForCurrentSession else { return }

   // Cancel the current transition
  context.cancelInteractiveTransition()

   // Play the animation in reverse
  animator.pauseAnimation()
  animator.isReversed = true
  animator.startAnimation()

  if type == .presentation {
      if let presentingViewController = context.viewController(forKey: .from) {
          presentingViewController.view.tintAdjustmentMode = .automatic
      } else {
          preconditionFailure("Presenting view controller should be accessible")
      }
  }
}

func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
  let interruptableAnimator = interruptibleAnimator(using: transitionContext)

  if type == .presentation {
      if let chidoriMenu: ChidoriMenu = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to) as? ChidoriMenu {
          transitionContext.containerView.addSubview(chidoriMenu.view)
      }

      if let presentingViewController = transitionContext.viewController(forKey: .from) {
          presentingViewController.view.tintAdjustmentMode = .dimmed
      } else {
          preconditionFailure("Presenting view controller should be accessible")
      }
  } else {
      if let presentingViewController = transitionContext.viewController(forKey: .to) {
          presentingViewController.view.tintAdjustmentMode = .automatic
      }
  }

  interruptableAnimator.startAnimation()
}

Oh! And two questions if you don't mind:
In this block:
 // Play the animation in reverse
animator.pauseAnimation()
animator.isReversed = true
animator.startAnimation()

Is the pause + start required?
And with this solution, what even is interruptibleAnimator() doing? (It wasn't doing much in mine either!) This API confuses me, it seems like we're doing everything manually, I'm so confused what the interruptibleAnimator method brings to the table, haha.

My pleasure! Awesome! I'm glad to hear it helped you learn more about how this crazy API works! Certainly if you make the same object conform to both the animation and interaction protocols, it's actually not as complicated as you might imagine since a lot of the logic overlaps. I actually originally learned the gist of how this all works from this repo if that helps.

In ChidoriAnimationController could you add something like this? Seems to take care of the tintAdjustment nicely.

Done! Hmmm, that being said. I wonder if having to add this of logic in implies there might be a better way to do this that does actually capture the reverse animation as a proper dismissal. Let me know if you're okay with this. :)

Is the pause + start required?

Huh! I actually didn't know! I assumed it would require really explicit commands. I just tested it, and I was able to remove pauseAnimation(), but if I remove startAnimation() then the animation doesn't reverse at all anymore.

And with this solution, what even is interruptibleAnimator() doing? (It wasn't doing much in mine either!)

Hahah I know right! I'm not even sure either! I set a breakpoint to double check that that delegate method even gets called, and it certainly does. My best (completely uneducated) guess is that any auxiliary animations (Like the background overlay view fading in) are wrapped into the same animation with it. But apart from that, I couldn't see any specific behavior from the system by specifically providing the animator object to it (This might be a good question for the WWDC labs. If those ever come back!).
Anyway, I've added the changes you've requested. Please try it again and let me know if you need anything else changed!
Take it easy!

Oh my gosh I'm sorry I'm so bad at GitHub I didn't see your reply until now. ;_;

My pleasure! Awesome! I'm glad to hear it helped you learn more about how this crazy API works! Certainly if you make the same object conform to both the animation and interaction protocols, it's actually not as complicated as you might imagine since a lot of the logic overlaps. I actually originally learned the gist of how this all works from this repo if that helps.

Whoaaaaa, I love a good view controller transition article plus repo, thank you, that's look like a great resource!

Done! Hmmm, that being said. I wonder if having to add this of logic in implies there might be a better way to do this that does actually capture the reverse animation as a proper dismissal. Let me know if you're okay with this. :)

Probably, coupled with your point about interruptibleAnimator I'd really love to poke a UIKit engineer's brain about this stuff, a lab would be awesome, fingers crossed.
Thank you so much again for doing this, I very much appreciate it! Merged!

Haha no worries! I do the same with my repos too all the time. 😅 Awesome! Glad to hear that was all good with you!
It was my pleasure! If you find any other issues related to it, feel free to hit my up anytime! All the best! :D


"scxa-analytics-v6" Solr collection test result and errors

Issues I have noticed so far:

Clicked on Browse experiments: Got a list of experiments
Clicked on 'Transcriptomic and clonal characterization of T cells in the human central nervous system'. Got results tab with 2 buttons "Cell plots" and "Marker-Genes".
Under the cluster plots section, point the mouse cursor on dots to see the metadata of that dot. It calls  this endpoint
"https://wwwdev.ebi.ac.uk/gxa/sc/json/experiment/E-HCAD-30/cell/SAMN15959135-GACGTTATCATC/metadata"
This endpoint contact Solr to fetch metadata of that cell-id. This endpoint giving a 400 error for the majority of the dots.
When I hit metadata endpoint on the browse: I could see this error:

{"error":"class java.lang.String cannot be cast to class java.util.ArrayList (java.lang.String and java.util.ArrayList are in module java.base of loader \u0027bootstrap\u0027)"}
Solr result is unable to parse by the java code.
Endpoint:
https://wwwdev.ebi.ac.uk/gxa/sc/json/experiment/E-HCAD-30/cell/SAMN15959138-TGTCCCACAAGA/metadata
Status: 200
[{"displayName":"Protocol","value":"total nuclei"},{"displayName":"Sampling site","value":"middle temporal gyrus"},{"displayName":"Sex","value":"male"},{"displayName":"Individual","value":"brain_donor_2"},{"displayName":"Age","value":"41 year"}]
Clicked on 'Marker-Gene':`

Click on gene symbol: Error: Got this:  /gxa/sc/json/search?q=MT2A&species=homo+sapiens => 500

A few Experiments got this error: https://wwwdev.ebi.ac.uk/gxa/sc/experiments/E-MTAB-8530/results
Error: 400
We are sorry - an unexpected error occurred. If it persists, please get in touch with us through the EBI Support & feedback form.

This is now fixed.


change to loginurl

Please change the login url to login_url = "https://kite.trade/connect/login?api_key={api_key}&v=3".format(api_key=kite_api_key)

It's just a matter of style and if there are more params added to login_url then we will consider using format.


create a library and import react-loading-skeleton, and then used this lib into another lib throws erorr

Describe the bug
while upgrading react-loading-skeleton, throws an error when used from a lib.
i have success upgraded and migrated dependencies to latest and exported my component in my-lib package it works while running directly into react-app. however when i am using my-lib inside another library it breaks  with error
TypeError: Dt.span is not a function

however, skeleton-loading-react works perfect while directly importing or used from my-lib ,
this is the package.json for my-lib i created
  "name": "@umai/common",
  "version": "0.0.48-test.11",
  "files": [
    "dist"
  ],
  "main": "./dist/umai-common.umd.js",
  "module": "./dist/umai-common.mjs",
  "exports": {
    ".": {
      "import": "./dist/umai-common.umd.js",
      "require": "./dist/umai-common.mjs"
    },
    "./dist/style.css": "./dist/style.css"
  },
...

and this is the vite-config for the my-lib
      lib: {
        entry: path.resolve(__dirname, 'src/index.js'),
        name: 'Common',
        fileName: 'umai-common',
      },

To Reproduce
create a library and import react-loading-skeleton, and then used this lib into another lib, this setup was working before on v2 for me.. however v3 breaks.
Would love to hear your thoughts.. not sure if its a bug on which side...
Actual Behavior
Throws error below when the second lib used in a react-app
TypeError: Dt.span is not a function

Expected Behavior
It should work as expected from the second lib too...
Versions

react-loading-skeleton version: 3.3.1
Browser version: chrome 114.0.5735.106
react: 16.14.0
vite: 4.3.9

Please submit a runnable code example that reproduces the issue. It is not possible to investigate this issue with the information provided. Thank you


Does this action work with nektos/act?

I'm trying to use https://github.com/nektos/act to run a workflow that has maturin-action in it...but the action fails:
[Python: Build and Test/linux      ] ⭐ Run Main Build wheels
[Python: Build and Test/linux      ]   🐳  docker cp src=/Users/swandog/.cache/act/PyO3-maturin-action@v1/ dst=/var/run/act/actions/PyO3-maturin-action@v1/
[Python: Build and Test/linux      ]   🐳  docker exec cmd=[node<EMAIL_ADDRESS>user= workdir=
| Found maturin version requirement maturin>=0.13,<0.14 specified in pyproject.toml
[Python: Build and Test/linux      ]   💬  ::debug::maturin version spec: >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.2.3 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.2.2 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.2.1 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.2.0 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.1.0 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.1 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.0 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.15.3 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.15.2 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.15.1 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.15.0 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.0-beta.9 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.0-beta.8 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.17 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.0-beta.7 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.16 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.0-beta.5 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.15 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.0-beta.4 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.14 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.0-beta.2 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 1.0.0-beta.1 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.13 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.12 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.11 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.10 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.9 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.8 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.8-beta.2 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.8-beta.1 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.7 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.7-beta.1 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.6 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.5 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.4 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.3 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.2 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.1 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.0 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.0-beta.7 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.0-beta.6 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.0-beta.5 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.0-beta.4 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.14.0-beta.3 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::check 0.13.7 satisfies >=0.13 <0.14
[Python: Build and Test/linux      ]   💬  ::debug::x64===x64 && darwin===linux
[Python: Build and Test/linux      ]   💬  ::debug::x64===x64 && linux===linux
[Python: Build and Test/linux      ]   💬  ::debug::matched 0.13.7
| Found maturin release from manifest: v0.13.7
| Using existing quay.io/pypa/manylinux2014_x86_64:latest Docker image
| Error: Unable to locate executable file: cargo. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.
|     at Object.<anonymous> (/run/act/actions/PyO3-maturin-action@v1/dist/index.js:4088:27)
|     at Generator.next (<anonymous>)
|     at fulfilled (/run/act/actions/PyO3-maturin-action@v1/dist/index.js:3899:58)
[Python: Build and Test/linux      ]   ❗  ::error::Unable to locate executable file: cargo. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.
[Python: Build and Test/linux      ]   ❌  Failure - Main Build wheels
[Python: Build and Test/linux      ]   ⚙  ::set-env:: CARGO_INCREMENTAL=0
[Python: Build and Test/linux      ]   ⚙  ::set-env:: CARGO_TERM_COLOR=always
[Python: Build and Test/linux      ] exitcode '1': failure
[Python: Build and Test/linux      ] 🏁  Job failed

This workflow works on GitHub. Do I need to do some setup to prepare the local machine for maturin-action?

No idea. This action assumes running in GitHub runners, so if act environment isn't the same it may fail. In your case you are missing cargo/rust in act environment.

FWIW I just ran into the same (different executable python3, but same error and looks like same cause).
I'm not super familiar with what layers of image/platform setup gh-act performs and how those would be different from the genuine GH Actions equivalents, to account for any discrepancies in the env and $PATH. Anyone have a pointer to details?


[ Question ] Complete Review History

Hey @facundoolano ,
Thanks a lot for providing this API. Is it possible to extract the complete review history for an app instead of just 10 pages.

Nope, only what Apple provides in their feeds (at least that's the only source I know about).


Mention option  as part of command

Would of been nice to have a mention under "Manage VM State" page  one can put  "--yes" at the end of those commands to bypass the confirmation of  going ahead with the command i.e.   deleting a VM.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 9fc7444e-0ad5-785e-3eb4-b41ce862f719
Version Independent ID: 505db15e-d949-9ac7-f328-07af91597d2c
Content: Common Azure CLI commands
Content Source: articles/virtual-machines/linux/cli-manage.md
Service: virtual-machines-linux
GitHub Login: @RicksterCDN
Microsoft Alias: rclaus

@alenzorbbn25 Since this command is for deleting a VM, we do want to provide the option of confirmation before deleting it. For that reason we haven't added --yes option
This information is provided in the following doc: https://docs.microsoft.com/en-us/cli/azure/vm?view=azure-cli-latest#az-vm-delete
We will now close this issue. If there are further questions regarding this matter, please tag me in a comment. I will reopen it and we will gladly continue the discussion.


feedback: please allow editing assistant responses

Version
1.34.0
Areas for Improvement

[X] UI/UX
[ ] Onboarding
[ ] Docs
[X] Chat
[ ] Commands
[ ] Context
[ ] Response Quality
[ ] Other

What needs to be improved? Please describe how this affects the user experience and include a screenshot.
When the model replies I sometimes want to nudge following responses into a certain direction / I want to correct mistakes the model made but continue the chat is if those were the model replies. Currently I can only edit my own messages - which will also clear the chat underneath.
Describe the solution you'd like to see
I want to be able to fully control the conversation and edit both user and model messages at any point, then be able to start a new completion at any point. I don't think I can suggest the full UX flow for this but from interacting with LLMs via API it's clear that biasing the model by faking or editing the model responses in a chat session can be extremely powerful (and allow to use fewer tokens than asking it to fix previous messages). This allows better control over the full chat context window.
Describe any alternatives that could be considered
It's also possible to ask the model to change its response to fix things. However this means there are now duplicates in the conversation. The performance also drops as the context gets longer. As a first step being able to delete any message inside the conversation could allow iterating better without blowing up the context window.
Additional context
No response

Here's an example to illustrate (not code but you get the idea): https://x.com/i/status/1835847638391951486


Release into ROS Melodic

This is currently waiting on rosbridge_suite to be released (see https://github.com/RobotWebTools/rosbridge_suite/issues/333 ) but after that should be ready to go.

It looks like this was released into Melodic back on July 19th, which is great :+1: .  However, it looks like the version that was released doesn't compile because of the pluginlib backwards compatibility problem, i.e. http://build.ros.org/view/Mbin_ds_dS64/job/Mbin_ds_dS64__mapviz_plugins__debian_stretch_amd64__binary/14/consoleFull .  In the meantime, that particular problem was fixed in 3edb1cf5e71a4b841d0f5e278004b62130b84a72 .  I confirmed that it compiles locally now.  Could we have another release into Melodic to try and fix that?  Thanks!

Oops, I actually thought I had made another release after that.  I'll do that shortly.

Should be all done now.

Excellent, thank you!


Update classifier-get-started-with.md

I've noticed that a few customers are using the seed data as part of the test data. It's best to have a separate set of positives rather than re-use the seed data, so I wanted to clarify this in our support docs.

@chrfox Please merge this PR. Thanks.


Thinking about dropping the field resolving events from the trace

Currently we're tracing the field resolving event, although it's good to have more granularity in the trace, but i can see few disadvantage of this approach:

Making the trace hard to read if there are too many events. In some trace that we actually have in production, the amount of field resolving traces are thousands , and it's almost impossible to read it properly. It does not provide much value to us in that case.
If error happens for some request, usually it does not happen at the field resolving phase, but somewhere else, like calling external system ( for example DB). So it make senses to have less events in the trace, and focus on what important.

So what i'm proposing is we remove the [:absinthe, :resolve, :field, :start] and [:absinthe, :resolve, :field, :stop] from the library. Then we can have less events per trace and also still able to gain visibility of the GraphQL request.

I am thinking that this would be best done with a custom sampler. I will look into it.


fix: use custom tokio runtime to customize stack size of tokio worker threads

Related issue (if exists)
Fix #183 again.

Summary

🤖 Generated by Copilot at ac3c9ed
This pull request adds a global tokio runtime for the node binding crate, which allows spawning async tasks that use the server pack library more efficiently and reliably. It also modifies the spawn function in utils.rs to use the global runtime instead of the default one.

Walkthrough

🤖 Generated by Copilot at ac3c9ed

Create and use a global tokio runtime for the node binding crate (link, link, link, link)

Import the tokio_runtime module in lib.rs (link)
Define the init_tokio_runtime and tokio_rt functions in tokio_runtime.rs (link)
Add a dependency on the tokio_runtime module in utils.rs (link)
Replace the napi::bindgen_prelude::spawn function with the tokio_rt().spawn function in the spawn function in utils.rs (link)

!bench

basically we have two strategy

use default stack size and when people met stack overflow problem and let user to adjust stack size just like what node does
use more large stack size which will sacarfice most of user's memory and may cause less user met stack overflow problem

Stack overflowing due to swc parser stackoverflow is a rare case which I don't think we should change our default value just for it.

I don't have any opinions on this. Feel free to merge or close this issue.

Closing because this is a big change for a super tiny edge case.


Modsecurity 2.9.2 causes duplicate headers with Nginx

With modsecurity active we receive duplicate headers
Content-Length and Connection "Keep-alive" are both listed twice.
when disabling modsecurity the problem doesn't exist.

Hi @mangelot,
Please use the ModSecurity version 3 with the nginx connector:
https://github.com/SpiderLabs/ModSecurity-nginx


PyIlmbase 2.3 usage

Hi,
I built "pyilmbase" 2.3.0 with "boost" 1.68.0, "ilmbase" 2.3.0, "python" 3.6.6 and "gcc" 7.3.0.
I used the following command:
./configure --enable-cxxstd=11 --with-boost-include-dir="${PREFIX}/include" --with-boost-lib-dir="${PREFIX}/lib" --with-ilmbase-prefix="${PREFIX}"
and everything built successfully.
In my "/lib/python*/site-packages/" directory I can see "iexmodule.so", "imathmodule.so" and "imathnumpymodule.so", and in "lib" I have "libPyIex.so" and "libPyImath.so".
I set the LD_LIBRARY_PATH and LDFLAGS accordingly; however, when I try to import any module I get errors, e.g.:
>>> import iex
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'iex'
>>> import iexmodule
_Traceback (most recent call last):
File "", line 1, in
ImportError: /envs/lib/python3.6/site-packages/iexmodule.so: undefined symbol: ZN7Iex_2_37BaseExcC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
I read that the latter error occurs when "boost" is not properly linked.
However, the "boost" libraries were properly set and used during the installation.
Can you please tell me if this is the proper way of using "pyilmbase", and if so, how can I fix the issue I am getting?
Thank you,
Natasha

You probably compiled boost with -D_GLIBCXX_USE_CXX11_ABI=0.
You should either compile boost without it,or openexr with it.

Looking into the OpenEXR backlog, is this still an issue?

Closing the issue for now, feel free to re-open or file a new issue if you need further help.


Move testbeds into a separate test folder

To my understanding, dagster/testbeds contains some test files for the output of the scheduler. However, it is confusing in my opinion to have integration tests inside a folder in the repo and not at the root. I think these tests should run in CI as well so the user doesn't need to manually run themn

Not relevant anymore. Testbeds should be refactored into separate unit tests


Create mechanism for generic expiring tokens

Many times, with use-cases such as e-mail verification, password reset, or other similar features, there is a need to make a generic expiring token that is then issued to the user for a particular purpose.
We need to provide some mechanism to enable this, rather than reimplementing this logic for every possible feature.

It's worth considering using a JWT for this. There may be good reasons not to do that. If not, what type of value? Hash? Also, we may or may not want to persist these tokens. If persisted, they should have a TTL to keep from exploding the size of the database.

Related: #169

Really like the way this is turning out. Thanks for pairing today. Awesome work!


SAK-29408 Profile2: Now able to hide sub-menu & social items in profile

Messaging, Privacy, Preferences, Online Status, and my Kudos are now individually able to be hidden.
Messaging depends on Connections, so if connections are disabled, so is messaging.
A global property, profile2.menu.enabled (default true), was created which overrides all the sub-menu items:

profile2.gallery.enabled
profile2.connection.enabled
profile2.messaging.enabled
profile2.search.enabled
profile2.privacy.enabled
profile2.preference.enabled

That is when profile2.menu.enabled is false, all the other values are ignored.
Sorry about all the whitespace changes. :disappointed_relieved:
NOTE: I fIxed the merge issues which caused build to fail from PR https://github.com/sakaiproject/sakai/pull/549

I will fix the whitespace changes and edit my commit.

Whitespace changes have been fixed.

Nice one. Thanks!


*: enable frame pointer & enable cpu profiling on aarch64

Issue Number: close #10658
What's changed

Set environment variables in Makefile to enable frame pointer for TiKV.
Re-enable CPU Profiling on ARM architecture.

The stack backtrack implementation of pprof-rs which TiKV currently depends on is based on libunwind, which may trigger segmentation faults in some scenarios (especially on ARM architecture).
Here are some related issues:

https://github.com/tikv/tikv/issues/10658
https://github.com/tikv/tikv/issues/9957
https://github.com/tikv/tikv/issues/11964

This PR introduces a new version of pprof-rs, which provides stack backtracking based on frame pointers, and it also implements memory access protection to avoid unexpected segmentation faults.

More tech info is in https://github.com/tikv/tikv/pull/12326 maintained by @YangKeao.

Performance overhead
Enabling the frame pointer will use the RBP/x29 register to hold the frame address, one less general purpose register means there may be a performance regression.
Here is a simple measurement. In general, the frame-pointer-based stack backtrace has no performance regression compared to the original DWARF-based stack backtrace.
Check List
Tests

Unit test
Integration test
Manual test

Deployed TiKV on all platforms of Linux+x86_64, Linux+aarch64, macOS+x86_64, macOS+aarch64 and verified the results of CPU Profiling.

Release note
None

/run-build-arm64

/run-build-arm64

/run-test

/cc @sticnarf @BusyJay @YangKeao PTAL, thanks!

Can we make it optional to use frame pointers? I don't hope to bother to build std on platforms that unwinding with dwarf works mostly fine.

Can we make it optional to use frame pointers? I don't hope to bother to build std on platforms that unwinding with dwarf works mostly fine.

Sure, but segfaults are currently found on both x86 and ARM, and I haven't figured out when the frame-pointer needs to be disabled.. (unless user never use CPU Profiling)

Sure, but segfaults are currently found on both x86 and ARM, and I haven't figured out when the frame-pointer needs to be disabled.. (unless user never use CPU Profiling)

I remember there isn't any segfault on x86_64 Linux if we blocklists glibc and vdso (on some distributions).

I remember there isn't any segfault on x86_64 Linux if we blocklists glibc (and vdso on some distributions).

A few days ago we discovered a new segfault stack in our internal cluster (Linux on x86), which was crashing a machine about every 10 hours:

It looks like SIGPROF hits destructor code inserted by the Rust compiler, and then the segfault occurs when trying to backtrace at this place. I replaced the internal cluster's TiKV with a hotfix version with frame pointers and the problem was solved.
So at least for now, the frame pointer needs to be enabled for all supported platforms. (But we can reserve an option which is enabled by default.)

I remember there isn't any segfault on x86_64 Linux if we blocklists glibc (and vdso on some distributions).

A few days ago we discovered a new segfault stack in our internal cluster (Linux on x86), which was crashing a machine about every 10 hours:

It looks like SIGPROF hits destructor code inserted by the Rust compiler, and then the segfault occurs when trying to backtrace at this place. I replaced the internal cluster's TiKV with a hotfix version with frame pointers and the problem was solved.
So at least for now, the frame pointer needs to be enabled for all supported platforms. (But we can reserve an option which is enabled by default.)

I see. But I just never encounter such a problem during my daily development. Can you at least give me the option to disable it by making it a cargo feature?

I see. But I just never encounter such a problem during my daily development. Can you at least give me the option to disable it by making it a cargo feature?

It is indeed necessary, I will add.

/run-build-arm64

/run-build-arm64

/run-test

It's difficult to control whether to enable frame pointers or whether to compile the standard library through cargo features, we provide environment variables, please see the Default behavior and manual control section described in this PR for more info.
cc @sticnarf

Can we add new features pprof-dwarf and pprof-fp? pprof-dwarf enables pprof/backtrace-rs and pprof-fp enables pprof/frame-pointer. So, we can still build version that uses dwarf to unwind and outputs results normally.

@BusyJay PTAL

/run-build-arm64 comment=true

/run-build-arm64 comment=true

/run-build-arm64 comment=true

/run-build-arm64 comment=true

/run-build-arm64 comment=true

/run-build-arm64 comment=true

/run-build-arm64 comment=true

/run-build-arm64 comment=true

To use this integrated perf library, we need to:

rebuild std and worsen build time(8%)
lose compatibility on some platform
frame pointer always on and hurt performance.

And it still can't provide always-on historical perf samples. I don't like this heavy integrations and the trade off. We should optimize for the future and choose the eBPF way.
That being said, I give one +1 for this as it's the quickest way to land on v6.1.

Thank you Jay, I will continue to work on eBPF after v6.1 and try to release a PoC as soon as possible.

/assign @BusyJay @sticnarf
Please help me /merge, thanks!

/merge

/run-test

/run-test

/run-test

/run-test

/run-test

/run-test

/run-test

/run-build-arm64

/run-build-arm64 comment=true

/run-test

After this PR, compilation is very easy to trigger oom-killer on 8 vcores 32GiB.

After this PR, compilation is very easy to trigger oom-killer on 8 vcores 32GiB.

I created https://github.com/tikv/tikv/issues/12591 to track this.


Syndicate Encryption Key buff

About the PR

This PR allows the syndicate encryption key to access all radio channels. While I've kept the price at 2 TC, I'm willing to raise it if I get feedback to do that.
How I know some of you might already be typing out a response saying that this doesn't make any sense, so let me explain. Right now communicating with other traitors is nigh impossible to do. Unless you want to hang out in the bar saying codewords for half the shift, or if you have an objective that reveals another traitor's identity, you're on your own. The addition of the encryption key helped alleviate this a little since you don't have to wear a headset that makes it absurdly obvious you're a bad guy, but it still takes two totally independent traitors to buy this to make it worth it. I think players still need a little more incentive to buy this, hence adding all the radio channels. More traitors buying this would make it much easier for traitors to discover each other and cooperate (or kill each other), encouraging social gameplay. And since you actually have to spend 2 TC up front to get this, you'll have to get 2 extra traitors together to buy that super surplus. I also removed the headset from the uplink, since with the addition of encryption keys it doesn't need to be there anymore.
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl:

add: A recently discovered security vulnerability in Nanotrasen radio frequencies has been exploited by the Syndicate, allowing the Syndicate Encryption Key to access all station radio channels.

This gives nukies access to every channel.

I don't think that's really a bad thing, the worst they can do with that is taunt the crew & know if sec's onto them during stealthops

https://github.com/space-wizards/space-station-14/issues/13782
They're not supposed to have access to it.

This gives nukies access to every channel.

Intentional, since I don't think that's really a bad thing, the worst they can do with that is taunt the crew & know if sec's onto them during stealth ops

I don't think you're familiar with when we deliberately gave them access to it and it went over poorly.

#13782
They're not supposed to have access to it.

But can't the pAI's that spawn in the nukie base use it?

Not sure why tests are failing, error messages don't seem related to the files I changed

Still very strange, this kills trick with hacking in caps' to get his radio key. I think simple syndie key should  be separated from "ALLCHANNELS"-key.
Or better add headset with unextractable ALLCHANNEL-key

Still very strange, this kills trick with hacking in caps' to get his radio key. I think simple syndie key should be separated from "ALLCHANNELS"-key.
As I said in the description, it's to encourage traitors to buy the key so there's more social gameplay among them. Splitting up the two different versions of the key just adds more uplink bloat for no good reason. Hacking into the captain's bedroom or stealing a command headset will give you all station channels, but it won't give you access to the traitor channel that is the key's main purpose.
Or better add headset with unextractable ALLCHANNEL-key
That's exactly what I'm trying to avoid since then everyone knows you're a traitor.

Still very strange, this kills trick with hacking in caps' to get his radio key. I think simple syndie key should be separated from "ALLCHANNELS"-key.

As I said in the description, it's to encourage traitors to buy the key so there's more social gameplay among them. Splitting up the two different versions of the key just adds more uplink bloat for no good reason. Hacking into the captain's bedroom or stealing a command headset will give you all station channels, but it won't give you access to the traitor channel that is the key's main purpose.

Or better add headset with unextractable ALLCHANNEL-key

That's exactly what I'm trying to avoid since then everyone knows you're a traitor.

Need a traitor channel? Buy it. Problems, gamers?
Okay, i understood what do you want and think it is nice, but 2 tc seems... too few, i guess

#14110 is a more interesting solution to buffing traitor headset because it gives heads lockers boxes of keys to steal, and also doesnt just give them all access radio for doing nothing. I feel like this PR is just bypassing the encryption key system entirely when we can have interesting gameplay revolving around stealing keys for the headset. The only buff I feel like syndi headset needs is chameleon to prevent meta gaming.

I feel like this PR is just bypassing the encryption key system entirely when we can have interesting gameplay revolving around stealing keys for the headset.

Yeah, bro, you are right, this what i somewhy forget.

The only buff I feel like syndi headset needs is chameleon to prevent meta gaming.

Because syndie headset have 4 key slots and have syndie key in it, it has to become better with chameleon

#14110 is a more interesting solution to buffing traitor headset because it gives heads lockers boxes of keys to steal, and also doesnt just give them all access radio for doing nothing.

What I'm trying to encourage with this change is more traitor interaction, and while I do think #14110 is a good change, it's just going to lead to even more head office robberies which doesn't usually lead to any interactions besides getting thrown in brig. During our discussion on Discord, you said that you've observed multiple traitors buying the key and interacting with each other during rounds. That's the type of gameplay I'm trying to encourage, and I don't think this change will cause encryption key theft to no longer be a good strategy.

doing nothing.

 I think that's a balanced trade.

I feel like this PR is just bypassing the encryption key system entirely when we can have interesting gameplay revolving around stealing keys for the headset.

I don't really understand this argument, since the point of most traitor items is they're a way to quickly gain power, making you lose the ability to deny you're a traitor in exchange. Stealing keys for the headset either leads to emagging into multiple head lockers, which makes the emag even more of a must-buy, or just killing heads and taking their headsets, which leads to more boring hypopen gameplay. Giving traitors the option to skip this and get access to all the channels doesn't immediately make this gameplay irrelevant, since traitors could choose not to buy it over other items that might be more useful, and then later break into a sec outpost for that encryption key if they think they need it. If traitors don't frequently steal encryption keys, it's probably because they just don't need them right now. I'm not forcing them to buy this, merely making it a more attractive option to buy, because I think traitor rounds become much more fun when you can easily communicate with other traitors.

The only buff I feel like syndi headset needs is chameleon to prevent meta gaming.

Even if it gets the chameleon ability (which can still be metagamed by interacting with the headset), it's still stuck between a item that costs 2 less TC and does exactly what the headset does when its first purchased, and an item that costs 2 more TC that gives you a full set of chameleon clothes. It just doesn't make sense for the headset to be in the uplink anymore, and no amount of encryption key slots will change that.

why is traitors doing traitorous things bad. also traitors already have code words i think giving more incentive to bypass that with this pr is just ditching 2 game systems for an easy out

how about jolhyomh lryeords

codewords

Having them access all channels doesn't seem that good tbh (then again I haven't played traitor in god knows how long so I'm probably not allowed to have an opinion on this)

@Emisse
@AlexMorgan3817
I feel like the point of this change has gotten lost in all the arguing, so I’m just going to restate it so it's clear. I am not trying to supersede encryption key theft with this change. It’s something I’ve had on my todo list for months now, before the encryption key PR ever existed. The only thing that held me back from doing it for the syndie headset was the fact that you couldn’t wear it safely (I forgot about chameleon). The goal behind this change is to get people to buy the encryption key more, because unlike any other uplink item, it doesn’t have a guaranteed usefulness. As I said above, it takes two traitors to even make this item useable, and if nobody else bought it you now have a very fancy and illegal paperweight. The fact that you could potentially waste 2 TC on this and get nothing in return is completely out of line with how uplink items are designed. You need several players to independently buy this to make it useful, but nobody buys it, so it's worthless. My idea for fixing this was to add a guaranteed benefit of buying the key, hence the extra channels being added. The only reason I chose that specific way of buffing the key was because that’s how it works in 13, and I didn’t really see any issues with letting traitors access those channels. It’s just a means of gaining extra information, which is always useful to traitors who are actually trying to be stealthy instead of buying an esword + c4 bundle and going loud. While I do recognize this could reduce the rates of encryption key theft, it won’t eliminate it entirely since not every antag is going to be a traitor, and not every traitor is going to want to always buy this. If somebody can come up with a better static benefit for the key, I will gladly close this PR in favor of theirs. I want this item to be bought more, because I love the idea of traitors linking up and causing conflict between themselves, and creating a story that takes place entirely beyond the crew’s eyes. While I think this is the best way to get people to buy the key, I’ll be glad to see someone prove me wrong.
Quick note on the suggestion to give the headset chameleon:
That still doesn’t solve the issue of the key having a good chance to be worthless. Sure you won’t be immediately called out as a tator tot, but if nobody else has the traitor channel, you just spent 4 TC on a fancy headset with no common channel access. And if the syndie key can be covertly inserted into your headset, why even have the syndie headset in the uplink at this point? It’s just bloat that won’t ever be bought when you can just buy the key for half the price, which is what traitors are going to want over the extra key slots.

I feel like the...

 Adding the extra channels is just a way to add that guaranteed benefit, not to bypass key theft and codewords.

I'm not reading all that

tldr: The encryption key needs a guaranteed benefit to encourage traitors to buy it, since right now its usefulness is completely dependent on whether other traitors independently decided to buy it. Adding the extra channels is just a way to add that guaranteed benefit, not to bypass key theft and codewords.

Hm, I think T encryption keys shouldn't be able to access all channels, however maybe most aside from command and maybe sec?

I'm not reading all that

tldr: The encryption key needs a guaranteed benefit to encourage traitors to buy it, since right now its usefulness is completely dependent on whether other traitors independently decided to buy it. Adding the extra channels is just a way to add that guaranteed benefit, not to bypass key theft and codewords.

Hm, I think T encryption keys shouldn't be able to access all channels, however maybe most aside from command and maybe sec?

Removing the command channel from the key could work, but the sec channel is probably going to be a pretty significant factor in whether or not to buy it, since knowing if sec is onto you is extremely valuable information.

I'm not reading all that

tldr: The encryption key needs a guaranteed benefit to encourage traitors to buy it, since right now its usefulness is completely dependent on whether other traitors independently decided to buy it. Adding the extra channels is just a way to add that guaranteed benefit, not to bypass key theft and codewords.

Hm, I think T encryption keys shouldn't be able to access all channels, however maybe most aside from command and maybe sec?

Removing the command channel from the key could work, but the sec channel is probably going to be a pretty significant factor in whether or not to buy it, since knowing if sec is onto you is extremely valuable information.

Then just blast in security checkpoint or HoP office or even kill secoff.

I'm not reading all that

tldr: The encryption key needs a guaranteed benefit to encourage traitors to buy it, since right now its usefulness is completely dependent on whether other traitors independently decided to buy it. Adding the extra channels is just a way to add that guaranteed benefit, not to bypass key theft and codewords.

Hm, I think T encryption keys shouldn't be able to access all channels, however maybe most aside from command and maybe sec?

Removing the command channel from the key could work, but the sec channel is probably going to be a pretty significant factor in whether or not to buy it, since knowing if sec is onto you is extremely valuable information.

Then just blast in security checkpoint or HoP office or even kill secoff.

The point of all the extra channels is to get people to buy the key and then use the traitor channel by extent, if you just want the sec channel you can do any of those things

tldr: The encryption key needs a guaranteed benefit to encourage traitors to buy it, since right now its usefulness is completely dependent on whether other traitors independently decided to buy it. Adding the extra channels is just a way to add that guaranteed benefit, not to bypass key theft and codewords.

Hm, I think T encryption keys shouldn't be able to access all channels, however maybe most aside from command and maybe sec?

Removing the command channel from the key could work, but the sec channel is probably going to be a pretty significant factor in whether or not to buy it, since knowing if sec is onto you is extremely valuable information.

I guess that's true, but that's still very useful, so

I'm not reading all that

tldr: The encryption key needs a guaranteed benefit to encourage traitors to buy it, since right now its usefulness is completely dependent on whether other traitors independently decided to buy it. Adding the extra channels is just a way to add that guaranteed benefit, not to bypass key theft and codewords.

Hm, I think T encryption keys shouldn't be able to access all channels, however maybe most aside from command and maybe sec?

Removing the command channel from the key could work, but the sec channel is probably going to be a pretty significant factor in whether or not to buy it, since knowing if sec is onto you is extremely valuable information.

Then just blast in security checkpoint or HoP office or even kill secoff.

You could do that, and risk exposing yourself.  Blowing your way into places is also a good way to get yourself found.

Having access to most channels would be great for stealth, however it's the question of what channels should be accessible. Sec, engie and maybe cargo might be good channels to make accessible? Not sure about sci, service or anything else. Would also need some slight TC cost increase as the info would be very valuable.

lol didn't read.
Fuck.... you still discussing this shit...
@GoodWheatley, i understand that you want to make syndie key more... usable by traitors, but still, you should look somewhere else.
Encryption key not the feature that should be changed to make people use it.
Try add some social mechanics like Super Surplus Crate, that require 2 traitors to afford it. And this will connect them and make them play together, using super bundle that they got.

lol didn't read.

If you refuse to listen to what I’m saying why should I listen to you

lol didn't read.

You either listen or not, this is your choice.

lol didn't read.

 You either listen or not, this is your choice.

Be polite and helpful on the github repo or you will lose the ability to contribute.

lol didn't read. Fuck.... you still discussing this shit...

Next time you antagonize another contributor like this you are getting banned from the repository and discord.

lol didn't read.

 You either listen or not, this is your choice.

Be polite and helpful on the github repo or you will lose the ability to contribute.

I am sorry, guess i was very rude for a whole yesterday...

Will this conflict with the changes made by #14415?

Will this conflict with the changes made by #14415?

I think I should have put encryption keys stuff to different PR, as it's not essential for telecomms to be added.


[FRONTEND] A Python hybrid frontend

Hybrid Frontend Developer Guide
This hybrid frontend is aimed at:

Building IR in a more intuitive way
Writing preliminary versions of some idioms that yet have not been supported by

Features
Software emulation
This feature supports both software emulation and compilation of the code.
To define a function, you need to use tvm.hybrid.script decorator to indicate this is a hybrid function:
@tvm.hybrid.script
def outer_product(a, b, c):
    for i in range(a.shape[0]):
        for j in range(b.shape[0]):
            c[i, j] = a[i] * b[j]
a = numpy.random.rand(100)
b = numpy.random.rand(99)
c = numpy.zeros((100, 99))
outer_product(a, b)

This decorator will help you to import key words required spontaneously when software emulation.
Every element in the argument list is either a python variable or numpy tensor.
Backend Compilation
The current parse interface looks like:
a = tvm.placeholder((100, ), name='a')
b = tvm.placeholder((99, ), name='b')
c = tvm.placeholder((100, 99), name='c')
tvm.hybrid.parse(outer_product, [a, b, c]) # return an ir root of this function

TODO: If we pass these tvm tensors to this function, it returns a op node:
a = tvm.placeholder((100, ), name='a')
b = tvm.placeholder((99, ), name='b')
c = tvm.placeholder((100, 99), name='c')
op = outer_product(a, b, c) # return the corresponding op node

Scheduling
Under construction, not truly supported yet.
Follow up the example above, you can use some tvm like interfaces to manipulate the structure of IR:
sch = tvm.create_schedule(op)
jo, ji = sch.split(j, 4)
sch.vectorize(ji)

split, reorder, and loop_annotation will be supported!
Attributes
So far, ONLY tensors' shape attribute is supported!
Loops
In HalideIR, loops have in total 4 types: serail, unrolled, parallel, and vectorized.
Here we use range, serial, unroll, parallel, and vectorize, these 5 keywords to annotate the types of for loops.
NOTE: In HalideIR those are enums, they are in passive form. Here we use active form to annotate loops, because they are ready to run.
NOTE: Unlike what that is in HalideIR, in loop_type(a, b), a is the starting point and b is the trip count of iterations. Here loop_type(a, b) indicates [a, b).
Variables
Because there is no variables in HalideIR, all the mutatable variables will be lowered to an array with size 1.
It takes the first store of a variable as its declaration.
NOTE: Unlike conventional Python, the declared array can only be used in the scope level it is declared.
for i in range(5):
    sum = 0
    for j in range(5):
    	sum += a[i, j] #do something with sum
    b[i] = sum #you can still use sum in this level
#you can NEVER use some here, even though it is allowed in conventional Python
a[0] = sum

Conditional Statement and Expression
if condition:
    # do something
a = b if condition else c

However, NO True and False keyword supported yet.
Math intrinsics
So far, these math intrinsics, log, exp, sigmoid, tanh, power, and popcount, are supported. No import is required, just use it!
Array allocation
TODO: Use a function call allocation(shape, type, share/local) to declare an array buffer. The basic usage is roughly the same as variables
Thread bind
You can also do loop-thread bind by writing code like this:
for tx in bind("threadIdx.x", 100):
    a[tx] = b[tx]

Appendix
 Keywords

Statement keywords: for, in, if, else
For keywords: serial, range, unroll, parallel, vectorize, bind
Math keywords: log, exp, sigmoid, tanh, power, popcount

@tqchen @merrymercy @kevinthesun @xqdan @ZihengJiang
I think these are reviews? I hope I did not miss any one.

general progress tracked in https://github.com/dmlc/tvm/issues/1213

@Laurawly please also take a look

@were Could there be more gpu testings regarding vthread injection and usage of shared / warp memory?

Thanks! This is merged. Please followup with PRs on gpu support


Rename Throw

Rename Ex => Throw, better readability.

Coverage: 96.456%. Remained the same when pulling 317e49a214aa70ee60ed17902b0a284cd904c5c8 on users/alexpeck/throw into 7a5bf5b2a8f2feb48e6166a58b0aafbaa082a269 on main.


Fixed Workflow conditions

Current dependencies on/for this PR:

main

PR #123

PR #124

PR #125   👈

PR #126

This comment was auto-generated by Graphite.


Missing Package Overview page

The Package Overview page in the documentation is missing (under construction). This is not a problem in itself, but it means that most of the high level description of what bifacial_radiance is and how it works is not there. Out of the information available in the Intro Examples, ModelChain and the Jupyter Notebooks examples, it is very difficult to understand the workflow of the software, what the main elements that need to be created are or how the code is structured (keeping aside that ModelChain also seems to be largely a work in progress).
I would suggest to create some sort of flow diagram to illustrate this, indicating the inputs the outputs and what happens in between, all of it as general as possible, without entering into specific details of function calls and parameters.

Resolved in commit


Workspace scroll bugfix and unit tests!

Resolves
Workspace scroll is wonky if block comments are on the screen. Scroll gets pinned to a corner of the workspace. section of #1554.
Proposed Changes
ScratchBlockComments should be able to handle NaN values for x and y positions, and their x and y positions properties should be updated after auto-positioning the comment (even if they are not rendered).
Reason for Changes
The workspace metrics get wonky if scratch block comments are not correctly reporting positioning information.
Test Coverage
Added unit tests! Particularly, test_blockCommentXYNaNPositionProvided and test_blockCommentXYNullPositionProvided fail prior to this fix and pass post changes.

Yeah, LG.

Woo! I'll wait for the tests and then merge. =D


Update constants-transact-sql.md

Minor updates. constantsare -> constants are. Add an example for negative money.

@fziglio : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#label:"aq-pr-triaged"

Oh... there's another issue which I don't know how to change. In money section somebody put some references about commas inside money. However if I issue a SELECT $123,4 I'm getting 2 columns (one with money $123 and another with integer 4) indicating that commas are not allowed at all on money literals.

@fziglio - thank you for the submission. I'm going to approve the original pull request so you can sign off. Can you please ask the money question at https://docs.microsoft.com/en-us/answers/topics/sql-server-general.html?
Thanks
Mike
#sign-off


Replaced package path volcano.sh/kubesim -> github.com/volcano-sh/k…

…ubesim

Added go mod files
Updated vendor

Hi!
This is solution of issue #7

/hold

@AntonParaskiv , prefer to keep package to volcano.sh/kubesim; similar to volcano.sh/volcano :)

/lgtm
/approve
Thanks very much for your contribution!!


FeedProfile type missing in 3.x

Hello!
Problem is quite self-explanatory, I've upgraded to the 3.1.2 version of the nuget package, and the FeedProfile type seems to be gone.
I find this odd since I can still see it in the latest API docs, so I'm assuming this is just some source gen going wrong.
I didn't dive super deep into this, so there may be more missing.
Thanks a lot for the work on this library all the same though, been enjoying using it : )

That's a breaking change as part of 3.x. It's intentional to match the Lexicon, so some of the names had to be broken to make it easier to generate.
So FeedProfile became ProviewViewDetailed. It's the same thing, but with a different name and more types on it. I need to remove the generated API site from the source here, since it's generated and not deployed from the repo itself.
https://github.com/drasticactions/FishyFlip/blob/7008c88186adccd67a447fa6c7899ef6e1e80e9f/src/FishyFlip/Lexicon/App/Bsky/Actor/ProfileViewDetailed.g.cs#L141
The source generation is literally everything within the lexicon.

Oh okay yeah this makes sense then, I actually changed all FeedProfile instances to ProfileViewDetailed in the first place as a quick fix lol.
It's just that the fact it was still in the docs made me think something went wrong, if it's intentional, then I've had 0 problems with just going for a ProfileViewDetailed!

I've removed the generated docs from the repo (https://github.com/drasticactions/FishyFlip/commit/046b2c63f99936160a56815107c8ff951fa0abf5). I totally didn't think about that so if you did search in GitHub you would see the old names and not the generated ones on the website.
Thanks for letting me know, sorry about that!


How do you withdraw the bitcoins to a wallet

If someone knows it respond pls

It depends on what pool you're using.


Fix: Description key not considered with connected endpoints

Change Summary
description key under connected endpoints not used.
Related Issue(s)
Fixes #2744
Component(s) name
arista.avd.<role-name>
Proposed changes

How to test

molecule test
Checklist
User Checklist

N/A

Repository Checklist

[x] My code has been rebased from devel before I start
[x] I have read the CONTRIBUTING document.
[ ] My change requires a change to the documentation and documentation have been updated accordingly.
[x] I have updated molecule CI testing accordingly. (check the box if not applicable)

It was implemented as part of network_ports, where we want a more generic description, but makes perfect sense to include here as well. I would prefer to move the logic to the description module, so anyone customizing those keep full control. Similar to how it is done with port_channel_description.

It was implemented as part of network_ports, where we want a more generic description, but makes perfect sense to include here as well. I would prefer to move the logic to the description module, so anyone customizing those keep full control. Similar to how it is done with port_channel_description.

On this topic @ClausHolbechArista - should port-channel description also take into account this special description at the adapter level as currently it is doing <adapter_description>_<oprtional_port_channel_description>

It was implemented as part of network_ports, where we want a more generic description, but makes perfect sense to include here as well. I would prefer to move the logic to the description module, so anyone customizing those keep full control. Similar to how it is done with port_channel_description.

On this topic @ClausHolbechArista - should port-channel description also take into account this special description at the adapter level as currently it is doing <adapter_description>_<oprtional_port_channel_description>

That would be good

I would prefer to move the logic to the description module, so anyone customizing those keep full control. Similar to how it is done with port_channel_description.

If I follow, won't we need to modify the method signature in the base class and all the subclasses?

we should add an explanation of how the descriptions are built for physical ports and port-channels.

Docstrings were added to the methods.  Do you want something additional?  See, as an example: https://github.com/aristanetworks/ansible-avd/pull/2745/files#diff-bbfc03125089c9310eb2bebb44079e7849bbf1e5031bae6df3024d280c0f306dR94

we should add an explanation of how the descriptions are built for physical ports and port-channels.

Docstrings were added to the methods. Do you want something additional? See, as an example: https://github.com/aristanetworks/ansible-avd/pull/2745/files#diff-bbfc03125089c9310eb2bebb44079e7849bbf1e5031bae6df3024d280c0f306dR94

We have added addition information in schema/documentation.


Anyway to disable git scan on hidden buffer?

So when I split open a file from nerdtree and then nav my buffers to show one buffer completely and hide all others it seems upon the nerdtree refresh this git plugin causes any hidden buffer to show the first line within the file. Is there anyway to avoid this? I've attached a screencap of what I'm talking about. I hope it helps demonstrate my issue.
Notice the first line of the hidden buffer shows up at the top of the terminal window...

Hi, how do you hide other buffers?


Failed load pubspec.yaml if contains dependencies from self hosted pub

Failed load pubspec.yaml if contains dependencies from self hosted pub

The issue is in the ExternalHostedReference parsing. The hosted reference can take two forms, neither of which matches the JSON serialization in this package.
With sdk: >=2.15.0
dependencies:
  transmogrify:
    hosted: https://some-package-server.com
    version: ^1.4.0

Pre-2.15.0
dependencies:
  transmogrify:
    hosted:
      name: transmogrify
      url: https://some-package-server.com
    version: ^1.4.0


play video while downloading

I want to download video with this library and play the same video simultaneously, how I can do It?

Using the Sequential Downloader will guarantee that you are downloading the video file from bytes 0 - until complete. What you can do is monitor the download progress, say when it passes the 50% mark or 75% mark then playback can begin. Being that Fetch is a downloader library and not a video playback library that is the furthest I will be able to help. Hope this helps.


Add currency mode support

What is the goal of this change?
Add currency mode support - using a custom currency - U$ 20 to twenty dollars.
Is there any issue related?
N/A
How does the changes address the issue?
N/A

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Dliu/pg browser

Summary:
Replace pg code with pg-browser package. Changes are in the pg and pg-cursor packages. To access bundled code through npm: "npm install pg-browser."
Test plan:
The pg/test suite passes with modifications to support websocket servers. To run the test suite, websockify must be running. If PORT is the port passed into node-postgres from the command line (5432 by default), websockify should point from PORT to the port of your local postgres server. The local postgres server must be configured with md5 authentication to run some of the tests.
This commit breaks the pg-cursor/test suite as the test suite currently pulls the pg package from the webpack bundle, which can only be run on the client side.

@daniel-liu-bitio is it possible to get these github action runners working (for at least the subset we want?)


Add cmake helpers to cmake module path

Overall this is more of a just Quality of Life improvement as it just removes visual cruft when including each CMake helper

@ddalcino @aminya do you have an opinion on this one?

@ddalcino @aminya do you have an opinion on this one?

I really liked this PR, and I like to do this in my own projects. I forgot to give it an approving review ...

I would prefer the current behavior since the path to the CMake files is exactly as they are on the file system. If someone doesn't know what CMAKE_MODULE_PATH is, they might be confused for some time.

... but that's a really good point, and I think @aminya is right.

I'll admit I did not actually know what it was doing at first either, and I've been using CMake for awhile now. I'm also inclined to the simple direct paths, as @aminya says.
Thank you @HackingPheasant , we appreciate your submission, but will not be merging it right now, as we think it could cause confusion for new users of CMake, and that outweighs the benefits.

That's all good. I found it useful when I needed to include a cmake file in a CMakeLists.txt that was a few directories deep, meaning I didn't need to traverse a few directories and keep that path updated and correct if I ever did move stuff around.
And just to leave this info documented here if you ever change your mind you can have multiple paths listed like so (take from my personal project)
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake;${PROJECT_SOURCE_DIR}/cmake/3rd-party" ${CMAKE_MODULE_PATH})

set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake;${PROJECT_SOURCE_DIR}/cmake/3rd-party" ${CMAKE_MODULE_PATH})

Personally, I'd like to see this line of code in the top level CMakeLists.txt file, commented out, with comments describing what it does and how it can be used. Users who want to use it (like me) could simply uncomment and start using it; others can just ignore it.


[FEATURE] Add Set-PnPMicrosoft365Group

Is your feature request related to a problem? Please describe.
New-PnPMicrosoft365Group has option for ResourceBehaviorOptions
Describe the solution you'd like
Can this ResourceBehaviorOptions, TeamResourceBehaviorOptions etc. parameter be added to Set-PnPMicrosoft365Group
Describe alternatives you've considered
I am using Exchange Management Shell
Additional context
Not sure where Set-PnPMicrosoft365GroupSettings comes into play

Sure. Good idea. On it.

Done