Allow to get non-valid files from DBS in listDatasetFileDetails.

This pull is because in CRAB we only care about files status in DBS and not about dataset status.
When the function listDatasetFileDetails was introduced by @bbockelm it was retrieving the details for all files in the dataset, no matter the dataset/files status. CRAB is then filtering the valid files. Then the "validFileOnly" flag was introduced here and hardcoded to 1. The problem with this is that in this case one gets the valid files only if the dataset status itself is VALID or PRODUCTION, but for any other dataset status one gets no files. And this is not what we want in CRAB. For example, if the dataset is in status INVALID or DEPRECATED, but there are some files in valid status, we want to be able to retrieve them.
So I am introducing in this pull (first commit) the possibility to set validFileOnly = 0. In CRAB we then take care to filter the valid files.
I tested the first commit with CRAB on a private dataset (/GenericTTbar/atanasi-140429_131619_crab_AprilTest_3000jbsOf3hrs-95e5dc29a1ac0766eb8514eb5d4ff77a/USER at phys03) that I set to INVALID and left 1 file in valid status (I used the procedure documented in https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideCrabForPublication#Invalidate_a_dataset_in_DBS) calling listDatasetFileDetails with validFileOnly = 0. I got all the files in the dataset as I wanted, but I was not getting the lumis. I tried then changing listFileLumis->listFileLumiArray (and therefore getting the lumis per file instaed of per block and btw doing the same for the parents) and I was able to get the lumis. So this is what I changed in the second commit.

Andres, did you check whether listFileLumis() and listFileLumiArray() return the same information in the same format? The former queries by block, so there may be side effects to the other WMCore services (WMAgent).

Beginning pylint and unit tests.
See https://cmssdt.cern.ch/jenkins/job/DMWM-PR-test/113/ for details

Alan, I did not explicitly check, because I assumed they should, given that in _getLumiList() https://github.com/dmwm/WMCore/blob/master/src/python/WMCore/Services/DBS/DBS3Reader.py#L63 both methods are used and no distinction on the returned list is made.

I think this change is totally off-track. The problem is that DBS server is doing something not documented, not expected and IMHO totally non sensible. See
https://github.com/dmwm/CRABServer/pull/4851#issuecomment-119705437

I talked to @amaltaro , since the listDatasetFileDetails function is only used by CRAB3 so there are no concerns about the impact of this pull on WMAgent.
That said his comment is a good one, Andres, ar you sure that listFileLumis and listFileLumisArray return the same information? Also, with this change we are going from a DBS query per block to a DBS query per file.
I am not sure who wrote the TODO #TODO this part is completely wrong need to be redone , but to me querying per block seems the right choiche.. At least that was the implementation Manuel Giffels suggested long time ago.

Ok, I would ignore the TODO and remove it given that I already discussed this with @ticoann : https://github.com/dmwm/WMCore/commit/2afc01ae571390f5fa009dd258be757adac89c28#diff-374b7a6640288184175057234e393e1cR224
And I would continue querying per block.

Back to @belforte 's comment. I agree that the semantic used by DBS is confusing now. If I ask for valid files the DBS API should return the valid files, and having an internal logic that turn valid files to invalid files if the dataset is not in PRODUCTION or VALID is confusing.
That said Andres' pull request address a WMCore limitation in the DBS3Reader wrapper: there is no possibility to get the invalid files as the validFileOnly flag is forced to true here https://github.com/dmwm/WMCore/pull/6056/files#diff-374b7a6640288184175057234e393e1cL243
In my opinion we can proceed with this pull which is generic enough to be merged independently from what we decide to do in DBS. On the other hand I will wait before merging the "CRAB3 related pull" as it is a "workaround" to the aforementioned DBS behavior.

@mmascher OK with addressing WMCore limitation, but indeed  the loop on blocks is replaced by a loop on files. This must be avoided, in case delaying the fix unitl we have found an agreement in DBS, if in the meanwhile CRAB3 can not deal with datasets not VALID nor PRODUCTION... so be it.

Rather than go back and forth on this, I think we should schedule a discussion on this with @yuyiguo  when she is back from vacation. That means this can find its way into the September release at the earliest.
I forget the actual reason for this "feature" only that we discussed it and I asked for the current behavior. From my perspective, if you ask for valid files that match some pattern, you shouldn't by default get files in invalid datasets. If you look at the DBS issue list, you see a lot of related comments about how this is done. It seems like some more flexibility is needed.
@vkuznet should be in this discussion too to make sure we do the right things for DAS.

This patch makes sense indepentently of what we decide about the DBS logic. It's the related CRAB3 patch that should/should not be merged depending on the decision. But yes, let's wait for Yuyi before taking any decision.
That said, @AndresTanasijczuk can you explain why did you changed and went from the perblock call to the perfile call (not sure I understood it all from our private chat)?

Alan, Marco: I have tested running listFileLumis and listFileLumiArray on 3 datasets (the INVALID one I pointed out above, a dataset of mine with multiple runs per file /SingleMu/atanasi-CRAB3-tutorial_Data-analysis_LumiList-f765a0f4fbf582146a505cfe3fd08f3e/USER, this other dataset /QCD_Pt-1800_Tune4C_13TeV_pythia8/Spring14dr-castor_PU_S14_POSTLS170_V6-v1/GEN-SIM-RECODEBUG) and in all 3 cases the returned dictionary is exactly the same between listFileLumis and listFileLumiArray.
Also, the doc string in both methods for what they return is the same: https://github.com/dmwm/DBS/blob/master/Client/src/python/dbs/apis/dbsClient.py#L829 and https://github.com/dmwm/DBS/blob/master/Client/src/python/dbs/apis/dbsClient.py#L853 It says ":returns: List of dictionaries containing the following keys (lumi_section_num, logical_file_name, run)" which coincides exactly with what I see.
Having said that, I think we actually don't need to use listFileLumiArray. I will make a separate comment on that later. I will also address the question why I changed to query per file instead of per block. Let me only add here that listFileLumiArray allows one to query passing a list of files, so I could in principle make Num_blocks lists of files_per_block and make one query for each of these lists. Of course the question is why would I do that? What is the different between doing that and calling listFileLumis with the block name (as currently done)? Wait for my later comment...

maybe better wait until you can get help from Yuyi on what exactly happens server side in the various cases ? The point is not moving a loop on file names on one side or another of a WMCore or DBSclient function but 1 vs 1k calls to Oracle.

Why I changed from perblock to perfile query?
In my original comment I tried to explain why. I said: "I tested the first commit with CRAB on a private dataset (/GenericTTbar/atanasi-140429_131619_crab_AprilTest_3000jbsOf3hrs-95e5dc29a1ac0766eb8514eb5d4ff77a/USER at phys03) that I set to INVALID and left 1 file in valid status (I used the procedure documented in https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideCrabForPublication#Invalidate_a_dataset_in_DBS) calling listDatasetFileDetails with validFileOnly = 0. I got all the files in the dataset as I wanted, but I was not getting the lumis."
One detail that I forgot to add in that explanation is that on top of the first commit I added also the following change:
file_lumis = self.dbs.listFileLumis(block_name=blockName, validFileOnly = 1) -->
file_lumis = self.dbs.listFileLumis(block_name=blockName, validFileOnly = validFileOnly)
I didn't include that change in the first commit, because it would conflict with the second commit.
So the point was that I was not able to get the lumis information when querying perblock using listFileLumis, not matter if I use validFileOnly = 0 or 1 in listFileLumis.
I then suspected (just a guess) that the reason could be that querying per block requires all the files in the block to be in 'valid' state for listFileLumis to return me the lumis information. So I said to myself "let's try querying per file". And I could have kept using listFileLumis querying per file, but listFileLumiArray is more flexible, because it allows one to make a query with a list of files, something I only tested today and works fine.
Now let me give more details of what I have found today.
Just by chance I tried removing the argument validFileOnly when calling listFileLumis and keep doing the query per block. And to my surprise in that case I did get the lumis information. So it seems there is a bug in listFileLumis: not passing validFileOnly gives me the lumis info for the files in the block, while passing it with either value 1 or 0 doesn't give me the lumis info. I would have expected that passing validFileOnly = 0 is the same as not passing it, given the comment in the doc string https://github.com/dmwm/DBS/blob/master/Client/src/python/dbs/apis/dbsClient.py#L827 Again, I am talking about my particular use case example of an INVALID dataset with only 1 file in 'valid' state.
Given this finding, and without caring if this is a bug or not, I could use listFileLumis querying per block and without passing the validFileOnly argument, and add an if statement like in https://github.com/dmwm/WMCore/blob/master/src/python/WMCore/Services/DBS/DBS3Reader.py#L260. This way we will keep querying per block and not need to change to listFileLumiArray. Or I can change to listFileLumiArray and make a query with the lists of files per block. Any of these are IMHO valid alternatives that do not need to wait for any change/bug fix in DBS.
Let me give more details about when the listFileLumis and listFileLumiArray methods did or didn't return me the lumis information in my example dataset:
listFileLumiArray(logical_file_name=LFN, validFileOnly = 1) NO (not even for the valid file)
listFileLumiArray(logical_file_name=LFN, validFileOnly = 0) YES (for all the files)
listFileLumiArray(logical_file_name=LFN) YES (for all the files)
listFileLumiArray(logical_file_name=list(LFNs in block), validFileOnly = 1) NO (not even for the valid file)
listFileLumiArray(logical_file_name=list(LFNs in block), validFileOnly = 0) YES (for all the files)
listFileLumiArray(logical_file_name=list(LFNs in block)) YES (for all the files)
listFileLumis(logical_file_name=LFN, validFileOnly = 1) NO (not even for the valid file)
listFileLumis(logical_file_name=LFN, validFileOnly = 0) YES (for all the files)
listFileLumis(logical_file_name=LFN) YES (for all the files)
listFileLumis(block_name=blockName, validFileOnly = 1) NO (not even for the valid file)
listFileLumis(block_name=blockName, validFileOnly = 0) NO (not even for the valid file)  <---- This is wrong IMO; should give me the info for all files.
listFileLumis(block_name=blockName) YES (for all the files)
I don't want to argue if whether when validFileOnly = 1 I should get the lumis info for the file I have in 'valid' state in my INVALID dataset. That is the discussion Eric, Stefano, Yuyi and others will have about what should DBS do in this case. My point here is just that listFileLumis(block_name=blockName, validFileOnly = 0) should have given me the lumis info as it does listFileLumis(block_name=blockName).

Hi, All:
The difference between listFileLumis and listFileLumiArray is that listFileLumiArray can handle a long list of LFNs, but listFileLumis can only handle a short list because the underline methods are different for these two APIs. If you are using list of LFNs, please use listFileLumiArray. Everything listFileLumis can do, listFileLumiArrray should be able to do. I have a bug in listFileLumiArray client API that prevent it to take block name as input. I will fix it in next release.
I open a github issue https://github.com/dmwm/DBS/issues/484 on the problem Andrew reported. All the calls should return lumi list. Looking into the code, I could not see why some of the calls did not return lumi list as Andrew tested. Andrew, could you please update the issue with the block/lfns you used for the test, I will see if I can find the problem using the same data.
In general, it is fast for DBS to get results back if one can use block name instead of a list of LFNs if all the data is in the same block.
The valid file in DBS is defined as 1. The file itself is valid.  2. The dataset that the file belong too has access type as VALID or PRODUCTION. If you want to use “INVALID” file, just get all the files w/o the validFileOnly switch.
Cheers,
Yuyi
From: Andres Tanasijczuk<EMAIL_ADDRESS>Sent: Thursday, July 09, 2015 11:24 AM
To: dmwm/WMCore
Cc: Yuyi Guo
Subject: Re: [WMCore] Allow to get non-valid files from DBS in listDatasetFileDetails. (#6056)
Why I changed from perblock to perfile query?
In my original comment I tried to explain why. I said: "I tested the first commit with CRAB on a private dataset (/GenericTTbar/atanasi-140429_131619_crab_AprilTest_3000jbsOf3hrs-95e5dc29a1ac0766eb8514eb5d4ff77a/USER at phys03) that I set to INVALID and left 1 file in valid status (I used the procedure documented in https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideCrabForPublication#Invalidate_a_dataset_in_DBS) calling listDatasetFileDetails with validFileOnly = 0. I got all the files in the dataset as I wanted, but I was not getting the lumis."
One detail that I forgot to add in that explanation is that on top of the first commit I added also the following change:
file_lumis = self.dbs.listFileLumis(block_name=blockName, validFileOnly = 1) -->
file_lumis = self.dbs.listFileLumis(block_name=blockName, validFileOnly = validFileOnly)
I didn't include that change in the first commit, because it would conflict with the second commit.
So the point was that I was not able to get the lumis information when querying perblock using listFileLumis, not matter if I use validFileOnly = 0 or 1 in listFileLumis.
I then suspected (just a guess) that the reason could be that querying per block requires all the files in the block to be in 'valid' state for listFileLumis to return me the lumis information. So I said to myself "let's try querying per file". And I could have kept using listFileLumis querying per file, but listFileLumiArray is more flexible, because it allows one to make a query with a list of files, something I only tested today and works fine.
Now let me give more details of what I have found today.
Just by chance I tried removing the argument validFileOnly when calling listFileLumis and keep doing the query per block. And to my surprise in that case I did get the lumis information. So it seems there is a bug in listFileLumis: not passing validFileOnly gives me the lumis info for the files in the block, while passing it with either value 1 or 0 doesn't give me the lumis info. I would have expected that passing validFileOnly = 0 is the same as not passing it, given the comment in the doc string https://github.com/dmwm/DBS/blob/master/Client/src/python/dbs/apis/dbsClient.py#L827 Again, I am talking about my particular use case example of an INVALID dataset with only 1 file in 'valid' state.
Given this finding, and without caring if this is a bug or not, I could use listFileLumis querying per block and without passing the validFileOnly argument, and add an if statement like in https://github.com/dmwm/WMCore/blob/master/src/python/WMCore/Services/DBS/DBS3Reader.py#L260. This way we will keep querying per block and not need to change to listFileLumiArray. Or I can change to listFileLumiArray and make a query with the lists of files per block. Any of these are IMHO valid alternatives that do not need to wait for any change/bug fix in DBS.
Let me give more details about when the listFileLumis and listFileLumiArray methods did or didn't return me the lumis information in my example dataset:
listFileLumiArray(logical_file_name=LFN, validFileOnly = 1) NO (not even for the valid file)
listFileLumiArray(logical_file_name=LFN, validFileOnly = 0) YES (for all the files)
listFileLumiArray(logical_file_name=LFN) YES (for all the files)
listFileLumiArray(logical_file_name=list(LFNs in block), validFileOnly = 1) NO (not even for the valid file)
listFileLumiArray(logical_file_name=list(LFNs in block), validFileOnly = 0) YES (for all the files)
listFileLumiArray(logical_file_name=list(LFNs in block)) YES (for all the files)
listFileLumis(logical_file_name=LFN, validFileOnly = 1) NO (not even for the valid file)
listFileLumis(logical_file_name=LFN, validFileOnly = 0) YES (for all the files)
listFileLumis(logical_file_name=LFN) YES (for all the files)
listFileLumis(block_name=blockName, validFileOnly = 1) NO (not even for the valid file)
listFileLumis(block_name=blockName, validFileOnly = 0) NO (not even for the valid file) <---- This is wrong IMO; should give me the info for all files.
listFileLumis(block_name=blockName) YES (for all the files)
I don't want to argue if whether when validFileOnly = 1 I should get the lumis info for the file I have in 'valid' state in my INVALID dataset. That is the discussion Eric, Stefano, Yuyi and others will have about what should DBS do in this case. My point here is just that listFileLumis(block_name=blockName, validFileOnly = 0) should have given me the lumis info as it does listFileLumis(block_name=blockName).
—
Reply to this email directly or view it on GitHubhttps://github.com/dmwm/WMCore/pull/6056#issuecomment-120057217.

Yuyi, I will give the details again of the dataset I used for my test in the DBS issue you opened.
Once you fix listFileLumiArray to accept block name:

which of the two methods (listFileLumis or listFileLumiArray) would you recommend us to use when querying with block name?
would there be any case where using listFileLumis is recommended instead of listFileLumiArray?

I will change back my second commit to query per block.

Ok, done. Went back to query per block, went back to use listFileLumis instead of listFileLumiArray sine the last doesn't accept block name as input, but removed the validFileOnly argument from listFileLumis so that now it will return the lumis information for all files in the block and I added an if statement that will filter out invalid files in case validFileOnly = 1.

Thanks Andres,
listFileLumi can be used same way as  listFileLumiArray as long as you don’t use a long list of LFN when I fixed the block name with listFileLumiArray. The underline code (query) for both APIs are the same so there is no difference for the block name call. For the simpleness of your code, maybe just use on API everywhere. That said if you don’t call list of lfn,  any of the two is fine. If you use list, then just use lisFileArray everywhere.
Cheers,
Yuyi
From: Andres Tanasijczuk <notifications<EMAIL_ADDRESS>Reply-To: dmwm/WMCore <reply<EMAIL_ADDRESS>Date: Friday, July 10, 2015 at 5:46 AM
To: dmwm/WMCore <WMCore<EMAIL_ADDRESS>Cc: Yuyi Guo <yuyi<EMAIL_ADDRESS>Subject: Re: [WMCore] Allow to get non-valid files from DBS in listDatasetFileDetails. (#6056)
Yuyi, I will give the details again of the dataset I used for my test in the DBS issue you opened.
Once you fix listFileLumiArray to accept block name:

which of the two methods (listFileLumis or listFileLumiArray) would you recommend us to use when querying with block name?
would there be any case where using listFileLumis is recommended instead of listFileLumiArray?

—
Reply to this email directly or view it on GitHubhttps://github.com/dmwm/WMCore/pull/6056#issuecomment-120379590.

Beginning pylint and unit tests.
See https://cmssdt.cern.ch/jenkins/job/DMWM-PR-test/116/ for details

I'm going to merge this as requested in the CRAB3 meeting. It may not be needed down the road.


UI elements appear to get affected by the backdrop

Upon using any effect (Mica and Acrylic tested), UI elements get messed up.
Right half is W10 for reference:

Note the dropdown part looks fine:

This may be due to it being in a VMware VM, however it has no issues with effects in explorer windows etc.
Tested on a fresh WPF .NET Framework 4.7.2 project in a 22H2 VM and 21H2 VM with MicaWPF v4.8.10.
MainWindow.xaml:
<mica:MicaWindow x:Class="WpfTestingV2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTestingV2"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525"
        xmlns:mica="clr-namespace:MicaWPF.Controls;assembly=MicaWPF" >
    <Grid>
        <Button Width="100" Height="70" Content="TestButton" Background="Red" Margin="0,0,0,40"></Button>

        <ComboBox MaxWidth="130" Margin="0,80,0,0">
            <ComboBox.Items>
                <TextBlock Text="Test"></TextBlock>
            </ComboBox.Items>
        </ComboBox>
    </Grid>
</mica:MicaWindow>

MainWindow.xaml.cs:
using MicaWPF.Controls;

namespace WpfTestingV2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : MicaWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

App.xaml (I did try MicaLight.xaml too):
<Application x:Class="WpfTestingV2.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfTestingV2"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!-- Note you can change this one to MicaLight -->
                <ResourceDictionary Source="pack://application:,,,/MicaWPF;component/Styles/Themes/MicaDark.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MicaWPF;component/Styles/MicaWPF.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Normally I have a UI refresh routine for that it should normally fix it upon theme change I will investigate.

Not sure if I'm understanding correctly, but this happens regardless of any theme change, and is an issue on app startup.
Thanks for looking into it :)

The controls are semin transparent if you wanna change the theme use the
ThemeService.Current.ChangeTheme(WindowsTheme.Light); ?
https://github.com/Simnico99/MicaWPF/wiki/Change-Theme-or-Accent-color#changethemewindowstheme

I tried that, and it changes the theme alright, but the issue still persists with the messed up buttons.

WpfTestingV2.zip
Here's the project files incase you're unable to replicate the issue. Please do let me know if you're able to replicate it or not.

Update: Setting WindowStyle to None and AllowsTransparency to true fixes the issue, however that causes bigger issues. (No rounded corners, etc.)``

This is the result I get when I run your test no modifications:

Also to update the colors you should use:
AccentColorService.Current.UpdateAccents(System.Windows.Media.Color.FromRgb(255, 0, 0));
And for the button use the following style:
Style="{StaticResource MicaWPF.Styles.AccentedButton}"

I see. Well thanks for looking into it! I suppose it's related to VMware then. I'll comment with an update confirming that once I have a bare metal W11 system to test it on.
P.S: You might want to consider testing this yourself in a VMware VM, as it seems to be an issue with MicaWPF and VMware specifically. (cough there are lots of working VMware Workstation Pro keys on github)


Finish implementation of CLDR number formatting

The basic infrastructure for implementing number formatting was introduced in Lens with commit 5997047.  Since then, almost all features needed to format a number has been added. In fact, the formatter is actually present and working:
As of commit 6fed2e3 in master, this code produces the expected output of 10,00,00,000.124
rules, fractional_rules, metadata = CLDR::Numbers::PatternParser.new("*x #,##,##0.###").parse
formatter = CLDR::Numbers::PatternFormatter(CLDR::Languages::EN).new(rules, fractional_rules, metadata, 100000000.12385)
formatter.format() # => 10,00,00,000.124

However, despite all this there's still quite a few crucial features missing.

[ ] Explicit plus signs and negative patterns
[ ] Minimum grouping digits
[ ] Significant digits
[ ] Scientific notations
[ ] Rounding
[ ] Padding
[ ] Currency symbols
[ ] Fractional grouping

A better public API should then be constructed before we can push it out to version 0.2.

Implemented parsing for significant figures, padding and fractional grouping in commit 46df2ab.

Implemented parsing for subpattern and explicit plus-minus signs with commit ba67656e5281b069f04de985f5a42d47e7b47f7c


[iOS] Unable to load class BFTaskCompletionSource. Did you link Bolts.framework?

I get the error after the app becomes inactive

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unable to load class BFTaskCompletionSource. Did you link Bolts.framework?'
*** First throw call stack:
(
	0   CoreFoundation                      0x0000000103303e65 __exceptionPreprocess + 165
	1   libobjc.A.dylib                     0x0000000102507deb objc_exception_throw + 48
	2   qplaces                             0x000000010148126b -[FBSDKAppLinkResolver initWithUserInterfaceIdiom:] + 0
	3   qplaces                             0x0000000101481194 +[FBSDKAppLinkResolver initialize] + 60
	4   libobjc.A.dylib                     0x0000000102508bff _class_initialize + 679
	5   libobjc.A.dylib                     0x000000010250ed23 lookUpImpOrForward + 176
	6   libobjc.A.dylib                     0x000000010251d8bb objc_msgSend + 187
	7   qplaces                             0x000000010163ae39 -[TFApplicationReader visit:] + 166
	8   qplaces                             0x0000000101630f5d -[TestFairy init] + 783
	9   qplaces                             0x000000010163a913 __27+[TestFairy sharedInstance]_block_invoke + 38
	10  libdispatch.dylib                   0x00000001068fc49b _dispatch_client_callout + 8
	11  libdispatch.dylib                   0x00000001068e7e28 dispatch_once_f + 543
	12  qplaces                             0x000000010163a8eb +[TestFairy sharedInstance] + 102
	13  qplaces                             0x000000010163127e +[TestFairy pause] + 31
	14  qplaces                             0x0000000101367753 __27-[RCTTestFairyBridge pause]_block_invoke + 35
	15  libdispatch.dylib                   0x00000001068dbe5d _dispatch_call_block_and_release + 12
	16  libdispatch.dylib                   0x00000001068fc49b _dispatch_client_callout + 8
	17  libdispatch.dylib                   0x00000001068e42af _dispatch_main_queue_callback_4CF + 1738
	18  CoreFoundation                      0x0000000103263d09 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
	19  CoreFoundation                      0x00000001032252c9 __CFRunLoopRun + 2073
	20  CoreFoundation                      0x0000000103224828 CFRunLoopRunSpecific + 488
	21  GraphicsServices                    0x0000000108b06ad2 GSEventRunModal + 161
	22  UIKit                               0x0000000104d2d610 UIApplicationMain + 171
	23  qplaces                             0x000000010136a6ef main + 111
	24  libdyld.dylib                       0x000000010693092d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

I use FacebookSDK in the app (via this module)

Any updates for this? Error still appears for 1.7.0

Hi @xxsnakerxx were you able to figure out the problem?

@vijaysharm I've just added Bolts.framework https://github.com/xxsnakerxx/react-native-social-auth/releases/tag/0.5.0 and now all works fine


Callout Title / Content: Icon's Misalignment when an Icon is present in a Link (v2.12.0)

Describe the bug
Within a callout's title or a callout's content, a link with an icon is shifted roughly by a half to the bottom while it is perfectly align in the body's text for example/
To Reproduce
Steps to reproduce the behavior:

Create a callout (for example > [!faq])
Add a link towards a note that has an icon embedded by Iconize
And the bug is appearing whatever the view mode used: "Live preview" / "Reading"

Expected behavior
Having the same alignment of the icon either in the body of a note or in a callout.
Screenshots

HW / Versions used
Device type: PC
OS: Windows 11
Obsidian Version: 1.5.12
Obsidian Installer Version: 1.5.12
Iconize version: 2.12.0

This issue should be resolved with v2.12.1.

Thank you very much. It works perfectly now!
Have a nice day!

Thank you very much. It works perfectly now!
Have a nice day!

Thank you, you too! :)


Add documentation

Hi, this is a nice library, thanks for working on it.
I could add some documentation to the readme as I had to go through the code to understand the automatic validation with the attribute.
Would a PR be ok?

@rossdonald
Yes, that would be great.

PR #2


Another issue: if you have an annotation that spans multiple horizontal widths, it would be nice if when you grab the rightmost handle and drag all the way to the right, it scrolls the spectrogram to the right

if you have an annotation that spans multiple horizontal widths, it would be nice if when you grab the rightmost handle and drag all the way to the right, it scrolls the spectrogram to the right


[WIP] Ast scanner module

@JimmyRojas @marcocdlv this is my progress for now

please add documentation for class, class member, methods, so on

(2) please add documentation for class, class member, methods, so on

@JimmyRojas @marcocdlv @ziur please review my changes.

see some comments please..

@JimmyRojas @marcocdlv solved observations.


Allow user to set individual photos as private within a public album

(disclaimer: I'm a bit new to github so if this belongs somewhere else let me know)
Basically I think it would be extremely helpful if there was a way to switch individual photos to private within an album that is public. Example use case: want to show most of my vacation photos but not the ones that are family shots, etc.

This sounds like a great feature, but I'm wondering what would be the easiest way to implement this. A complex selection could be confusing. How about a "Exclude photos: "

I like the tags idea as well!

This might conceptually overlap with #254.

I like the tag-based idea as well.

This issue will be closed because I'm not actively working on Lychee anymore. The repository of Lychee will stay available, but the main development continues under the Lychee Organisation. A fork maintained by the community. Important issues have been migrated. Feel free to re-add your issue(s) when necessary.


feature: update communities page

Closes #1292
Moves Support Page to nextjs
Adds communities section
@race-of-sloths

@flmel Thank you for your contribution! Your pull request is now a part of the Race of Sloths!
Do you want to apply for monthly streak? Get 8+ score for a single PR this month and receive boost for race-of-sloths!

Current status: waiting for scoring
We're waiting for maintainer to score this pull request with @race-of-sloths score [0,1,2,3,5,8,13] command. Alternatively, autoscoring [1,2] will be applied for this pull request
What is the Race of Sloths

Race of Sloths is a friendly competition where you can participate in challenges and compete with other open-source contributors within your normal workflow
For contributors:

Tag @race-of-sloths inside your pull requests
Wait for the maintainer to review and score your pull request
Check out your position in the Leaderboard
Keep weekly and monthly streaks to reach higher positions
Boast your contributions with a dynamic picture of your Profile

For maintainers:

Score pull requests that participate in the Race of Sloths
Engage contributors with fair scoring and fast responses so they keep their streaks
Promote the Race to the point where the Race starts promoting you
Grow the community of your contributors

Feel free to check our website for additional details!

Bot commands

For contributors

Include a PR: @race-of-sloths include to enter the Race with your PR

For maintainers:

Invite contributor @race-of-sloths invite to invite the contributor to participate in a race or include it, if it's already a runner.
Assign points: @race-of-sloths score [1/2/3/5/8/13] to award points based on your assessment.
Reject this PR: @race-of-sloths exclude to send this PR back to the drawing board.
Exclude repo: @race-of-sloths pause to stop bot activity in this repo until @race-of-sloths unpause command is called

❌ PR inactive
This PR has been inactive for two weeks. It's now marked as stale.

[!TIP]
If you think it's a mistake, you can restart the bot with include command to proceed 🔄


Python solution for "row with max ones in a matrix " in DSA 450

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.

Link to the problem : https://practice.geeksforgeeks.org/problems/row-with-max-1s0023/

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Please assign me this issue

It is giving 404 not found error when visiting that link. Please check.

Link for this problem  : https://practice.geeksforgeeks.org/problems/row-with-max-1s0023/1

Cool. You can go ahead @dsrao711 !


How to add new sample to dart pad.

I want to contribute to the dart pad by adding my Tic-Tac-Toe game into samples (https://dartpad.dev/d0cc86ebee39474f97d3c079c7437752).
How can I contribute? I read the CONTRIBUTION.md file but it seems outdated.

First off, your tic-tac-toe sample is great. There's no mystery why it got so much love on Twitter last week. 😄
The sample dropdown is tricky, though. When we put a sample into it, folks kind of assume that the DartPad maintainers have given that sample some kind of special status, as if we like it more than the others that people have written. In addition, if we decide to rework the list and take out a sample, folks may wonder if we no longer think that sample is any good.
This puts us in an awkward position, where we'd like to showcase samples from people all over, but don't want anyone to think we're playing favorites or looking down on anyone's work.
So, I propose an alternate solution!
There is a very popular repo called Awesome Flutter that serves as an index for Flutter samples and other resources. People submit PRs to it with their stuff, and it's a really useful index.
As far as I know, there is no "Awesome DartPad" repo yet. You could set one up, add your tic-tac-toe sample as the first link, and encourage people to add their cool DartPad links there. It could ultimately becomes a big index like Awesome Flutter and serve an important role in the Flutter community.
What do you think? If this appeals to you, I'm happy to help spread the word once it's created.

Thanks a lot, @RedBrogdon for praising my sample!! I'm glad you like it.
To be true I was thinking to do something like that, but I wasn't sure. I think it's great to have something like "Awesome DartPad". I'll start working on it soon.

Glad to hear you like the idea! Let me know when you've got it up on GitHub and I'll do whatever I can to spread the word.

Hey @RedBrogdon!! I need a suggestion regarding this. Should I create a Github Repo like https://github.com/Solido/awesome-flutter or should I go with something like https://itsallwidgets.com/ or codepen.io website where people can add their link and description of there dartpad sample?
Thanks!!

If it were me, I would just create a GitHub repo, since it's so much easier. You could always transition to something more sophisticated later on if you have the time.

Thanks a lot, @RedBrogdon for your suggestion. I've created the Awesome DartPad repo and added my Tic-Tac-Toe sample there. For now, I've categorized the dartpad samples into two categories. One is dart samples and the other is Flutter samples. I would love to get your feedback and how can I make this repo better.

Hey, @RedBrogdon Is there a way to embed dart pad in Github Readme.md file?

I don't think there's any way to embed an iframe in a GitHub README. If your thought was to embed live DartPad editors for each of the links, once your repo got pretty big you'd probably crash our servers with all the traffic. :)
I think what you have looks really good. There are a couple things I'd suggest, though:

Consider adding the name of the contributor for each DartPad.
Consider also adding the date it was added to the list.
Consider adding a contributor's guide similar to the one AwesomeFlutter uses.

That way people will know how to submit pull requests with their own DartPad links for you to approve.

Thanks a lot, @RedBrogdon for these suggestions. I've made changes to the repo and created a Contribution Guide.
My next plan is to have as many good DartPad samples in it.


Folder Class Settings

Enhance Request:  Can there be a 'Folder Class Settings' button.
Currently if Folder Display is set to anything but 'All' - then in order to change folder class one has to first set display to all, then go back to folders - make class changes to previously not displayed folder - then go back to folder display settings.
For convenience it would be nice to have a one-button Folder Class Edit button which shows all folders, displayed or not.
thanks!!
Environment
K-9 Mail version: 5.6.0
Android version: Pie / 9
Account type (IMAP, POP3, WebDAV/Exchange): imap

See #2669


Handling a Multi-Process API

How does bookshelf behave under these conditions? How best to handle doing this? I'm relatively new to using Bookshelf and ORM's in general.
var os = require('os'),
    http = require('http'),
    cluster = require('cluster');

if (cluster.isMaster){
  for (var i = 0, l = os.cpus().length; i < l; ++i){
    cluster.fork();
  }
}else{
  // Setup Bookshelf, etc, and an Express RESTful API
}

I image a solution involving redis, somehow syncing the models, a combination of transactions/locking with every interaction, and/or anything really, I'm at a loss.
Primarily, is it easy to share models between child processes? I can't seem to find an example.

Check out issue #324 and see if it helps answer your question. If not, you could try it and report any issues that potentially show up. I'd like to give you a better answer but this is the best I can do without ever having tried bookshelf on a multi-process app.

Closing this for lack of activity. If you need any further clarification about this issue we can reopen it.


Fix panic in debug mode

The nix change is necessary in order to upgrade bitflags to 1.3 - there was a whole mess of dependency stuff where nix 0.22.0 requires just bitflags ^1.1, but 0.22.{1,2} requires bitflags <1.3 - rustyline only requires nix 0.22.0, so upgrading our nix requirement lets cargo figure out a solution.

Oh, and the specific panic I was getting was an assertion failure on is_created_with_flags(), since I think it's possible for rustpython-derive to be compiled not in debug mode but the vm to be compiled in debug mode, so moving the cfg() inside quote!{} fixes that.


check poison records after decryption for mysql [T685]

move detecting poison records after failed decryption of acrastruct
add fast check on block size to prevent extra decryption poison records with zone mode on

Great!
Note for future us:
This PR supplements #230


Cordova webview height reduced to 0 on android

On Android, when the scanner is showing, the cordova webview height is set to 0px.  The html/body elements are not transparent as the documentation says.  It's instead set to 0 height.  This prevents displaying any controls or guides for the scanner.  This makes the plugin unusable on Android.

I agree, the same on iOS.
The height is 0, I pointed the camera to a QR code, it was read (without seeing the camera view).


Change the GitHub link on the website to the core repository

On the litmuschaos.io website, the GitHub link points to https://github.com/litmuschaos/. It should point to https://github.com/litmuschaos/litmus

https://github.com/litmuschaos/website-litmuschaos/pull/78
Thank you @arkajyotiMukherjee

Tested, working.


Wrong deck exported on the Website

Bug Description:
On the website, I tried to find and export a deck just to visualize and export another.
The decklist is correct but the statistics that are displayed and the export list are of an entirely different deck.
To Reproduce:
Steps to reproduce the behavior:

Go to https://mtgarena.pro/decks/.
Select craftable decks.
Order by descending W/L ratio.
Select a deck.
The selected deck and the visualized one are different.

Expected behavior:
Visualize and export the selected deck.
Screenshot:

Additional context:
In my case, the selected deck was "Mono Red Aggro" by no-one (Null) posted on Feb 15, 2019.

Thank you for the message! We will investigate your issue.


Improve documentation for data export

This change describes how to export findings for single applications. So far, the documentation only covered entire workspaces.
TODOs

[ ] Tests
[x] Documentation

Hello @henrikplate, should I merge and deploy?

Hi Alessandro,
Yes, that'd be great, thank you in advance :)
Cheers, Henrik


Cleared up inconsistent language.

The short descriptions for --service-cidr and --docker-bridge-address are inconsistent. Both require a CIDR notation IP range. However, while the description of --service-cidr call it a CIDR notation IP range in the --docker-bridge-address description it is mentioned as an IP address and netmask. I've noticed this creates confusion among less experienced users.

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR has modified HISTORY.rst describing any customer-facing, functional changes. Note that this does not include changes only to help content. (see Modifying change log).

[x] I adhere to the Command Guidelines.

@klmz I agree it's confusing, but this is the language we meant to use. The docker bridge is not specifically being used as a CIDR in this context.
(I tried to use language identical to yours in the original CLI code and swagger spec but the team had me revert it.)
cc: @slack @sauryadas @JunSun17

@JunSun17 I see.  So what is mentioned at the link you mention is actually a much more accurate description right? So let's change it to that then? I'll update the PR.
I now realize that the long description actually explains a lot. However, the long description cannot be found on, for instance, this page: https://docs.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-create


Licencing

Hi,
This is great template and I would love to contribute and build on top of this.
However, I would need to add the MIT licence to be able to work with this!
Jed

Thanks for Merging the PR.
It would be really cool to make it work for multiple bands all from a unified template.
What is your vision for the future the project?
Cheers
Jed

Hi Jed
I was thinking to add an integration with an headless CMS, probably WordPress or Strapi, to make content changes. Also would like to add some internal pages.
Yeah it would be cool to make the template work for bands of different genres, feel free to develop your ideas further on a new branch if you wish.
Cheers
Stefano


Allows only terms in THM?

@jonsterling

@favonia Can you explain what you mean or propose?

Users can only prove TRUE judgments in THM.

@favonia Oh, then I'm ok with that idea.

Actually, I don't care about this anymore. I wanted this because of the special level assignment needed by #466. Feel free to reopen this.

Ok! Eventually it will get done as a side effect of other tasks, but we don’t need to track it.

On Nov 24, 2017, at 1:14 PM, favonia (Sai-hong サイホン<EMAIL_ADDRESS>wrote:
Actually, I don't care about this anymore. I wanted this because of the special level assignment needed by #466. Feel free to reopen this.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.


popupconfig: adjust to new-window event replacement

See https://www.electronjs.org/docs/latest/breaking-changes#removed-webcontents-new-window-event

@saghul please review if you have time

I'd like @quitrk to take a look since we need to integrate with other window handlers in 8x8 apps and we need to keep that working.

@quitrk can you please take a look? Thanks in advance!

@quitrk as the new-window event is removed since Electron 22 (and we are now at 25), and the current popupsconfig code still relies on it, can you please take a look if this replacement PR looks good from your perspective?

@csett86 looks good to me

Thank you @quitrk


[Docs] Cherry pick #2285 documentation typo fix

Thanks to @keithcallenberg's contribution in #2285.

Coverage remained the same at 52.647% when pulling 8e9503bf8abf8eed068b323a6a084783b9513772 on xiongyf/cherry-pick into<PHONE_NUMBER>4f07eeb9287667872a66956df386b7 on master.


Flow parser cannot parse simple Literal in Parenthesis.

The following code makes the flow-parser fail. All other parsers have no problem with it.
("not a directive");

The message I receive is:
Non-error thrown with value: [ 0,
  [ 248, aw { t: 0, c: 'Failure', l: 7 }, -3 ],
  aw { t: 0, c: 'Nooo: T_LPAREN\n', l: 15 },

ASTExplorer with flow also fails (see dev console):
http://astexplorer.net/#/2DM4QE8FCf
Noticed this while working on babel/babylon#277 and using the flow-parser as reference parser to compare the ast from babylon to.

thanks, will fix this before 0.39!


why not add auth in docker-compose environment ?

can you elaborate? i do not understand what/why you want to add this. Provide som example, docs, reason, why.

I see no need for this in the public version of the repo. If you want to submit some work that adds support for this then please open a PR with the modifications.


angular cli setup

Hi I'm trying to setup pug with angular cli version 1.0.0-beta.21 but I'm getting:

src/app/app.component.pug Unexpected token (1:3) You may need an appropriate loader to handle this file type.

Steps I followed:

Create basic angular cli app
install pug "npm i -save-dev pug
install pug-ng-html-loader "npm i --save-dev pug-ng-html-loader"
install pug-plugin-ng "npm i --save-dev pug-plugin-ng"
remove app.component.html
create app.component.pug
in app.component.ts replace templateUrl: './aa.component.html', with 'template: require('./app.component.pug')'
run ng serve

Should I add reference to pug-plugin-ng anywhere else in any of the angular cli files like angular-cli.json?
Maybe small guide would be helpful.
Thanks

I'm gonna try and see if I can get a working example somehow. I must admit so far I hadn't gotten Pug working with angular-cli, though I'm aware of how ShadowManu forked it, and though I tried a variant closer to what I was used to myself.
Nevertheless, I'm running in a Windows environment and wasn't able to get it to recognize the ng dist in the other directory. I tried with Linux subsystem for Windows, but that ran into its own issues.
In your current example the obvious issue appears to be that you're running the stock version of angular-cli, which hasn't actually included any Pug support (as ShadowManu's PR has been ignored for lack of docs or tests).
I wish fixing things through angular-cli.json were supported, but as it stands, they do no let you configure their Webpack settings, which I personally see as the first thing they should improve on, though even then I'm not sure if that could in itself take care of webpack loaders not natively installed on their side, so that might've complicated things.
I also tried just making the edits in my globally installed copy of angular-cli, but somehow hadn't had luck with it yet. That said, technically if you mimick our adjustments on your globally installed copy, for all I know that should work. Alternatively, you might try to globally install ShadowManu's fork, which allegedly someone else got working as well, though that isn't currently using pug-plugin-ng yet by default. That said, that probably wouldn't be the hard part.

I thought there was nice and easy way to add this plugin to the original angular-cli. It looks like we will have to wait little bit longer for the official solution. For now I'm using Webstorm which have watcher option that watches for pug files and automatically compiles them to html. I'll keep my eye on the angular-cli pug support.
Thanks for your effort.

Just out of curiosity, does it matter make a difference that you do
loader: "pug-html"
instead of
loader: "pug-html-loader"
just curious.

@mbonski: Yeah, I've felt a bit frustrated with my attempts at trying pug with angular-cli so far as well, although apparently it's possible. I also hope they'll accept his PR.
@TaylorDennisLee: AFAICT Webpack should recognize both notations.

@mbonski: I got some help on this from @TaylorDennisLee, and got it to work as follows:
git clone -b pug-html https://github.com/tycho01/angular-cli.git
# alternative: git clone -b pug https://github.com/zoitravel/angular-cli.git
cd angular-cli
npm link
cd PATH/TO/MY/PROJECT
npm link angular-cli
# in component: templateUrl: './my_pug_file.pug',
ng serve

Excellent work here @tycho01
Got it to work with the latest CLI with this:
{ test: /.(pug|jade)$/, loader: 'apply-loader' },
{ test: /.(pug|jade)$/,
  loader: 'pug-loader',
  query: { doctype: 'html', plugins: [require('pug-plugin-ng')] },
},

If you use the script I made in this article here: https://medium.com/@MarkPieszak/using-pug-or-jade-templates-with-the-angular-cli-9e37334db5bc
You can just replace const pug_rule with the below (in the file you make)
const pug_rule = `\n
  { test: /\.(pug|jade)$/, loader: 'apply-loader' },
  { test: /\.(pug|jade)$/,
    loader: 'pug-loader',
    query: { doctype: 'html', plugins: [require('pug-plugin-ng')] },
  },`;

@mbonski @TaylorDennisLee

@tycho01 Maybe you'd know of a good way to fix this, but for some reason, include still doesn't work inside Pug files with this setup... Tried yesterday for the longest time and it was driving me nuts. If you have any ideas, I'm all ears!

@MarkPieszak: good question -- I haven't tried enough in that area. The loader had a note on includes, though I'm not sure that was the issue. Could it be it's unaware of the current/base file path in this setup?


Ghidra directory name in user's home directory

I was recently asked to help troubleshoot why this script was not working correctly. When I attempted to install this on my Manjaro VM, using Ghidra version 9.2.3, I found that the home/{user}/.ghidra/ no longer contained .ghidra_version_PUBLIC. It appears that they have changed it to .ghidra_version_DEV. Now, this could simply be the fact that I got it from the Arch repo instead of installing it manually, however, it appears the same is true when installing this on Kali using Ghidra version 9.1.
It was simple enough to resolve. I just needed to go to line 96 of install.py and change _PUBLIC to _DEV. However, it might be a good idea to add this in. Again, I do not know if this is version-dependent or if it is just certain installations. I can add some checks to the script to determine if the directory is _PUBLIC or _DEV with a pull request if you would like.
For now, anyone who runs into an issue with the script being unable to locate /home/user/.ghidra/.ghidra_{version}_PUBLIC/preferences, you will want to navigate to /home/user/.ghidra/ and make see if you have .ghidra_9.2.3_PUBLIC or .ghidra_9.2.3_DEV. If you have _DEV, you can resolve the issue by opening install.py and changing line 96 from _PUBLIC to _DEV.

Sorry for the long delay, this is fixed now!


Export and import jar file

According to the description, the goal is to export (or create, respectively) a jar file from some library project and to import that jar file into some root project.
Unfortunately, the library sources are directly imported and no jar file is created.
I would appreciate if the import and export jar tasks can be added to the tutorial.

We keep the guides as short as possible, to make them doable in 15 minutes. Also, that's outside the realm of spring.


[PP] KeyError in remove_tests

This is using dbt v0.20.1-rc1.
I haven't been able to identify root cause, but I get this error when switching from the main branch in our internal analytics project to another working branch (try-partial-parser) that's 1 commit ahead, 14 commits behind.
Weirdly, the error seems to crop up on a test/model that are completely untouched by the changes in each branch, except that the test is defined elsewhere in a yml file that has some minor edits in the main branch.
2021-08-09 11:52:02.164951 (MainThread): Partial parsing enabled: 1 files deleted, 2 files added, 4 files changed.
2021-08-09 11:52:02.170847 (MainThread): Partial parsing: added file: fishtown_internal_analytics://models/staging/snowplow/raw/current/dbt/current_snowplow_partial_parser.sql
2021-08-09 11:52:02.171018 (MainThread): Partial parsing: added file: fishtown_internal_analytics://models/marts/dbt/dbt_partial_parser.sql
2021-08-09 11:52:02.171302 (MainThread): Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10958dfa0>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10958df70>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10958df10>]}
2021-08-09 11:52:02.171526 (MainThread): Flushing usage events
2021-08-09 11:52:06.365964 (MainThread): The 'warn' method is deprecated, use 'warning' instead
2021-08-09 11:52:06.366286 (MainThread): Error sending message, disabling tracking
2021-08-09 11:52:06.366594 (MainThread): Encountered an error:
2021-08-09 11:52:06.366857 (MainThread): 'test.fishtown_internal_analytics.not_null_fct_cloud_accounts_has_successful_session.f841b7dce3'
2021-08-09 11:52:06.427303 (MainThread): Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 125, in main
    results, succeeded = handle_and_check(args)
  File<EMAIL_ADDRESS>line 203, in handle_and_check
    task, res = run_from_args(parsed)
  File<EMAIL_ADDRESS>line 256, in run_from_args
    results = task.run()
  File<EMAIL_ADDRESS>line 406, in run
    self._runtime_initialize()
  File<EMAIL_ADDRESS>line 122, in _runtime_initialize
    super()._runtime_initialize()
  File<EMAIL_ADDRESS>line 79, in _runtime_initialize
    self.load_manifest()
  File<EMAIL_ADDRESS>line 66, in load_manifest
    self.manifest = ManifestLoader.get_full_manifest(self.config)
  File<EMAIL_ADDRESS>line 180, in get_full_manifest
    manifest = loader.load()
  File<EMAIL_ADDRESS>line 222, in load
    project_parser_files = partial_parsing.get_parsing_files()
  File<EMAIL_ADDRESS>line 125, in get_parsing_files
    self.change_schema_file(file_id)
  File<EMAIL_ADDRESS>line 467, in change_schema_file
    self.handle_schema_file_changes(saved_schema_file, saved_yaml_dict, new_yaml_dict)
  File<EMAIL_ADDRESS>line 513, in handle_schema_file_changes
    self.delete_schema_source(schema_file, source)
  File<EMAIL_ADDRESS>line 669, in delete_schema_source
    self.schedule_referencing_nodes_for_parsing(unique_id)
  File<EMAIL_ADDRESS>line 296, in schedule_referencing_nodes_for_parsing
    self.schedule_nodes_for_parsing(self.saved_manifest.child_map[unique_id])
  File<EMAIL_ADDRESS>line 308, in schedule_nodes_for_parsing
    self.remove_mssat_file(source_file)
  File<EMAIL_ADDRESS>line 291, in remove_mssat_file
    self.schedule_referencing_nodes_for_parsing(unique_id)
  File<EMAIL_ADDRESS>line 296, in schedule_referencing_nodes_for_parsing
    self.schedule_nodes_for_parsing(self.saved_manifest.child_map[unique_id])
  File<EMAIL_ADDRESS>line 308, in schedule_nodes_for_parsing
    self.remove_mssat_file(source_file)
  File<EMAIL_ADDRESS>line 290, in remove_mssat_file
    self.remove_node_in_saved(source_file, unique_id)
  File<EMAIL_ADDRESS>line 263, in remove_node_in_saved
    self.delete_schema_mssa_links(schema_file, dict_key, elem_patch)
  File<EMAIL_ADDRESS>line 646, in delete_schema_mssa_links
    self.remove_tests(schema_file, dict_key, elem['name'])
  File<EMAIL_ADDRESS>line 651, in remove_tests
    node = self.saved_manifest.nodes.pop(test_unique_id)
KeyError: 'test.fishtown_internal_analytics.not_null_fct_cloud_accounts_has_successful_session.f841b7dce3'

@gshank Could you take a look at this one when you get a chance? This has only come up once for me, but I was able to reliably reproduce it by switching between the two branches mentioned above.


Small speedup and adding more missing description messages for consistency.

Prevents tiny recomputations for replaces and concatenation.
Also adds missing description for signals, enums and constants similar to that of methods and properties.
Before:

After:

Requesting review.

Rebased.

Thanks for your contribution!
Due to the lack of activity here, I'm going to close this PR for now - feel free to request a reopen or submit a new PR if you want to continue working on it.


[codelab] The ripple does not work

Everything works as expected except the ripple. There are no errors being thrown, the inputs and buttons work as expected. It's just that there are no ripples on the button.

My bad. I was using the latest versions of the material lib, not 1.0.1.


One of the suggested WiFi dongles is unavailable

https://docs.resin.io/hardware/wifi-dongles/ has a link to a EP-N8531 dongle on Amazon, which says We don't know when or if this item will be back in stock.

Closed by https://github.com/balena-io/docs/pull/1672


Document rpm size reduction & ondemand-gems

https://osc.github.io/ood-documentation-test/ondemand_gems_rpm_in_release_notes/

We had a significant reduction in the rpm size (40%) and thus the resulting space taken up by an OnDemand install. I haven't determined the latter. A quick way to do that to include here? Otherwise is this okay?
If so I'll merge. I'll announce 1.7 tonight if you have no other objections to the documentation or the release announcement.

Maybe this can be in a different ticket, but now $GEM_HOME is important now because of this. That's what tripped up these folks who use a cgexec wrapper.
https://discourse.osc.edu/t/failed-upgrade-1-6-19-1-7-6-cannot-load-such-file-bundler-setup-loaderror/788/4

The size of OnDemand on disk for 1.7.10:
[root@web02 ~]# du -h -s  -x /var/www/ood/apps/sys /opt/ood
290M   /var/www/ood/apps/sys
1.5G   /opt/ood

Now some of that is stuff we don't publish since we install many apps and in some cases extra gems with those apps that are not a part of the public version.  RPMs themselves are highly compressed.  That du command could be used on fresh installs to determine size or compare the size of a docker container from OnDemand 1.6 to 1.7 (not yet built).

@treydock said he'd take this over

https://discourse.osc.edu/t/failed-upgrade-1-6-19-1-7-6-cannot-load-such-file-bundler-setup-loaderror/788/4

There is a lot wrong with how that got implemented, they bypass the ondemand SCL load entirely which is going to break a lot of things.  Not only does that break GEM_HOME it will also break GEM_PATH. I think instead of spelling out every environment variable that's important we need to tell people that they need to load ondemand SCL always to avoid issues.  I think that's maybe a different pull request as I'm not sure where that fits in as that's not something new to 1.7.

Realized for source installs maybe we do have to spell out environment variables or maybe provide SCL-like load script so we can still utilize our SCL load script.

For build from source it is reasonable for a site to build assets into vendor/bundle of the app repo as before. All the tricks we are playing with GEM_HOME are really specific to our SCLs and our rpms.


Hotfix/2020.1.3

Checklist

[x] the [contributor license agreement][] is signed
[x] commit message follows [commit guidelines][]
[ ] tests are included
[ ] screenshots are included showing significant UI changes
[ ] documentation is changed or added

Description of change
This is the third hotfix for 2020.1

I've restarted the failed travis jobs:

contribution - new ui
controls - new ui


Make Verify.SyncFusion work on Linux and OSX in addition to Windows

Is the feature request related to a problem
Verify.SyncFusion currently uses the Syncfusion.EJ2.PdfViewer.AspNet.Core.Windows nuget, which is a Windows-only nuget. So when using the Verify.SyncFusion nuget on a solution that is compiled and run on Linux, this exception occurs:
System.TypeInitializationException : The type initializer for 'Syncfusion.EJ2.PdfViewer.PdfiumNative' threw an exception.
---- System.DllNotFoundException : Unable to load shared library 'kernel32' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/opt/atlassian/pipelines/agent/build/test/Cillco.Service.DocumentProcessing.IntegrationTests/bin/Debug/net7.0/runtimes/linux-x64/native/kernel32.so: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.3/kernel32.so: cannot open shared object file: No such file or directory
/opt/atlassian/pipelines/agent/build/test/Cillco.Service.DocumentProcessing.IntegrationTests/bin/Debug/net7.0/kernel32.so: cannot open shared object file: No such file or directory
/opt/atlassian/pipelines/agent/build/test/Cillco.Service.DocumentProcessing.IntegrationTests/bin/Debug/net7.0/runtimes/linux-x64/native/libkernel32.so: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.3/libkernel32.so: cannot open shared object file: No such file or directory
/opt/atlassian/pipelines/agent/build/test/Cillco.Service.DocumentProcessing.IntegrationTests/bin/Debug/net7.0/libkernel32.so: cannot open shared object file: No such file or directory
/opt/atlassian/pipelines/agent/build/test/Cillco.Service.DocumentProcessing.IntegrationTests/bin/Debug/net7.0/runtimes/linux-x64/native/kernel32: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.3/kernel32: cannot open shared object file: No such file or directory
/opt/atlassian/pipelines/agent/build/test/Cillco.Service.DocumentProcessing.IntegrationTests/bin/Debug/net7.0/kernel32: cannot open shared object file: No such file or directory
/opt/atlassian/pipelines/agent/build/test/Cillco.Service.DocumentProcessing.IntegrationTests/bin/Debug/net7.0/runtimes/linux-x64/native/libkernel32: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.3/libkernel32: cannot open shared object file: No such file or directory
/opt/atlassian/pipelines/agent/build/test/Cillco.Service.DocumentProcessing.IntegrationTests/bin/Debug/net7.0/libkernel32: cannot open shared object file: No such file or directory
at Syncfusion.EJ2.PdfViewer.PdfiumNative.FPDF_InitLibrary()
at Syncfusion.EJ2.PdfViewer.PdfiumViewer.FPDF_AddRef()
at Syncfusion.EJ2.PdfViewer.PdfRenderer.LoadDocument(Stream fileStream, String password)
at Syncfusion.EJ2.PdfViewer.PdfRenderer.Load(Stream fileStream)
at VerifyTests.VerifySyncfusion.GetPdfStreams(PdfDocumentBase document, IReadOnlyDictionary2 settings, List1 pages)+MoveNext() in C:\projects\verify-syncfusion\src\Verify.Syncfusion\VerifySyncfusion_Pdf.cs:line 72
at System.Collections.Generic.List1..ctor(IEnumerable1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)    at VerifyTests.VerifySyncfusion.ConvertPdf(PdfLoadedDocument document, IReadOnlyDictionary2 settings) in C:\projects\verify-syncfusion\src\Verify.Syncfusion\VerifySyncfusion_Pdf.cs:line 21
at VerifyTests.VerifySyncfusion.ConvertPdf(Stream stream, IReadOnlyDictionary2 settings) in C:\projects\verify-syncfusion\src\Verify.Syncfusion\VerifySyncfusion_Pdf.cs:line 9    at VerifyTests.VerifierSettings.<>c__DisplayClass140_0.<RegisterFileConverter>b__0(Stream stream, IReadOnlyDictionary2 context) in //src/Verify/Splitters/Settings_Extension.cs:line 20
at VerifyTests.InnerVerifier.DoExtensionConversion(String extension, Stream stream, Object info) in //src/Verify/Verifier/InnerVerifier_Stream.cs:line 151
at VerifyTests.InnerVerifier.VerifyStream(Stream stream, String extension, Object info) in //src/Verify/Verifier/InnerVerifier_Stream.cs:line 94
at VerifyXunit.Verifier.<>c__DisplayClass7_0.<b__0>d.MoveNext() in //src/Verify.Xunit/Verifier.cs:line 74
--- End of stack trace from previous location ---
The above exception is from Bitbucket Pipelines, which builds and runs tests on Linux.
Describe the solution
The workaround I did was to add these lines to my .csproj-file:

The reason for the Conditions in the PackageReferences is that SyncFusion support staff indicates installing several of these nugets into the same project will cause problems and will not work (see https://www.syncfusion.com/forums/156778/how-to-use-pdf-viewer-with-asp-net-core-for-both-windows-and-linux-platform?reply=NtqA61). And I confirmed this, this really does not work.
There are several ways forward:

Include the above code in the documentation for this nuget, so people know that the nuget as-is is Windows only, but can be made to work for Linux and OSX
Modify the Verify.SyncFusion nuget to create three nugets: One each for Windows, Linux, and OSX (just like SyncFusion has done for the Syncfusion.EJ2.PdfViewer.AspNet.Core.* nugets)

Describe alternatives considered
I currently do not see any other alternatives than the two mentioned above. Which one of those to choose though, depends on the overall direction and strategy for this nuget project.
Additional context
Many CI solutions are Linux-based, so making this nuget just as functional on Linux (and OSX) as on Windows would increase the attractiveness of the nuget

happy to accept a PR for this


feature: Block Context

Changes

...
[ ] handle context of blocks nested in structured text fields
[ ] handle context of blocks in page partial layouts
[ ] document block context in docs/blocks-and-components.md

Associated issue
Resolves #114
How to test

Checklist

[ ] I have performed a self-review of my own code
[ ] I have made sure that my PR is easy to review (not too big, includes comments)
[ ] I have made updated relevant documentation files (in project README, docs/, etc)
[ ] I have added a decision log entry if the change affects the architecture or changes a significant technology
[ ] I have notified a reviewer

@decrek what do you think, worth exploring the concept of Block Context further or not worth the extra complexity it introduces?

@jurgenbelien I see a project where you introduced the concept of a "theme block" as a container for multiple blocks. Is that so blocks in the same container are context aware? Would this feature solve that same issue without the need for a theme block?

I came across a context provider. This might make things easier, especially for nested blocks: https://withastro-utils.github.io/docs/guides/context/

Stale for six months. Will still be available for reference. But for now, closing this PR.


Abstract out popovers

Currently they are stuck in weapons-manager.js, but it should be more like popover.js.

Done.


Support suboffsets in memoryviews

Currently suboffsets are not supported in memoryviews. This would be nice to have for use cases like Pillow's buffers.

This probably has a performance impact, but it's worth investigating. It mainly changes the way offsets are calculated, which is one big formula generated by the memoryviews code. PR welcome, but we might have to hide the support behind an explicit option somehow, depending on how well the C compiler can deal with it. We might have to try and benchmark different options, maybe also something like likely(!suboffsets) ? (simple calculation) : (complex calculation). But first get it right, then make it fast.


GoBGP backend does not work correctly if workloads across multiple hosts use IPs from the same /26

When using GoBGP, routes are not distributed correctly if workload IPs across different hosts are in the same /26.
calico@calico:~$ docker exec -it host1 sh
/ # ip route
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/16 dev eth0  proto kernel  scope link  src <IP_ADDRESS>
<IP_ADDRESS>/16 dev docker0  proto kernel  scope link  src <IP_ADDRESS> linkdown
<IP_ADDRESS> dev cali477fe74e236  scope link
/ # ip route
/ # exit
calico@calico:~$ docker exec -it host2 sh
/ # ip route
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/16 dev eth0  proto kernel  scope link  src <IP_ADDRESS>
<IP_ADDRESS>/16 dev docker0  proto kernel  scope link  src <IP_ADDRESS> linkdown
<IP_ADDRESS>/26 via <IP_ADDRESS> dev eth0
<IP_ADDRESS> dev cali40a01e5b70b  scope link
/ # exit
calico@calico:~$ docker exec -it host3 sh
/ # ip route
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/16 dev eth0  proto kernel  scope link  src <IP_ADDRESS>
<IP_ADDRESS>/16 dev docker0  proto kernel  scope link  src <IP_ADDRESS> linkdown
<IP_ADDRESS>/26 via <IP_ADDRESS> dev eth0
<IP_ADDRESS> dev calie3e75be44ef  scope link
/ # exit

Should have had:
Host1 IP=<IP_ADDRESS>; Workload=<IP_ADDRESS>
Host2 IP=172.17.03; Workload=<IP_ADDRESS>
Host3 IP=172.17.03; Workload=<IP_ADDRESS>
But suspect the <IP_ADDRESS>/26 route is mucking things up.

@robbrockbank Reproduced the issue. This is due to a lacking feature of calico-bgp-daemon.
I think I figured out what to implement, but I would like to hear your option before I proceed.
Below is my understanding. Could you check whether this is correct?
When the same /26 is assigned to multiple hosts, the prefix is only inserted to one place under etcd /calico/ipam/v2/host.
Here, we have two host running calico/node (backend bird), host1(ID: 41696fc7e17a) and host2(ID:287a548758f8).
Below is the items under path /calico/ipam/v2/host
$ etcdctl ls -r /calico/ipam/v2/host
/calico/ipam/v2/host/41696fc7e17a
/calico/ipam/v2/host/41696fc7e17a/ipv6
/calico/ipam/v2/host/41696fc7e17a/ipv6/block
/calico/ipam/v2/host/41696fc7e17a/ipv4
/calico/ipam/v2/host/41696fc7e17a/ipv4/block
/calico/ipam/v2/host/41696fc7e17a/ipv4/block/<IP_ADDRESS>-26
/calico/ipam/v2/host/287a548758f8
/calico/ipam/v2/host/287a548758f8/ipv4
/calico/ipam/v2/host/287a548758f8/ipv4/block
/calico/ipam/v2/host/287a548758f8/ipv6
/calico/ipam/v2/host/287a548758f8/ipv6/block

When we see the RIB and FIB of two hosts,
host1
$ docker exec -it host1 sh -c 'docker exec -it calico-node birdcl -s /var/run/calico/bird.ctl'
BIRD 1.5.0 ready.
bird> show route
<IP_ADDRESS>/0          via <IP_ADDRESS> on eth0 [kernel1 09:02:18] * (10)
<IP_ADDRESS>/26     blackhole [static1 09:02:26] * (200)
<IP_ADDRESS>/32     dev calie9ccb43ba0a [kernel1 09:02:26] * (10)
<IP_ADDRESS>/32     via <IP_ADDRESS> on eth0 [Global_172_17_0_3 09:02:37] * (100/0) [i]
<IP_ADDRESS>/16      dev docker0 [direct1 09:02:18] * (240)
<IP_ADDRESS>/16      dev eth0 [direct1 09:02:18] * (240)

$ docker exec -it host1 sh -c 'docker exec -it calico-node ip r'
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/16 dev eth0  proto kernel  scope link  src <IP_ADDRESS>
<IP_ADDRESS>/16 dev docker0  proto kernel  scope link  src <IP_ADDRESS> linkdown
blackhole <IP_ADDRESS>/26  proto bird
<IP_ADDRESS> dev calie9ccb43ba0a  scope link
<IP_ADDRESS> via <IP_ADDRESS> dev eth0  proto bird

host2
$ docker exec -it host2 sh -c 'docker exec -it calico-node birdcl -s /var/run/calico/bird.ctl'
BIRD 1.5.0 ready.
bird> show route
<IP_ADDRESS>/0          via <IP_ADDRESS> on eth0 [kernel1 09:02:27] * (10)
<IP_ADDRESS>/26     via <IP_ADDRESS> on eth0 [Global_172_17_0_2 09:02:37] * (100/0) [i]
<IP_ADDRESS>/32     dev cali7ca8dbee878 [kernel1 09:02:28] * (10)
<IP_ADDRESS>/16      dev docker0 [direct1 09:02:26] * (240)
<IP_ADDRESS>/16      dev eth0 [direct1 09:02:26] * (240)

$ docker exec -it host2 sh -c 'docker exec -it calico-node ip r'
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/16 dev eth0  proto kernel  scope link  src <IP_ADDRESS>
<IP_ADDRESS>/16 dev docker0  proto kernel  scope link  src <IP_ADDRESS> linkdown
<IP_ADDRESS>/26 via <IP_ADDRESS> dev eth0  proto bird
<IP_ADDRESS> dev cali7ca8dbee878  scope link

we can see <IP_ADDRESS>/26 is
only imported and advertised from host1. On host1, <IP_ADDRESS>/32 is also
imported from kernel, but not advertised due to his export policy.
$ docker exec -it host1 sh -c 'docker exec -it calico-node cat /etc/calico/confd/config/bird_aggr.cfg'
# Generated by confd
# ------------- Static black hole addresses -------------
protocol static {
   route <IP_ADDRESS>/26 blackhole;
}
# Aggregation of routes on this host; export the block, nothing beneath it.
function calico_aggr ()
{
  if ( net = <IP_ADDRESS>/26 ) then { accept; }
  if ( net ~ <IP_ADDRESS>/26 ) then { reject; }
}

However, as for host2, imported kernel route (<IP_ADDRESS>/32) is advertised.
This is also because of the export policy.
$ docker exec -it host2 sh -c 'docker exec -it calico-node cat /etc/calico/confd/config/bird_aggr.cfg'
# Generated by confd
# ------------- Static black hole addresses -------------
# No static routes configured.

# Aggregation of routes on this host; export the block, nothing beneath it.
function calico_aggr ()
{
}

Currently whole logic here (import kernel route, enforce export policy) is not implemented in calico-bgp-daemon. This is the reason why the issue is happening.
If my understanding is correct, I can implement the feature in calico-bgp-daemon.

@ishidawataru Yes, if I understand correctly the issue is that it isn't currently importing and re-exporting kernel routes.   I assume the current implementation just uses the aggregation block for routing?

@robbrockbank Thank you for the clarification. Yes, current implementation only uses the aggregation block. I'll try to fix this issue.


ENH: New logging framework for bluesky

Description

From issue #1185
Motivation and Context
Logging flow control on handler level and new logging Filter feature

How Has This Been Tested?
Right now, I'm using a simple script
import logging
from ophyd.sim import det1, det2
from bluesky import RunEngine
from bluesky.log import set_handler
from bluesky.plans import count
hd = set_handler(level='DEBUG')
RE = RunEngine({})
dets = [det1, det2]
RE(count(dets))

As I expect
[D 00:48:56.449      run_engine: 1734] [event] [d1e59f21-1e1c-4f13-ae2e-725cfbfc1d94] Emitted Event with data keys dict_keys(['det1', 'det2']) (uid='d1e59f21-1e1c-4f13-ae2e-725cfbfc1d94')

checklist

[x] Test script
[ ] .rst Document update
[x] logging message simplify and message pattern optimize

Superseded by #1293.


You might want this?  I took your fine work and automated the installation.

Hello -
I've taken the cmake.juce file and popped it into a python script that does all the hard work, and crudely updated the instructions.  It tested here okay.  I thought you might want it :)
cheers! Jim.

cool!


Better default namespaces

If you don't specify an elixir namespace, the generator puts files into the root namespace. This is troublesome, as different thrift modules can specify the same name for a struct / union / enum.
If no namespace is specified, we should use the thrift namespace as a default.

@scohen can you clarify what you mean by "the thrift namespace"?  Do you mean, literally, "Thrift" or whatever namespace is specified in the IDL file?

Tried it on some of the other generators (cpp, java, php) and found that they put things in the root namespace if there is no 'namespace' annotation for the given language. I think we should stick with that behavior.

@pguillory, but in our instance, that implementation is broken. If you put them in the root namespace, one version will overwrite the other.

What's the current thinking on this? We're adding elixir namespaces to our schemas?

I'm still of the opinion that not having a namespace shouldn't break things.
Imagine this scenario:
I have two files service_1.thrift and service_2.thrift.
They both have a struct RequestContext.
The last one that compiles wins. There can be only one request_context.ex. Now the service defined by service_1.thrift is broken.
The thing is, all of the other thrift generators will give you a default namespace of service_1 and service_2, so they won't have this problem.
It's worth noting that this is not a hypothetical problem.

I'm also finding myself going through our source code and adding
namespace elixir Maia

in a file called maia.thrift.

Another approach would be requiring the elixir namespace to be present in all schema files. I don't think that's the right solution, but I wanted to mention it here for completeness.

Here's what some of the other generators are doing when you don't specify a namespace.

cpp: root namespace
erl: creates a module, seems to ignore namespaces completely
go: creates a package
java: root namespace
js: root namespace
php: root namespace
py: creates a module, i.e. file
rb: root namespace

What we're doing at the moment is actually very similar to the Java generator, which generates a file per class. It overwrites the generated file if different thrift files use the same type name.

We could continue with our current (Java-like) behavior but also emit a warning about using the default root namespace.

I just don't see why the Java behavior is desirable at all.  It produces broken code. Worse, that code will fail at runtime, when the message is deserialized by the server or client, yielding a confusing and unhelpful TApplicationException.
I get why erlang does what it does, since it doesn't really have the concept of nested modules. Fun fact, I added erl namespaces in the as yet unreleased 0.10 which is why @pguillory doesn't see them.
I also don't see a reason for not using the file name as a default. That's consistent with how you reference entities in thrift and will always produce working code.
So far, I have yet to see an argument against this behavior other than "other implementations do it that way", which imo isn't much of an argument.
I'd be more ok if we detected a file being overwritten and failed hard, but that's worse than producing working code by default.

Ok. It won't always produce working code. If you have
/foo/bar.thrift
/baz/bar.thrift
And neither have a namespace, it'll fail.

I also stand corrected. 0.10 was released Tuesday.

It seems like it's within our parser's capabilities to detect that a symbol (struct/const/whatever) is being defined multiple times.  I think it would make sense to fail on that rather than fail on overwriting a file, since overwriting a file is going to happen every time someone compiles.

Yeah we should try to detect the collision itself. @jparise has the other project around storing metadata about generated files. What if we stored the path to the original .thrift file in that metadata. If it gets regenerated from the same .thrift file, that's fine, you're just recompiling. If it gets regenerated from a different .thrift file, we flag that as a probable namespace collision.
Also we should catch name collisions within the same file. Got bit by that yesterday. :/ But we can do that entirely in the resolver.

So, we ran into another issue today, one of our Thrift files defines a Node struct, and we plunk it in the default namespace, which means that it conflicts with the stdlib Node module.
This means we not only have to detect collisions between defined thrift files, but we have to detect collisions with all loaded modules.
I really think we should reevaluate the decision here.

I agree that we should never write files to the "root" namespace. That gives us two options:

Prefix all generated files with a static namespace (like Thrift.Generated) and append any custom namespace bits to the end of that.
Default to something like Thrift.Generated but allow custom namespaces to override it entirely.

(2) seems like the friendliest way forward.

It seems to me like this is just rope that a user is free to hang themselves with.  There's no way to know that a user won't clobber their own code or the namespace from some third party dependency. As long as our documentation makes the rules clear, it's really on the user to be responsible for this. There's nothing stopping a user from straight-up doing defmodule Node.

On Mar 14, 2017, at 1:59 PM, Jon Parise<EMAIL_ADDRESS>wrote:
I agree that we should never write files to the "root" namespace. That gives us two options:
Prefix all generated files with a static namespace (like Thrift.Generated) and append any custom namespace bits to the end of that.
Default to something like Thrift.Generated but allow custom namespaces to override it entirely.
(2) seems like the friendliest way forward.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

@dantswain  Other than the VM not starting?

@dantswain I'm actually pretty curious as to why this is so controversial; Wouldn't it be better to have a reasonable default that you can override? Something like: By default, generate in Thrift.Generated, but you can override to another module, or if you want the root Module.
I think we should start with the gun pointed away from the user's foot.  If the user wants to point it at their foot, so be it, but it doesn't have to be the default.

"Controversial" is a stronger word than I'd use :P  I think a default is probably fine (as you said: it points the gun away from the foot), but I still think nil (write to root namespace) should be an option in an ideal world.

Disallowing the root namespace takes away an entire dimension from the domain of outputs.

Adding code to disallow the root namespace doesn't guarantee that someone won't introduce a collision anyways.  Even in the stdlib there are namespaced modules.

Any kind of collision cop or validation adds code which in turn adds complexity.

I think defaulting to something like Thrift.Generated is fine, though.


module 'socket' has no attribute 'AF_BLUETOOTH'

when i try to use bluetooth socket qpython give me error module 'socket' has no attirbute 'AF_BLUETOOT', it correct work on Ubuntu Linux and Raspberry, but not work on QPython/Pythonista/Python for windows.
How i can solve this problem, or maybe rebuild python core with bluetooth support?


crystaldiskinfo: scripts create trash files in app directory

Scritps in pre_install field create a file DiskInfo.ini in app directory which conflicts with the persisted one, then it will be renamed to DiskInfo.ini.original

#4501 here is the solution, please review.


Keep session after refresh

Similare to this issue #17  (and many other posts) except i can't find any solution.
When i use login function it's fine and i look at the headers sent everything look right.
Access-Control-Allow-Credentials is set to true.
I can see cookies in the request header
and request payload contains my user.
i added this:
 angular.module('myModule', ['Devise'])
  .run(['Auth', function (Auth) {
    Auth.currentUser().then(function(user) {
      console.log(user);
      console.log(Auth._currentUser);
    });
  }]);

after login function i'm logged but when i refresh, Auth.currentUser() function  return an error.
and now, request payload contains an empty user.
i can see cookies in the resources tab of chrome developpers tools (XSRF-TOKEN and _back_session)
i'm lost here.

Check in your angular app if you have this line:
$httpProvider.defaults.withCredentials = true;

Thats send credentials on every request to the server in order to maintain credentials.

Yes, i've got this line.
And i can see credentials in the request headers.

It was a server issue.
I added this on rails.
allow do
  origins 'localhost:9000', '<IP_ADDRESS>:9000'
  resource '*',
  :headers => :any,
  :methods => [:get, :post, :delete, :put, :patch,  :head],
  :expose  => ['access-token', 'expiry', 'token-type', 'uid', 'client'],
  :max_age => 0
end

Now the headers are not empty.
I also use localStorage.

@FredHasselot could you please elaborate on how you used localStorage?


Fine-tune ESM model

Hi,
I want to do fine-tuning of the model using my own dataset. Is there away to run your model for this task?

This has already been discussed in issues #9, #11, and #12. Please check out the answers though and re-open one of those if you are still having issues.

This has already been discussed in issues #9, #11, and #12. Please check out the answers though and re-open one of those if you are still having issues.


finished task 1

adding  ✓ for task 1 taufiqsumadi @laymonage

You should've rebased (amend your commit in) your PR instead of creating a new one.
You created a new commit in your previous PR, and even though that's not the correct way, I could've squashed the commits into one. But then, you deleted the PR branch and I can't do anything about it.


Add refresh_interval to static_configs

Proposal
Use case. Why is this important?
Add refresh_interval to static_configs.
Now the logic behind static_configs is as follows:

if DNS is not available, then request a new IP
never again refresh IP from DNS

Now I have done on dns_sd_configs with relabel_configs, but this method seems redundant to me, periodically re-reading the DNS in static_configs seems logical and simple to me. Or do how to re-read in nginx with command nginx -s reload. Prometheus currently only rereads DNS on restart.
- job_name: swarm
  dns_sd_configs:
  - names:
    - host.lan
    type: A
    port: 9100
  relabel_configs:
    - source_labels: [__meta_dns_name]
      replacement: $1:9100
      target_label: instance

This is now how discovery works. If the targets are not changing, refreshing in the service discovery term would not disrupt  or update the scrapes.
dns_sd_configs seems the way to go.

We discussed this in our bug scrub and agree with @roidelapluie that this is most appropriately covered by dns_sd_configs.


How to remove message ?

I want to create authorization functional for user by password and password must be hidden from chat.
I needs to remove message from chat.
How to realize this functional?
Thx

Deleting messages is not possible. You could edit them instead to display Success or something similar.

I can to edit user message? For example, change characters like *****?

maybe send the password via inline?
so "@yourbotname (type password)"

Oh, sorry. Deleting another users messages is not possible. You could however use inline mode, like paOol just mentioned, or simply tell them to delete their message. Or use an auth service via link, but that might be overkill..

Switch to private message, get password there.

So:

It is not possible to delete any message, mostly another user's. You may want to request the feature.
It is not possible to edit another user's message. The bot can only edit messages itself sent. See Updating Messages for more information.

Therefore, you may:

Process such authorization requests in private messages i.e. msg.chat.type === "private". See Telegram.Chat.
Advise the user to edit or delete the message containing the password afterwards.

Hope that helps!


SDK21 template error in

source file:
#include <fstream>
#include <string>

int main() {
    const std::string d = "zzzz";
    std::ifstream a{d};
}

error log:
wasi-sdk-21.0$ ./bin/clang++ -std=c++17 /tmp/a.cpp  -c -emit-llvm
/tmp/a.cpp:7:19: error: implicit instantiation of undefined template 'std::basic_ifstream<char>'
    7 |     std::ifstream a{d};
      |                   ^
/home/x/Applications/wasi-sdk-21.0/bin/../share/wasi-sysroot/include/c++/v1/__fwd/fstream.h:24:28: note: template is declared here
   24 | class _LIBCPP_TEMPLATE_VIS basic_ifstream;
      |                            ^
1 error generated.

it can be compiled by g++ /tmp/a.cpp

probably https://github.com/WebAssembly/wasi-sdk/issues/373

thanks! i just used the preview version and this error is eliminated.


not work

after deploying on heroku bot not work in my number

have you scanned the session?

Yeah scan the session
Whatsapp connected
But bot not reply me

I think you installed it wrong

How to installed it correctly
Any full video step by step

I fork this repo and deploy heroku and then scan

I fork this repo and deploy heroku and then scan


fix: Changed the hint for JavaScript todo app, lesson 48, closed-issue-#53167

Checklist:

[x] I have read and followed the contribution guidelines.
[x] I have read and followed the how to open a pull request guide.
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #53167

Hey @Vishakha-Sawra
This PR seems to make similar changes as the existing PR #53173. As such, we are going to close this as duplicate.
If you feel you have additional changes to expand upon this PR, please feel free to push your commits and request this PR be reopened.
Thanks again! 😊

If you have any questions, feel free to ask questions on the 'Contributors' category on our forum or the contributors chat room.