Rename connections.open_bucketfs_connection(...) to open_bucketfs_bucket(...)

The current name suggests that the returned object is a bucketfs Service.

@ahsimb I think, we should move the notebook-connector and ai-lab to the BucketFS-Python Pathlike interface. I think, it is in general the better interface for users. What do you think?


[training_4.0][gpt3][compliance checker] wrong compile_time_mins for gpt3 task

The compile_time_mins is 60min in gpt3 training according to the training rule.
It isn't yet reflected in the compliance checker:
in mlperf_logging/compliance_checker/training_4.0.0/common.yaml:
# `compile_time_mins` is 30min for all open tasks without covering the special case in gpt3

enqueue_config('training_4.0.0/{}_common.yaml'.format(v['value'])); s['compile_time_mins'] = 240 if v['value'] == 'open' else 30

60min is specific to v3.0


repo sync

This is an automated pull request to sync changes between the public and private repos.
:robot: This pull request should be merged (not squashed) to preserve continuity across repos, so please let a bot do the merging!

تم الإرسال من Galaxy الخاص بي

ہب بع وک ومہمیمع میب پجتد
On Sun, 12 Sep, 2021, 9:58 am korgpa, @.***> wrote:

تم الإرسال من Galaxy الخاص بي
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/github/docs/pull/6022#issuecomment-917549540, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AT2XOVJHUQTTEPAHISV7MA3UBQT7HANCNFSM44DCLISQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


Add PodDefault gate before deploying metacontroller.

Please read the issue before approving: https://github.com/canonical/bundle-kubeflow/issues/951
This solution will put metacontroller to blocked state if PodDefaults are not present. When they are deployed this solution relies on update-status event to unblock the charm. Added also integration test to simulate the situation.

Rejecting .. please check issue for more info


Ghosts can stand on ame parts to make them impossible to build

Description
As the title says.
Reproduction

Screenshots

Additional context
No videos because I can't get sandbox going.!!

this may apply to every flatpack I don't know

Dupe


can't seem to find any of the mobs

i have disabled the "require storm" option in the config and i have not seen a single one of them in the oceans after several days of having the mod installed. is there something else I need to do/change? i simply want them in the game at all times instead of having to wait for a storm

Please try with the latest update now!

i just tried it, still nothing. i have even waited and looked around in the ocean during thunderstorms and still no mobs appear

just tried it, still nothing. i have even waited and looked around in the ocean during thunderstorms and still no mobs appear

just tried it, still nothing. i have even waited and looked around in the ocean during thunderstorms and still no mobs appear

I also can't find any mobs in the latest version

Forgot to update this but update to latest release!


Pep 8

@newbazz Thanks for joining development! It is difficult for us to understand what you are working on and what issue are you trying to solve. Please help us and first open issues, then match issues with PRs. Please follow best practices to make it easier for everyone to collaborate with you: https://blog.fossasia.org/open-source-developer-guide-and-best-practices-at-fossasia/
Please update your PR description and commit message. Cheers.

This is my log and the latest commit before me is from Shashank sharma, same is the case with query-server master. What more commits do i need to rebase on?

@newbazz Thanks for your contribution. Can you please add description for this PR and as I can see that you had open this PR  to format the code according to the PEP8 standard. Please cover all the files and also we have one commit per PR policy so please adhere to that 😄

@newbazz sense what you are trying to do but I think you would need to attack it with an automated tool like autopep8 or yapf and then submit the entire thing in one single commit.  No mistakes allowed.  To do that you need to have good skills with git on the command line.

Please refer to #151. And next time onwards, do take a look at the existing pulls before creating a new one!

Since #151 is already there i am closing this.

Now that flake8 is set up in Travis, we get a full listing of all PEP8 style violations (the Exxx errors): https://travis-ci.org/fossasia/query-server/jobs/279784188#L662  There is work to do here @newbazz so I hope that we can see some more PRs from you.  Thanks!


Questions about a piece of code in BaseDenseHead

When I looked at the aug_test method in BaseDenseHead, I found that it called the self.get_results method, but I didn't find its definition. As shown in this line of code: https://github.com/open-mmlab/mmdetection/blob/f78af7785ada87f1ced75a2313746e4ba3149760/mmdet/models/dense_heads/base_dense_head.py#L524.
Where is the self.get_results method defined?

please specify your mmdet version, cuz I didn't find any references or definition in mmdet=2.28.2


Proposal: in-place print() replacement

Hi,
If you handle keyword arguments, smartprint() could work as an in-place print() replacement just by altering the import line:
from smartprint import smartprint as print

This would be great in cases where print is only being used for debugging

@nickdelgrosso
Can you resend this pull request?
I added some tests, hence old pull requests are causing conflicts.

Ignore the previous comment, I resolved the conflicts manually,
I will add this in the readMe,
just this change makes the whole thing super usable with existing code!


Correcting Color Scale for Dark and Light Mode

There are some inconsistencies in Light mode , as the website is currently being ran on dark, I would like to address those
@Sayak-Bhunia I would want to work on this

assigned.


proposal: path/filepath: add IsReserved to identify Windows reserved filenames

On Windows, a number of filenames are reserved for use by the system, such as "CON", "COM1", and "CONIN$". The set of reserved names is subtle and varies by Windows version; some versions reserve names with extensions such as "con.txt" while others do not.
The new filepath.IsLocal function (#56219) returns false when provided a reserved filename on Windows. However, we don't have a function which only identifies reserved filenames. This seems like a useful thing to have. We already have one Windows-specific function in filepath (filepath.VolumeName), so adding another may be reasonable.
The proposal:
// IsReserved reports whether the path is a reserved name.
//
// On Windows, it returns true if any element of path contains a reserved name such as "NUL".
// On other platforms, it always returns false.
func IsReserved(path string) bool

Who do we expect to call IsReserved?  It seems like the only people who would call it are those specifically programming for Windows.  Therefore, would this be more appropriate in the x/sys/windows package?

CC @golang/windows

would this be more appropriate in the x/sys/windows package?

For portable programs, it seems most useful to have IsReserved always be defined and always return false outside of Windows. Otherwise, the program would need otherwise-unnecessary build constraints just to implement its own copy of IsReserved exactly as proposed.
I don't think x/sys/windows is defined for non-Windows platforms today. It might make sense to define the non-Windows-specific parts of that package (such as StringToUTF16) on other platforms too, but I don't think this proposal is really the place to consider that much broader change.
So I think path/filepath really is the right place for this function.

As @bcmills says, for people writing portable programs it seems more useful to have an IsReserved that always returns false on platforms with no reserved names.
Another motivating case is #57151 (filepath.FromFS), which is another function which needs to identify reserved names. If we add it to the standard library, then we'll have two functions that have special handling of reserved names (FromFS and IsLocal) but none that specifically identifies them. If we don't add FromFS to the standard library, then it will be difficult to implement outside it without a good way to identify reserved names.

Function was re-written recently in package path/filepath for windows.
https://github.com/golang/go/blob/f721fa3be9bb52524f97b409606f9423437535e8/src/path/filepath/path_windows.go#L23-L28
I do not know if proposal is complete.

With IsLocal having been added, do we still need IsReserved?
Would it have an implementation on other systems, like rejecting names with NUL bytes on Linux?

This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group

I believe IsReserved would only have an implementation on Windows, like filepath.VolumeName.
A name with NUL bytes is invalid, not reserved.
I could see an argument for calling "." and ".." reserved.
A standard library function should be some combination of broadly useful or difficult to implement. A function which is trivial to implement may be worth including if it is very widely used, and a function which is seldom used may be worth including if those rare uses would be painful without it.
I believe IsReserved is useful only in very limited situations, but it is really quite difficult to implement and the consequences of getting it wrong can be hazardous. We've been through several iterations of our implementation of Windows reserved name detection, adding detection of reserved names with a directory component (./NUL), reserved names with an extension (but only on some versions of Windows!), and the reserved names CONIN$ and CONOUT$. Our current implementation includes a call out to syscall.FullPath to ask the operating system to answer some of the tricky edge cases.
The complexity of this function argues to me that we should make it available on its own, not just as part of a broader API like IsLocal.
Perhaps we could put this in some external package (although probably not x/sys/windows as @bcmills points out) and vendor it into the standard library instead. However, the presence of filepath.VolumeName does set (possibly unfortunate) precedent for putting Windows-specific functionality into filepath.

What does IsReserved("foo/nul/bar") return?
Does IsReserved("#c") return true on Plan 9?
On Plan 9 "./#c" is not reserved even though "#c" is.
Does IsReserved mean "this path doesn't mean what it looks like?"

IsReserved("foo/nul/bar") returns true, I think, but I'd entertain arguments for false.
I don't know about Plan 9. Do you have a reference to how #-prefixed paths work? I haven't been able to find one. Can I ReadDir("#") to list all the paths with a #-prefix?
On Windows, IsReserved would mean a name reserved by Windows as documented in https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file, or a name which has special meaning to CreateFile as documented in https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea#consoles.
"Doesn't mean what it looks like" is a good characterization. Or "not actually part of the filesystem".

For Plan 9, search for #c in https://www.usenix.org/legacy/publications/compsystems/1995/sum_pike.pdf .  I don't think that ReadDir("#") works.

The root directory of the tree served by a device driver can be accessed by the notation #c, where c is a unique character (typically a letter) identifying the type of the device.

I could see an argument for calling #c a volume name (which would have the effect of making filepath.Clean("#c/../x") = "#c/x"), but I don't think it's a reserved name.

Yes, #c on Plan 9 is a lot like a volume name on Windows.

What about IsReserved("..")? .. is magical in a similar way to NUL in that it is not an ordinary name and does not have an ordinary meaning. It would fall into 'doesn't mean what it looks like' unless the looker knows about dotdot (which maybe everyone does).
Can we write a precise definition of what "Reserved" means?

Now that I think more about the volume name question, does IsReserved("C:") return true? Does IsReserved("C:/foo") return true? If not, how does code that checks paths with IsReserved avoid being tricked into writing to absolute paths starting with volume names? filepath.IsLocal already does that I guess. But then I'm confused about what the use case is. I should use IsLocal instead of IsReserved almost all the time.

However, we don't have a function which only identifies reserved filenames. This seems like a useful thing to have.

Is there a clearer use case?

Same question as last week: do we really need this function to be exported at all?

A good definition might be: A reserved file name is one which cannot be used to create a file with that name.
For example, on Windows it is not possible to create a file named NUL, COM1, or CONIN$. It is possible to open these names and retrieve a file handle, but the names are reserved for use by the operating system.
Under this definition, I think the names . and .. are reserved, since you can't create a directory or file named . or ...
Volume names are not reserved, because a volume name isn't a file name. IsReserved("c:") is false because it doesn't name a file.  IsReserved("C:/foo") is also false, because you can create a file named "C:/foo".
I'm not certain that we need this function. My main argument in favor of it is still the one from https://github.com/golang/go/issues/57152#issuecomment-1412799244: Very few users need this, but it's incredibly hard to get right and risky to get wrong.

What about IsReserved("/")? I have a hard time explaining why the answers that IsReserved returns for "/", ".", "..", "c:\", and "c:" would not all be the same, whatever it ends up being.
If users already have IsLocal (which already rejects all these things like NUL and COMIN$), when do users need IsReserved instead of IsLocal?

Consider a user who wants to implement #57151 (a version of filepath.FromSlash that validates its input). This function is willing to accept absolute paths and paths which escape the current directory (so /a and ../a are fine), but wants to disallow paths that contain a volume name or reference a device file.
You can do this with IsLocal, but it's not trivial since you need to convert absolute paths and ones that escape the current directory into a local form.
I don't think it's useful to call / reserved; the root directory isn't reserved, it's just the root directory. It behaves like any other directory, except that you can't delete it.
The motivation for IsReserved is that while everyone knows what /, ., and .. mean  (for some definition of "everyone"), Windows has a bunch of reserved filenames that behave in strange ways and are not easy to discover.
Perhaps the best way to specify IsReserved is to just list exactly what it does:
// IsReserved reports whether the path is reserved.
//
// On Windows, a path is reserved if it contains a path component with the name CONIN$, CONOUT$,
// CON, PRN, AUX, NUL, COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9,
// LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, or LPT9.
//
// On some versions of Windows, names with an extension such as NUL.txt are also reserved.
//
// On non-Windows platforms, IsReserved returns false for all paths.

I feel like we should call this IsSpecialIfRunningWindows.  Or IsMagicDeviceName.

Based on the discussion above, this proposal seems like a likely decline.
— rsc for the proposal review group

This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group

No change in consensus, so declined.
— rsc for the proposal review group


Add trailing slashes in robots.txt

Wow, my package listing page has been blocked long time by robots.txt.
http://notnil-creative.com/concrete5-packages/
These pages will also be blocked.
http://example.com/jobs-report/
http://example.com/mailing/
Let's add trailing slashes.

as a matter of fact we should remove some more things, check this https://github.com/concrete5/concrete5/pull/1865

what does trailing slashes do on robots.txt?

See my examples.
/jobs-report/ is normal and valid page slug, but blocked with Disallow: /jobs

I understand, but the other pr is even more important as Google won't be able to detect your site as responsive..                                                                                From: Takuro HishikawaSent: Wednesday, February 4, 2015 19:20To: concrete5/concrete5Reply To: concrete5/concrete5Cc: Remo LaubacherSubject: Re: [concrete5] Add trailing slashes in robots.txt (#1880)See my examples.
/jobs-report/ is normal and valid page slug, but blocked with Disallow: /jobs
—Reply to this email directly or view it on GitHub.

wow I always thought it was exact matches in robots.txt good to know!

I think both issues are very important. We should announce that users should update their robots.txt, because it will not be updated automatically.

as mentioned in the other PR, I'd like to extend the upgrade script to check if robots.txt is writable and if it is, replace some of the existing entries. We can then display a warning to all other users..

Let's merge discussions about robots.txt. I close this PR.


how to delete all loaded messages

is there any way to delete the messages ?
in my use case, there can be multiple session, and now, when i'm lunching the app and starting conversation. then after ending this , i'm taking data from another data source. and i want to load all thoda, and unload previous messages.

Hey I ran into this yesterday!!
You can pull in a method dropMessages from react-chat-widget and call it which will clear the messages! I do this in my componentDidMount in my wrapper component which is my widget.
import {
	Widget,
	addResponseMessage,
	dropMessages,
	renderCustomComponent,
	toggleWidget
} from 'react-chat-widget';

.........

	componentDidMount() {
		dropMessages(); // clears any messages left in state
		toggleWidget(); // toggles the widget open on load
                .........

No clue why this isn't in the Readme, I thought about doing a PR for it but 😅


Hydra configs with multi GPU DDP training in Pytorch Lightning

As far as I understand DDP backend runs my training script from beginning for each GPU that I use. Is there a way to avoid creating different hydra output directories in each of the scripts? Should I block somehow every process except one with local rank 0? In my case I'm saving model checkpoints and .yaml file to default hydra output directory, but config file is copied twice and checkpoints are saved once. Anyways, spawning too many of directories is not convenient.
What can I do?
Code
@hydra.main(config_path="train-config.yaml", strict=False)
def train(config: DictConfig) -> None:
    config.hydra_base_dir = os.getcwd()
    original_wd = hydra.utils.get_original_cwd()
    os.chdir(original_wd)

    checkpoint_callback = ModelCheckpoint(
        filepath=config.hydra_base_dir,
        save_top_k=3,
        verbose=True,
        monitor="val_loss",
        mode="min",
    )
    shutil.copy2("train-config.yaml", os.path.join(config.hydra_base_dir, "train-config.yaml"))

    wandb_logger = WandbLogger(
        offline=False,
    )

    model = MyModel(config)

    trainer = pl.Trainer(
        max_epochs=config.train.max_epochs,
        gpus=config.train.n_gpu,
        auto_select_gpus=True,
        distributed_backend="ddp",
        checkpoint_callback=checkpoint_callback,
        logger=wandb_logger,
    )

    trainer.fit(model)

What's your environment?

OS: Ubuntu 18.04
Conda, Python 3.7.7
hydra-core==0.11.3
pytorch-lightning==0.8.5
wandb==0.9.3

I've just found out that process local rank can be accessed via local_rank = os.environ.get("LOCAL_RANK", 0), because this is how lightning handles it under cover. Seems like there is needed some clarification on how to work with different DDP processes in the docs.

cc: @yukw777 @omry

You could configure Hydra run dir via the command line or your config file to be whatever you want it to be, see this.
However, I think the right approach to do DDP training with Hydra is to use multirun. With multirun - each running script gets it's own subdirectory under the primary working directory by design and not by accident.
I didn't see anyone doing it yet and I do not know how it will work with PL.
I think it's important to create a PL example for DDP , following the great work from @anthonytec2 (#2639) which is still in limbo.

I tried to use --multirun option
it does not work under trainer.distributed_backend=ddp
but it works with trainer.distributed_backned=ddp_spawn with one exception that running it in slurm it fails

I am not familiar with the difference between ddp and ddp-spawn in PL.
We may still need to make some changes or at least provide a working example. I am counting on people like you to help create that example.
Are you using the Submitit Launcher plugin to run it on SLURM?
What kind of failure?

@rakhimovv when you use ddp, PL starts subprocesses to run the training script (by simply passing the command for the training script to https://docs.python.org/3/library/subprocess.html) and gathers the gradients. What @omry means when he recommends using --multirun, is that instead of relying on the subprocess module as PL does, use --multirun to start subprocesses and gather the gradients. This is not supported by PL currently as far as I know.
ddp_spawn on the other hand starts subprocesses by using this method https://pytorch.org/docs/stable/multiprocessing.html#torch.multiprocessing.spawn, which is fundamentally different from directly calling the training script as ddp does.

Thanks for clarification @yukw777. I got it.
I misunderstood at first. In my comment above I meant the situation when I try to run several experiments using --multirun option like
python train.py --multirun trainer.gpus=4 trainer.distributed_backend=ddp_spawn encoder.blocks_num=2,4
@yukw777, do I understand correctly that running --multirun and ddp simultaneously is not correct fundamentally?
@omry no plugin for slurm. I did not have a chance to check Sumbitit script or PL's SlurmCluster object. I used just plain sbatch script
there are two options I tried:

when I set --ntasks=1 despite the number of used gpus
it works, in this case, PL manages spawning processes itself

when I set --ntasks equal to the number of used gpus
In this case, the PL transfers starting subprocesses to Slurm. Slurm makes if one uses 'srun' command inside sbatch script.
But I get the error below. It fails during the test phase. In my script, I ran fit and test sequentially.

Traceback (most recent call last):
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/utils.py", line 202, in run_and_report
    return func()
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/utils.py", line 345, in <lambda>
    lambda: hydra.multirun(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/hydra.py", line 132, in multirun
    return sweeper.sweep(arguments=task_overrides)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/core_plugins/basic_sweeper.py", line 135, in sweep
    results = self.launcher.launch(batch, initial_job_idx=initial_job_idx)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/core_plugins/basic_launcher.py", line 64, in launch
    ret = run_job(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/core/utils.py", line 123, in run_job
    ret.return_value = task_function(task_cfg)
  File "train_net.py", line 62, in main
    trainer.fit(model)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 1074, in fit
    self.ddp_train(process_idx=task, mp_queue=None, model=model)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/trainer/distrib_data_parallel.py", line 577, in ddp_train
    model = model.configure_ddp(model, device_ids)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/core/lightning.py", line 887, in configure_ddp
    model = LightningDistributedDataParallel(model, device_ids=device_ids, find_unused_parameters=True)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/torch/nn/parallel/distributed.py", line 283, in __init__
    self._distributed_broadcast_coalesced(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/torch/nn/parallel/distributed.py", line 496, in _distributed_broadcast_coalesced
    dist._broadcast_coalesced(self.process_group, tensors, buffer_size)
RuntimeError: Broken pipe
Traceback (most recent call last):
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/utils.py", line 202, in run_and_report
    return func()
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/utils.py", line 345, in <lambda>
    lambda: hydra.multirun(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/hydra.py", line 132, in multirun
    return sweeper.sweep(arguments=task_overrides)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/core_plugins/basic_sweeper.py", line 135, in sweep
    results = self.launcher.launch(batch, initial_job_idx=initial_job_idx)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/core_plugins/basic_launcher.py", line 64, in launch
    ret = run_job(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/core/utils.py", line 123, in run_job
    ret.return_value = task_function(task_cfg)
  File "train_net.py", line 62, in main
    trainer.fit(model)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 1074, in fit
    self.ddp_train(process_idx=task, mp_queue=None, model=model)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/trainer/distrib_data_parallel.py", line 577, in ddp_train
    model = model.configure_ddp(model, device_ids)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/core/lightning.py", line 887, in configure_ddp
    model = LightningDistributedDataParallel(model, device_ids=device_ids, find_unused_parameters=True)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/torch/nn/parallel/distributed.py", line 283, in __init__
    self._distributed_broadcast_coalesced(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/torch/nn/parallel/distributed.py", line 496, in _distributed_broadcast_coalesced
    dist._broadcast_coalesced(self.process_group, tensors, buffer_size)
RuntimeError: Broken pipe
Traceback (most recent call last):
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/utils.py", line 202, in run_and_report
    return func()
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/utils.py", line 345, in <lambda>
    lambda: hydra.multirun(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/hydra.py", line 132, in multirun
    return sweeper.sweep(arguments=task_overrides)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/core_plugins/basic_sweeper.py", line 135, in sweep
    results = self.launcher.launch(batch, initial_job_idx=initial_job_idx)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/_internal/core_plugins/basic_launcher.py", line 64, in launch
    ret = run_job(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/hydra/core/utils.py", line 123, in run_job
    ret.return_value = task_function(task_cfg)
  File "train_net.py", line 62, in main
    trainer.fit(model)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/trainer/trainer.py", line 1074, in fit
    self.ddp_train(process_idx=task, mp_queue=None, model=model)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/trainer/distrib_data_parallel.py", line 577, in ddp_train
    model = model.configure_ddp(model, device_ids)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/pytorch_lightning/core/lightning.py", line 887, in configure_ddp
    model = LightningDistributedDataParallel(model, device_ids=device_ids, find_unused_parameters=True)
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/torch/nn/parallel/distributed.py", line 283, in __init__
    self._distributed_broadcast_coalesced(
  File "/trinity/home/r.rakhimov/.local/lib/python3.8/site-packages/torch/nn/parallel/distributed.py", line 496, in _distributed_broadcast_coalesced
    dist._broadcast_coalesced(self.process_group, tensors, buffer_size)
RuntimeError: Broken pipe

The main problem here that setting --ntasks equal to the number of used gpus is the only option if I, for example, want to run multi-node (not just multi-gpu) training.

By ntask I mean you mean sbatch parameter? I have no intention to support it. Try with the submitit plugin and we can discuss further.
Also, please create a minimal example demonstrating the problem. (again, using the submitit plugin).

@omry I'm trying to think through what you are suggesting here and what Lightning does.
Lightning currently handles multiple GPUs per node by launching a subprocess for each additional GPU on the node using the sys.argv command (this apparently reduces training times over multiprocessing).  The use of sys.argv obviously causes issues with Hydra because it will include all the Hydra commands.  For example, if multirun command is used, each node would spawn a new multirun job.  I currently modify the sys.argv commands to get around this.
Would you suggest that the config for each node be a multirun job across available GPUs (ntasks == ngpus)?  If we launch with the submitit launcher with command task=1,2 --multirun would that launch two jobs per node?  I like this idea but I don't think Lightning supports it.
I'll think about this because I would like to find a simple approach to this issue.  I don't think Lightning can support choosing the GPU for a job.  I ran into this issue using mpirun (#2408). It might work to modify the CUDA_VISIBLE_DEVICES per job.

@rakhimovv sorry for the late reply, but yes you're correct, currently they don't work together.

Here's an example script that outlines the Hydra/Lightning issue with ddp backend
This example simulates how lightning spawns a process on a node with 2 GPUs (spawns one process along with the main process).  You can see how sys.argv is used here.  There will be a log directory for each process.
Also, if you updated the example to run multirun you will see it executes twice: python test_argv.py test=1,2 --multirun
import os
import sys
import subprocess
from os.path import abspath

import hydra
from omegaconf import DictConfig

def spawner(cfg):
    command = sys.argv
    full_path = hydra.utils.to_absolute_path(command[0])
    command[0] = full_path
    command = [sys.executable] + command
    cwd = hydra.utils.get_original_cwd()

    env_copy = os.environ.copy()
    env_copy['LOCAL_RANK'] = '1'
    proc = subprocess.Popen(command, env=env_copy, cwd=cwd)

def objective(cfg):
    if 'LOCAL_RANK' in os.environ:
        print('bar')
    else:
        print('foo')
        spawner(cfg)

@hydra.main(config_path='.', config_name='argv.yaml')
def main(cfg: DictConfig):
    objective(cfg)

if __name__ == '__main__':
    main()

Here is argv.yaml
test: 1

@omry I'm trying to think through what you are suggesting here and what Lightning does.
Lightning currently handles multiple GPUs per node by launching a subprocess for each additional GPU on the node using the sys.argv command (this apparently reduces training times over multiprocessing). The use of sys.argv obviously causes issues with Hydra because it will include all the Hydra commands. For example, if multirun command is used, each node would spawn a new multirun job. I currently modify the sys.argv commands to get around this.

Yes, it is an issue.
It also sounds like you need to create a Sweeper plugin for this, but I am not sure it's the best coarse of action.
Sweeper plugins takes the input overrides (command line) for a multirun and break it down to overrides for individual jobs.

Would you suggest that the config for each node be a multirun job across available GPUs (ntasks == ngpus)? If we launch with the submitit launcher with command task=1,2 --multirun would that launch two jobs per node? I like this idea but I don't think Lightning supports it.
I'll think about this because I would like to find a simple approach to this issue. I don't think Lightning can support choosing the GPU for a job. I ran into this issue using mpirun (#2408). It might work to modify the CUDA_VISIBLE_DEVICES per job.

I think for multiprocessing you need treat the application as a single run (not multirun) and let PL do the multiprocessing.
My suggestions to use the Slurm launcher were thinking more of the case for multi-node but to be honest I think this is not going to work right now and there should be more work to enable it.
Hydra can set environment variables for jobs, see this.
It's likely that this will help. In fact - I am specifically calling out RANK in Torch distributed as a use case there.

So it actually works out great to just have a configuration for submitit.  For my example above, if you call objective via executor.submit(objective, cfg) it works out great, no need to mess with sys.argv.  I think this is because submitit generates a new command (using pickles?) for the submission.  I wonder if the Lightning folks would benefit in generating a subprocess similar to how submitit generates the submission??

@jgbos To clarify, the solution is to use submitit, but not with the hydra submitit plugin or hydra --multirun? Do you mind showing a working example using pl?
Also, does this mean there is currently no solution in the case that Slurm is not being used (outside of @omry suggestion to go down one level of abstraction and deal with Torch distributed ourselves)?

Sorry, but I don't have an example for DDP with Hydra.
Supporting it properly will take some development.
In the mean time try to get help from people that have been successful using PL DDP with Hydra. I think you can find a few on this thread.

@AlexSchuy I'm still trying to figure out the best options, but there are two steps I take to ensure Lightning DDP works.  First I modify sys.argv in the main function (after hydra has been initiated) using the following (which should support multirun)
if distributed_backend == 'ddp':
    cwd = os.getcwd()
    sys.argv = sys.argv[:1]
    sys.argv.extend([
        f"hydra.run.dir={cwd}",
        "hydra/hydra_logging=disabled",
        "hydra/job_logging=disabled",
    ])
    overrides = OmegaConf.load('.hydra/overrides.yaml')
    for o in overrides:
        if 'hydra/sweeper' in o:
            continue

        if 'hydra/launcher' in o:
            continue

        sys.argv.append(o)

For launching via submitit, I have a command function, such as train, that is used for the submission
job = executor.submit(train, *args, **kwargs)

@jgbos thanks for sharing your temporary solution.
I am facing the issue that since I have hydra.job.override_dirname in the runs folder name it does not parse the '=' symbol correctly. So basically, it would be like trying to do python training.py hydra.run.dir=/home/foo/runs/2020-12-11_17-32-24_trainer.gpus=-1 The error says "mismatched input '=' expecting ". Any suggestion on what would be the best solution?

Could anyone provide a small example of how to use PL with hydra and submitit (doesn't matter if with the plugin or not), that would be great!

@mees and @lukashermann.  I don't have a nice simple solution to copy and paste into an issue.  But here's the gist of how I have gotten things to work:

Lightning supports writing your own accelerator function.  I created an accelerator function similar to ddp that does not spawn a new subprocess for each gpu on the machine.  My implementation requires Trainer.num_gpus=1 and Trainer.num_nodes=<world size>.
This requires the user to spawn their own process for every GPU on every node.  Any Slurm manager supports this with tasks per node (and thus submitit)
Be sure to use the setup flag in submitit to set MASTER_ADDR and MASTER_PORT

This treats each execution of your code as a single task (none of that spawning subprocesses that lightning does by default).  Once all tasks are running torch.distributed will initiate.
I recommend this path as it removes any special processing of sys.argv, and honestly behaves how I expect distributed code to behave.

Hi! Sorry to bring up a stale issue, is there any update no this? I am currently able to use Hydra with DDP, it's the combination hydra-multirun + lightning-DDP that's still not functioning properly, generating extra folder for child processes.
Unfortunately I cannot use slurm, I'm on a single multi-gpu machine, if that helps.
If there's something to work with, even a workaround, I'm willing to try, the multirun option is quite awesome!

To workaround the extra folders, I did the following. At the very beginning of the program (of each process), I check if an env variable called SWEEP_DIR is set, and if not I set it to the multi-run directory I want to use (e.g., multirun/${now:%Y-%m-%d}/${now:%H-%M-%S}; note it has to be set before the Hydra config is loaded). Then, in the Hydra config, I set hydra.sweep.dir to this variable ($(env:SWEEP_DIR}).

A fix that works for me is to update the PL code starting here to:
            if _HYDRA_AVAILABLE:
                if HydraConfig.initialized():
                    cwd = get_original_cwd()
                    os_cwd = f'"{os.getcwd()}"'
                    command = command[:2]
                    command += ["-cp", str(Path.cwd().relative_to(Path(cwd)) / ".hydra"), "-cn", "config.yaml"]
                    command += [f"hydra.run.dir={os_cwd}", f"hydra.job.name=train_ddp_process_{local_rank}"]

A fix that works for me is to update the PL code starting here to:
            if _HYDRA_AVAILABLE:
                if HydraConfig.initialized():
                    cwd = get_original_cwd()
                    os_cwd = f'"{os.getcwd()}"'
                    command = command[:2]
                    command += ["-cp", str(Path.cwd().relative_to(Path(cwd)) / ".hydra"), "-cn", "config.yaml"]
                    command += [f"hydra.run.dir={os_cwd}", f"hydra.job.name=train_ddp_process_{local_rank}"]

If you also want it to work for python -m script.py you need to modify it slightly:
            if _HYDRA_AVAILABLE:
                if HydraConfig.initialized():
                    cwd = get_original_cwd()
                    os_cwd = f'"{os.getcwd()}"'
                    if __main__.__spec__ is None:
                        command = command[:2]
                    else:
                        command = command[:3]
                    command += ["-cp", str(Path.cwd().relative_to(Path(cwd)) / ".hydra"), "-cn", "config.yaml"]
                    command += [f"hydra.run.dir={os_cwd}", f"hydra.job.name=train_ddp_process_{local_rank}"]

But in general this does not work with: Hydra + Submitit + PL  with DDP, since the command there is submit.py and you cannot pass the hydra config to it.
If I understood it correctly, @jgbos the solution you provided works when you force PL to use 1 GPU only and therefore you can only use 1 GPU per task. Am I right?

@mees and @lukashermann. I don't have a nice simple solution to copy and paste into an issue. But here's the gist of how I have gotten things to work:
* Lightning supports writing your own accelerator function.  I created an accelerator function similar to ddp that does **not** spawn a new subprocess for each gpu on the machine.  My implementation requires `Trainer.num_gpus=1` and `Trainer.num_nodes=<world size>`.

* This requires the user to spawn their own process for every GPU on every node.  Any Slurm manager supports this with tasks per node (and thus submitit)

* Be sure to use the `setup` flag in `submitit` to set `MASTER_ADDR` and `MASTER_PORT`

This treats each execution of your code as a single task (none of that spawning subprocesses that lightning does by default). Once all tasks are running torch.distributed will initiate.
I recommend this path as it removes any special processing of sys.argv, and honestly behaves how I expect distributed code to behave.
edit
Looking at Lightning's latest, it looks like they may have an accelerator that behaves this way already: https://github.com/PyTorchLightning/pytorch-lightning/blob/master/pytorch_lightning/accelerators/ddp_hpc_accelerator.py

I would like to run 1 task per node and N GPUs per task (1 node, 1 task, N GPUs) using Hydra (--multirun) + Submitit (gpus_per_node=N or gpus_per_task=N) and PL with DDP (to handle the multiprocessing for the N GPUs per task/node). As far as I understood this option is not working right now. Is there any workaround for this or should I write my own sweeper/submitter and avoid --multirun + submitit?

If you also want it to work for python -m script.py you need to modify it slightly

Yes, I wasn't using that feature, your solution is correct

If I understood it correctly, @jgbos the solution you provided works when you force PL to use 1 GPU only and therefore you can only use 1 GPU per task. Am I right?

No, this works for multi-gpu.  It runs using the Hydra config in the current experiment, so it will launch the process correctly for each rank.   There are several caveats to this though, mostly related to complex task functions and multirun (you need to destroy distributed processes and remove PL related environment variables for multirun to work).  By no means is this solution robust.  In most cases you should just write your own custom strategy which is pretty easy to do.

I would like to run 1 task per node and N GPUs per task (1 node, 1 task, N GPUs) using Hydra (--multirun) + Submitit (gpus_per_node=N or gpus_per_task=N) and PL with DDP (to handle the multiprocessing for the N GPUs per task/node

For submit (local or slurm) you should set gpus=1.  There is no reason to have PL launch subtasks for each job, just let the cluster manager (or submitit local tasking) handle spawning the job for each GPU.  I've used Hydra+PL+DDP using submitit for a couple years with no issues or updates to PL.

For submit (local or slurm) you should set gpus=1 and num_nodes=<num gpus wanted>. There is no reason to have PL launch subtasks for each job, just let the cluster manager (or submitit local tasking) handle spawning the job for each GPU. I've used Hydra+PL+DDP using submitit for a couple years with no issues or updates to PL.

Thank you, I did not get it at the beginning. I will give it a try!
Unfortunately in my case there is a reason for that: my time on the clusters is limited and it is accounted as nodes * cpus * time, regardless of the gpus, that is using 1 gpu per node or all available ones is accounted the same time. Therefore using only 1 gpu per node would be a waste of resources and time.

Therefore using only 1 gpu per node would be a waste of resources and time.

That's too bad because that's the most robust solution I've come up with.  What we really need is a Hydra centric LightningCLI so that the spawning command is something like python -m pytorch_lightning.main <path to hydra config.yaml>.  This would be robust since it doesn't actually recall your task function.  I'm looking at.  (shameless plug, it might be simple using our tool hydra-zen)

Here's a potential solution:
Create a file lightning_cli.py with something like the following:
import hydra
from hydra.utils import instantiate

@hydra.main(config_path=None, config_name="config")
def main(cfg):
    trainer: Trainer = instantiate(cfg.trainer)
    model: LightningModule = instantiate(cfg.model)

    if cfg.testing:
        trainer.test(model)
    else:
        trainer.fit(model)

if __name__ == "__main__":
    main()

Create your own CustomDDPStrategy and use this for the command to spawn a new job:
            command = [sys.executable, "-m", "lightning_cli"]
            command += ["-cp", hydra_output, "-cn", "config.yaml"]
            command += [
                f"hydra.output_subdir={hydra_cfg.output_subdir}",
                f"hydra.run.dir={os_cwd}",
                f"hydra.job.name=train_ddp_process_{local_rank}",
            ]

Now it will only spawn running lightning and not your task function.

Thank you for the suggestions, I think your solution should work, but I don't know why it gets stuck at the Trainer, without giving any error (I also tried manually calling my main function from the correct directory). The job(s) keep running normally but the out/err do not get updated.
At the end I wrote my own launcher and I am using that one instead of submitit. It is just a modification of the BasicLauncher which spawns a subprocess for each combination generated by --multirun.

Oh, multirun has some issues that I haven't quite figured out.  The solution that seems to work consistently is to modify CustomDDPStrategy in two spots:
First make your own setup_environment method.  For some reason it only works to destroy_process_group in this function, it will hang anywhere else.
    def setup_environment(self) -> None:
        # ADD THIS STATEMENT ###############
        if torch.distributed.is_initialized():
            torch.distributed.destroy_process_group()
        #################################

        # start the other scripts
        if not self.cluster_environment.creates_processes_externally:
            self._call_children_scripts()

        self.setup_distributed()
        super().setup_environment()

Second in teardown you need to remove PL environment variables, I'm unsure of exactly which variables to remove but this seems to work:
    def teardown(self) -> None:
        log.detail(f"{self.__class__.__name__}: tearing down DDP plugin")
        super().teardown()
        if isinstance(self.model, DistributedDataParallel):
            self.model = self.lightning_module

        if self.sync_batchnorm:
            self.model = _revert_sync_batchnorm(self.model)

        if self.root_device.type == "cuda":
            # GPU teardown
            log.detail(f"{self.__class__.__name__}: moving model to CPU")
            self.lightning_module.cpu()
            # clean up memory
            torch.cuda.empty_cache()

        # ADD THIS STATEMENT ###############
        # Remove PL environments so next multirun starts fresh
        envs = (
            "LOCAL_RANK",
            "NODE_RANK",
            "WORLD_SIZE",
            "MASTER_ADDR",
            "MASTER_PORT",
        )

        for name in envs:
            os.environ.pop(name, None)
        #################################

Sorry for the late reply, I was extremely busy lately. I tested this now on PL 1.5.4 and 1.5.10 and it still seems to be stuck at the trainer (which version did you test this on? The code looks slightly different from the versions I tested).

@jgbos Thanks for your suggestions! They were helpful for me :)
@AlessioQuercia for me, setting tasks_per_node equal to the number of GPUs worked, and might work well for your accounting scheme


Fix typo.

Please answer these questions before submitting pull request

Why submit this pull request?
[ ] Bug fix
[ ] New feature provided
[ ] Improve performance
[x] document

A question, i just modify doc, I think it needs not run all the ci cases.   May be we can use github api to customize our favoriate action. We may have our test-infra. @wu-sheng

Please select label and milestone next time, as you are a committee already.

Please select label and milestone next time, as you are a committee already.

OK, I will.

Please select label and milestone next time, as you are a committee already.

OK, I will.

Do we have a plan to automation this?  just like k8s's  when i opened an issue or a pr, the necessary lable auto labled.

We can't, as ASF don't give the permission.

We can't, as ASF don't give the permission.

i got it.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@5f420bf). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #4076   +/-   ##
=========================================
  Coverage          ?   27.27%
=========================================
  Files             ?     1140
  Lines             ?    25025
  Branches          ?     3618
=========================================
  Hits              ?     6826
  Misses            ?    17593
  Partials          ?      606

Continue to review full report at Codecov.

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


The merge conflict package works not always.

@smashwilson Some times, it show me the USE ME button, whereas some times i have to make a change and then undo to get the USE ME button. In the second case, the percentage bar showing the progress at the bottom doesn't update

I've touched up a fair number of other bugs since you've submitted this. Are you still seeing this on 1.3.1? If so, any stack traces showing up in your console?

Hey,
Thanks for the update. I haven’t come across any merge conflict but will surely reply back if the issue still exists with stack traces.
Best wishes,
Ronak Bhandari
Data Artist, pykih.com http://pykih.com/ | +91-99309-90332
Need beautiful Javascript Charts? Use our open source library http://pykcharts.com http://pykcharts.com/

On 12-Apr-2015, at 8:16 pm, Ash Wilson<EMAIL_ADDRESS>wrote:
I've touched up a fair number of other bugs since you've submitted this. Are you still seeing this on 1.3.1? If so, any stack traces showing up in your console?
—
Reply to this email directly or view it on GitHub https://github.com/smashwilson/merge-conflicts/issues/81#issuecomment-92075472.

I'll close this for now because I've changed a ton since this came up. Let me know if it's still a problem on a recent Atom and merge-conflicts :smile:


Implement container viewers

SpongeAPI | SpongeCommon
Implementing Interactable

https://github.com/SpongePowered/SpongeCommon/pull/1946


Create es.js

Translation to spanish

Thanks!

I need to correcto something in http://vsn4ik.github.io/bootstrap-checkbox/. How could I do it? A new pull request?

Yes. The same you can open new issue or add a comment to the line of file with "code".

Thank you. Already found the way ;)


Is there any way to use trigger: 'mouseenter click' ?

I need to keep the tooltip on mouseover and click... but there is currently no way to do it ?

We only support one event at the moment using the .on.mouseenter modifier combination.
Let me think of a potential way to support multiple events.

Okay, thank you as always !
Have a nice day !


Prepare an example dataset as benchmark

Need a smaller but decent dataset for development and testing. The current amazon_review dataset is still a bit large for this purpose. A subset can be optimal.

Check the data files and the notebook for data processing: https://github.com/EyeofBeholder-NLeSC/orange3-argument/tree/main/example/data.
Decisions made here:

To select the product the reviews are given, I choose the one with the highest number of reviews. This intermediate result is also saved for later use (e.g. test the widgets on a larger scale data).
For the convenience of development, a smaller dataset is sampled. This is to randomly 5 reviews of each group of the overall score, thus 25 reviews in total.


[Discussion] Keep track of Node Letters

This thread is mainly for keeping track of Node Letter feature.  Anyone wants to contribute can post the finding here or in @Javran 's file https://gist.github.com/Javran/c5c7bf8d40524559b7d9
World 1-1: 3/3 :white_check_mark:
World 1-2: 4/4 :white_check_mark:
World 1-3: 9/9 :white_check_mark:
World 1-4: 13/13 :white_check_mark:
World 1-5: 10/10 :white_check_mark:
World 1-6: 17/17 :white_check_mark:
World 2-1: 6/6 :white_check_mark:
World 2-2: 8/8 :white_check_mark:
World 2-3: 12/12 :white_check_mark:
World 2-4: 19/19 :white_check_mark:
World 2-5: 15/15 :white_check_mark:
World 3-1: 6/6 :white_check_mark:
World 3-2: 10/10 :white_check_mark:
World 3-3: 13/13 :white_check_mark:
World 3-4: 20/20 :white_check_mark:
World 3-5: 15/15 :white_check_mark:
World 4-1: 12/12 :white_check_mark:
World 4-2: 13/13 :white_check_mark:
World 4-3: 21/21 :white_check_mark:
World 4-4: 14/14 :white_check_mark:
World 4-5: 14/19 :black_medium_square: (A->C, G->F, F<->I, H->K and J->L are unknown)
World 5-1: 12/12 :white_check_mark:
World 5-2: 12/14 :black_medium_square: (G -> H and I->J are unknown)
World 5-3: 14/14 :white_check_mark:
World 5-4: 14/20 :black_medium_square: (C->G, G->I, H->J, H->K, K->O and L->M are unknown)
World 5-5: 11/18 :black_medium_square: (B->K, K->M, K->J, J->I, I<->G, G->H and I->H are unknown)
World 6-1: 13/13 :white_check_mark:
World 6-2: 18/18 :white_check_mark:
World 6-3: 12/12 :white_check_mark:
E1: 10/10 :white_check_mark:
E2: 14/17 :black_medium_square: (B->K, H->L and J->L are unknown)
E3: 14/17 :black_medium_square:
E4: 15/18 :black_medium_square:
E5: 8/? :black_medium_square:
E6: 12/? :black_medium_square:
E7: 0/? :black_medium_square:

I'll start trying to remember to add more of mine as I do these

@NicolaosGreene thanks a lot :laughing:

Is there a way to move between E and I on 2-3? I have never seen that happen so I think there are only twelve routes so I might be wrong.

I also doubt that. But since it's shown as a route, there may be a composition that can go through that route. We cannot eliminate that possibility unless the KanColle dev say so.

Fair enough, heck maybe the new oiler will be able to go though there.

getting all of 5-5 mapped would be a terror >< I hate that place and the other routes are worse than the main one.

ikr :smile:  let's complete easy maps first, since the easier the map is, the more players will likely run through that map.

Added some routes on 4-4 and 5-2

https://myfleet.moe/entire/sta/drop_stage this site include map-number-probability-nodeposition-droprate stat.

Updated map 4-4 and 5-2 #544

@c933103 We are looking at the association between path ids and node letters. That site does not list path ids which is the data we can extract with KC3Kai. Therefore, we need users to submit which path ids go with which nodes.

@NicolaosGreene it does. just click the 羅針盤for each eamap, and then click on each edge to edge row to show path

I also suspect there is no route between I and E for 2-3, and in the api_start2 response you can actually guess this:
If you search start2 in network dev page,

Copy everything after svdata= and paste it to any JSON visualizer like this
And go to api_data.api_mst_mapcell:

I guess elements in api_mst_mapcell are route ids, and each element has a api_map_no which I suspect is the map. So element 0~3 are for map 1-1 as shown above, 4 elements in total while there are 3 actually routes.
For map 1-2, there are actually 4 routes, and 4~8 in api_data.api_mst_mapcell are for map 1-2, so 5 elements:

My observation is that there are n+1 elements for a map that has n routes.
If you keep doing this, you'll find map 2-3 has only 13 elements, 49~61 in api_mst_mapcell:

This could be one way to verify how many routes are there in a map.

oh wait, the page @c933103 gave us just now really can show the relationship between edges and nodes. I will spend tonight to investigate it. If it correctly shows us what we need, I can complete the table before v16 release tomorrow :open_mouth:

@Javran I never thought about finding the node/route information there. If the API data says so, then we can conclude that there is no route between I and E. It could be that KanColle dev shows a "route" there to troll us :joy:

oh god, like to join, but cannot online for the next two days due to RL issues :cry:

@c933103 I never knew that part existed on there. Sorry for that.

I have completed all maps, except for 4-5, 5-4 and 5-5. You guys can find unknown routes in the first post. Those are mystery we have to find out now.
And try to check with Wikia notation while doing sortie at other maps as well.
PS: Before I thought Wikia just randomly assigned letters to the nodes but now it seems that is not the case. Wikia and https://myfleet.moe/entire/sta/drop_stage seem to be perfectly in sync with each other.

...i believe node letters are written on the map, at least it is the case for 1-6 that i have just visit (except node N)

That's not true for early maps such as 1-1, 1-2, ... or 2-3. Only recent maps (1-6 or event maps) have letters written on in-game map.

Figures that the 5-5 drum route would not be on there, that one is very unpleasant. The 5-4 one doesn't look too bad, it's just the less efficient route on one side and some RNG on the other. 5-2 is more at the mercy of the RNG to get those paths. The ones on 4-5 are not too bad but they will need some luck for I->F The rest should be strait forward though

5-5 is really the most unfriendly testing ground...

Indeed

Update E1 and E2

wow who finished e3?

Not me, I just finished E1 Hard, Agano last hit :grin:

is that on dev build? xD
last I checked the HP gauge is undefined something lol
I'm just on my first kill E-1
not using any buckets so it will take me a very very long while

yes, I fixed it last night on the commit https://github.com/bamboo3250/KC3Kai/commit/681fea8e9008063a9893e95ac3678e33868aab05
Every full boss kill will deduct the bar by 150 HP :kissing_closed_eyes:

Last dance with 190 HP... :laughing:
New abyssal DD (2nd and 3rd position on @bamboo3250's above pic) is really a bit trolling.

True, especially for shelling phase. I failed to kill the boss on the last dance many times mostly because the shelling phase in the day battle taiha'ed 3-4 my DDs :sob:

Update E4, E5 and E6

Update E5, E6 and E7 in #632

I was thinking of opening up an issue with this case as a bug report (and reference it to this issue number) but thought there might not be of a such a need.
Flonnaru (via kancolle.wikia) mentioned a bug with how unresolved node numbers shows up on the panel as undefined:

For reference Flonnaru was sortieing 5-4 and encountered the issue whereby the name of the map is displayed in two lines (as opposed to one) and with the second line being obscured by other information in place.
Perhaps an idea would be for unresolved node letters is to mark them as "?" somehow as a stopgap measure until all the node letters becomes known? It might be a way to:
*Prevent bug reports with cases like these (with map name spread across two lines).
*At least somehow keep the map and node name as a single line or something.
Just a thought based on the minor bug report. :laughing:

@Crazyteitoku That "undefined" is the difficulty of the map, which is not available in normal map (in this case, it is map 5-4). It's not related to the node letters and has been solved in the latest github version.

@bamboo3250 oh crap! my bad. I thought that was to do with node numbers. Thanks. :persevere:

wait is that undefined as of latest pull? that was fixed already

@dragonjet no, that "bug report" came from Flonnaru so chances are he is using the webstore version which would have that bug. I don't have a chance to try it out because I haven't even gotten world 5 unlocked.
It looks like Flonnaru will be keen on checking out this upcoming release once it is out. :smile:

:+1:

recently i found out E-5 have untracked one, which is no.17
but don't have the node movement record, because they reported it to me after finished the cosplay and the laptop have battery leak....
i'll update the data with the fleet&equip composition

updated 1 node of salmon run

retracking this issue again?

@ReiFan49 I think you can just commit and push. I will update the first post later when have more time.

Updated Node Letter for this season event via #1048

@bamboo3250 H to I = 10

@McDohl thanks, updated route H to J via ac7f53b64fcd975549db1ce01b167fbaa778ed7c.

btw, did you go through J to K @McDohl ?

ah, I not do that, I can test it for you

J to K = 19

thanks, now E4 is done :+1:

@bamboo3250 want me to test out E5?
I can do that while debuffing

For E5:
A-B: 2
B-E: 5
E-H: 8
Sorry can't give a screenshot, forgot to do it :laughing:

@ethrundr great! Added those nodes in ce800b571feb5fa995d22f42c3b045e4d4642448 :+1:

I'll update for C-F, F-I and I-J later on after I cleared the map :laughing:

I think we need not to continue track for the Fall event, as it'll end by tomorrow, right?
@bamboo3250

True, there is no update from KC3Kai between today and tmr so eventually nobody will see those updated node letters. We can conclude the Fall event here :laughing:

solved by #1668


ansible_local and git config

The git configuration can't work if ansible_local is used.
https://github.com/liip/drifter/blob/master/provisioning/roles/base/tasks/main.yml#L98 will return the value for git inside the box which is exactly the one we are trying to configure.

Maybe do something about that in https://github.com/liip/drifter/pull/82 ?

Config is now synced from the host, so this is fixed.


Proof of concept for the Add a Feed form

Describe the problem
Add a Feed form design and prototype
Proposed solution
This scope includes adding the form fields, screens, and exporting the submission result to a Google sheet as investigated in #496.
Country and Region should be a pre-selected list based on the ISO standard. Municipality should be a text box.
No conditional functionality included yet.
Alternatives you've considered
No response
Additional context
No response

Closing since initial work done in #517


Let user choose client/server side decorations

A toggle title:  "Use system window decorations."
A subtitle: "It may cause a visual inconsistency if the system theme differs from the application's theme."

Released with Nuvola 4.11.60, more info: Nuvola Brings Redesigned Preferences Dialog, More Appearance Settings, and Bug Fixes


getFeatureIdFromEvent return value

see: http://trac.osgeo.org/openlayers/ticket/2708
The function returns a feature.id (or a feature for Renderer.Canvas) or undefined.

It looks good to me. Please merge if the unit tests continue to pass.

Tests continue to pass in Chrome 16 and FF 8


Add sendmail to apt-get command in Dockerfile

This is the fix for issue 1, so filebin can send mails like password reset...

That doesn't seem to work for me. Now requesting a password reset takes forever (like 30-60 seconds, I didn't measure) and I don't get the mail. Can you check if it works for you?

Status?

This can be deleted, because there is no debian base anymore


expose --link-args to rustc

This is useful for writing configure scripts for extension libraries. It also includes a typo fix, some code cleanup, and a test for getopts.

Can you add --link-args to the man page as well?

I'm curious if this needs to exist as a flag, or can migrate up into an attribute.
The rule of thumb I'm aiming for is "anything a crate actually needs, to compile-link-run, should be expressible in the source code via an attribute or something, not a mandatory command-line flag". IOW, I'd like "rustc foo.rc" to compile a crate in a default-sane mode as best it can, and reserve options merely for variations-on-a-build (optimization, debugging, profiling, libraries in an unusual spot, etc.) that a user may or may not want to influence.

I added #1301 to allow link_args on crates. #612 (config files) and #1242 (applying attributes by cfg) could be helpful to make .rc files more useful for describing the build.

I updated the pull request with the man page change.

erickt, could your use case be satisfied by a combination of 1) adding a crate-level #[link_args] attribute, 2) adding a mechanism to select attributes base on configuration, e.g. #[cfg_attr(target_os = "macos", link_args = "-framework opengl")], and 3) using the existing --cfg flag?
Regardless of whether we want a --link-args flag, we should merge the other three commits.

I wanted to use this to link a .o file into the rust library. It could be replaced with a static library though. I'll withdraw this request for now and resubmit it with the other three commits.


Refactor model and commands for Ingredient class

Refactor model and commands to support Ingredient and Recipe class
This is done mainly through renaming of existing functions and classes. Superclasses, cb563d89572c21157e8c19f7640820f6f84be35a, are added to support Recipe and Ingredient.
Duplicate some codes to either override (to solve covariant return type issue) or overload (to solve covariant parameter type issues). There are multiple unchecked cast warnings, work is still in progress to resolve them.
AddressBook's unit tests are refactored to test the new model.

i've merged too many PRs so someone else @seowalex @fall9x @hjl99 please merge this instead


Remove unused Streamed option for textures in the Import dock

Godot does not support texture streaming yet (and is only planned for a future 4.x release), so displaying an option can be misleading.
This doesn't break compatibility with 3.x projects as texture streaming also isn't implemented there.

This is something that needs to be fixed before 4.0 because right now StreamTexture does not support streaming and probably never will, as you need a streaming pool for that (as we will need one for models).
We should have a rendering meeting to discuss this.

because right now StreamTexture does not support streaming and probably never will, as you need a streaming pool for that (as we will need one for models).

So why have a StreamTexture at all if it will not support streaming? :confused:

So why have a StreamTexture at all if it will not support streaming? confused

We need to rename the current StreamTexture to something else – the current name is the result of a legacy decision :slightly_smiling_face:
The upcoming texture streaming implementation will use a different class that isn't a drop-in replacement for StreamTexture (you won't be able to load it everywhere where a StreamTexture can be loaded).

I have noted down to open a proposal for this so we can have proper discussion.

This should be refactored given stream texture name changed, then it can be merged.

Thanks!


042 design as standalone not rusEFI WBO

Could current 042 offering be used not on rusEFI as is?
What are all the gaps between current design and not-rusEFI usage?

battery input only via CAN?  https://github.com/mck1117/wideband/issues/16
limited SEL options? https://github.com/mck1117/wideband/issues/193

Anything else?

Poke :) Looks like we have relevant HW progress but no SW progress? Was HW progress a fluke? Is it complete?

How about fallback to some hard-coded voltage assumption if no CAN RX happens for x number of seconds?


The Static Public IP address can not be fetched when it is not in the same resource group of AKS Cluster.

Hi Colleague,
We have found that the specific static Public IP address can not be fetched  when this Public IP address is not in the same resource group of AKS cluster.
Could you please help to add corresponding annotation and tip in content? It will help customers to avoid the similar issue.
--set controller.service.annotations."service.beta.kubernetes.io/azure-load-balancer-resource-group"="<resource group name>" \
Sample:
helm install nginx-ingress ingress-nginx/ingress-nginx \
--namespace ingress-basic \
.......
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-resource-group"="<resource group name>" \
.......

Best Regards,
Edward Chen

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

ID: 12009c1f-282d-2632-fac0-64b09c432833
Version Independent ID: 6052d3d4-d295-9340-b16d-4c200e34cd73
Content: Use ingress controller with static IP - Azure Kubernetes Service
Content Source: articles/aks/ingress-static-ip.md
Service: container-service
GitHub Login: @mlearned
Microsoft Alias: mlearned

Thanks for the feedback! We are currently investigating and will update you shortly.

@SrijitBose-MSFT, Appreciate your great help!
Best Regards,
Edward Chen

@rockboyfor I have same issue, @SrijitBose-MSFT is there any news regarding this topic?

Thank you for the feedback.
We've updated the article to address your feedback and the changes should be available soon.
#please-close


Changes made from final review, site signed off

As a [description of user]?
Go Electric designer
I want to [functionality]
review and triage feedback from final review, implement edits, and communicate about changes made
So that [benefit]
The site design and content is signed-off and ready for launch
Additional context
Acceptance Criteria

all feedback received from GCPE (HQ and EMLI) and Go Electric Program areas
feedback implemented or, if not appropriate to implement, communicated back to stakeholders and agreement reached

Content changes made. Pending @harryol input to replace:

Homepage > Public Charger program > image (Audrey provided suggestions via email)

Programs for businesses and communities > Hydrogen-fuelled fleet vehicles > needs to be a hydrogen-powered passenger vehicle (ie Toyota Mirai)

Why an EV is a smart choice > cost-savings > infographic (harry has provided options by email, @apuns to follow up)


fix(server): reduce content-security-policy for options routes

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
526

Relevant Lines:
526

💛  - Coveralls


Add .sticky-thead for sticky table headers on scroll

Replaces #29456
Fixes #35998
Fixes #13058, fixes #12780, fixes #1804 (lol)

When can this merge be approved?

Just FYI, I've rebased and resolved the conflicts for this branch so that it's ready to be reviewed.

What speaks against merging this?

When can this merge be approved?

For now, it's planned for the v5.4 as it's a new feature, and we're currently working on some patches for v5.3.x.

Kindly add this feature, i need it for my project,
that is fixed table header and scrollable table body.


Letter of Recommendation for me

Hi @jovo
As I mentioned in Slack, I finished up a draft of the letter of recommendation (I must say, it feels pretty odd writing about myself in the third person).  I’ve attached a copy on our Slack channel.  I’m free all day Thursday (January 25), and after 12 PM on Friday to go over changes/any details in person!  If you’re not free this week, I can also do the beginning of next week.  The letter has to be submitted by Wednesday, so as long as it’s before then it should be good.

@toekneesunshine where do i submit?

@jovo I sent a link to<EMAIL_ADDRESS>on January 23 - I'll send another one now!

@jovo - Ah, I just got a confirmation that it's all done!  Thanks again!


lint step broken on CI

An example build:
https://buildkite.com/scionproto/scionproto/builds/2197#065380d4-9454-4de0-888e-be90ef47e8e6
======> impi
go/lib/infra/messenger/messenger_with_metrics.go: Imports of different types are not allowed in the same group (1): github.com/prometheus/client_golang/prometheus != github.com/scionproto/scion/go/lib/addr

impi verification failed: Found 1 errors
======> gofmt
./scion.sh: line 295: gofmt: command not found
======> linelen (lll)
======> go vet
./scion.sh: line 299: go: command not found
./scion.sh: line 299: go: command not found
./scion.sh: line 299: go: command not found
./scion.sh: line 299: go: command not found
./scion.sh: line 299: go: command not found
./scion.sh: line 299: go: command not found
./scion.sh: line 299: go: command not found
./scion.sh: line 299: go: command not found
...

and yet the test passed.

That has been fixed. For example https://buildkite.com/scionproto/scionproto/builds/2633#8a096694-ba33-435f-b2dc-91aeeaad8d8d fails in linting.


fix scanBarcode property not working in iOS issue

Summary
This PR will fix #476
For iOS , there's no matching property defined in native, update scanBarcode property in component will not working.
How did you test this change?

Assign scanBarcode={false} to CameraScreen in example project.
Scan barcode, check whether navigate to result screen.

@scarlac Very appreciate if you could review this PR.

@scarlac  Thanks for your comments!
Remove the event handler in JS maybe works, but this scanBarCode prop working well on Android platform but not in iOS, The inconsistent may need extra workarounds in iOS.
This will keep consistency with both platforms and let this prop working as expected.


How to get side effects from actions

Thanks for the new V4 release, awesome! I try to use the built-in interpreter and have a question. My understanding is that when you send an event, the interpreter executes the involved actions. But how do you get the side effects? through context? or should I write my own interpreter for that?

Thanks! What do you mean by "getting the side effects"?

Thanks for the prompt reply, David!  What I mean by "side effect" is seen in your article about Flickr Gallery handled by the command function. So it goes like this:

the fetchJsonp function issues a call to the transition function with an action object:
this.transition({ type: 'SEARCH_SUCCESS', items: data.items });
the transition function transitions to the new state, and then calls the command function
the command function returns { items: action.items } (this is where I see the term 'side effect' and 'extended state' used together.
the transition function calls setState with the returned result from command.
With release 4, what is the recommended approach to pass result handled by functions like the command? Thanks.

I need to rewrite that article; it's not up to date anymore. Sorry!

... what is the recommended approach to pass result handled by functions like the command?

If the functions are true side-effects, it's recommended to not return anything from those functions (that is, their return type should be void).
If you need the return value of the function to change the extended state (context) of the machine, then use assign(): https://xstate.js.org/docs/guides/context
Otherwise, if you need to communicate (async) with some other service, use invoke: https://xstate.js.org/docs/guides/communication/

Could you clarify the difference between side effect and extended state?
Regarding the Flickr Gallery example, it would be great to see that updated and included in the doc. Again thanks for a very detailed tutorial there, it helped a lot!
Should I use assign() outside of the interpreter, or call it from inside? I am hesitant in using context because I would still need to update React state later on.
Would you recommend using assign() or 'invoke' to fetch the pix in the Flickr example?

I'll update the Flickr example soon - will be more idiomatic.

Closing as this is in the docs. You can also see the side effects returned from actions in the state.actions array.


ListFormatter: lock lines with a mutex

Hello,
Tried to track down the issue in #2101 by compiling newsboat with ASAN and launching it with the following config:
auto-reload yes
reload-threads 32

It looks like the bug is caused by one of the StflRichText being referenced after being freed.
I'm pretty sure there are better ways to fix this. Especially given that this patch removes the const attributes to two methods

Thank you for the PR! This together with #2959 makes me think that the problem is somewhere higher up the callstack, and indeed it looks like an interaction between the main thread and the reload thread:

once a feed is loaded, reload thread updates the feedlist: Reloader::reload() → Controller::replace_feed() → FeedListFormAction::set_feedlist() → ListWidgetBackend::invalidate_list_content(). If there are a lot of feeds and a lot of threads loading them, these calls can happen many times a second
navigating the list happens in the main thread, whose backtrace we can see in #2101: FeedListFormAction::process_operation() → … → ListMovementControl<newsboat::ListWidgetBackend>::move_up() → … → ListWidgetBackend::render()

Both of these end up modifying the ListFormatter, so that's where the problem manifests itself. However, I think ListWidgetBackend is a better place to fix this, because that's what represents the list; the formatter is just an implementation detail. #2959 takes a stab at it, but I think the mutex should protect all private members, and should be held by all methods, to avoid any discrepancies between protected and unprotected members.
Does it make sense to you @XeR? Can you try that approach and check if it fixes the two crashes?


czkawka: 7.0.0 -> 8.0.0

Things done
Changelog: https://github.com/qarmin/czkawka/releases/tag/8.0.0

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 347878

x86_64-linux

:white_check_mark: 2 packages built:

czkawka
czkawka-full

aarch64-linux

:white_check_mark: 2 packages built:

czkawka
czkawka-full

x86_64-darwin

:white_check_mark: 2 packages built:

czkawka
czkawka-full

aarch64-darwin

:white_check_mark: 2 packages built:

czkawka
czkawka-full


Adoptium Archive download page does not provide checksums for several packages

Question
Hi,
Downloading and checking some packages from the page:
https://adoptium.net/temurin/archive/?version=11
The SHA256 checksums seem to be provided for .zip archives only, they do not match the .msi files.
But there is only one column that provide the checksum values.
Could you please provide checksum values that fit the .msi packages?
Thanks in advance.

Context
Java version:

Your operating system and platform:
windows 11 21H2 on x86-64

@gdams we have the checksum for the MSI for the latest release so I assume we have those stored forever.  Shall I transfer this to the website repo?


Notary does not find Yubikey

I have installed Notary 0.4.3 alongside with yubikey-piv-manager and yubico-piv-tool 1.5.0
I cann access my yubikey with the yubico-tool and the piv manager, but notary key generate doesn't find the appropriate libs/devices.
OS: Ubuntu 16.04.02 LTS
Notary: 0.4.3
yubikey-piv-tool: 1.5.0

when installing yubico-piv-tool 1.4.0 I think NOtary fnds the key but panics out with the following report
`atal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x0]
runtime stack:
runtime.throw(0x99e364, 0x2a)
/usr/local/go/src/runtime/panic.go:566 +0x95
runtime.sigpanic()
/usr/local/go/src/runtime/sigpanic_unix.go:12 +0x2cc
goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x8012b0, 0xc420049e88, 0xc400000000)
/usr/local/go/src/runtime/cgocall.go:131 +0x110 fp=0xc420049e58 sp=0xc420049e18
github.com/docker/notary/vendor/github.com/miekg/pkcs11._Cfunc_New(0x1cccfa0, 0x0)
??:0 +0x4a fp=0xc420049e88 sp=0xc420049e58
github.com/docker/notary/vendor/github.com/miekg/pkcs11.New(0x994909, 0x1b, 0x0)
/go/src/github.com/docker/notary/vendor/github.com/miekg/pkcs11/pkcs11.go:755 +0xa1 fp=0xc420049ec8 sp=0xc420049e88
github.com/docker/notary/trustmanager/yubikey.init.1()
/go/src/github.com/docker/notary/trustmanager/yubikey/yubikeystore.go:98 +0xb6 fp=0xc420049f30 sp=0xc420049ec8
github.com/docker/notary/trustmanager/yubikey.init()
/go/src/github.com/docker/notary/trustmanager/yubikey/yubikeystore.go:915 +0x91 fp=0xc420049f38 sp=0xc420049f30
github.com/docker/notary/client.init()
/go/src/github.com/docker/notary/client/witness.go:70 +0x9b fp=0xc420049f40 sp=0xc420049f38
main.init()
/go/src/github.com/docker/notary/cmd/notary/util.go:55 +0x4b fp=0xc420049f48 sp=0xc420049f40
runtime.main()
/usr/local/go/src/runtime/proc.go:172 +0x1bf fp=0xc420049fa0 sp=0xc420049f48
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc420049fa8 sp=0xc420049fa0
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2086 +0x1
`

building source fixed the issue. But using the provided binary doesn't

building source fixed the issue. But using the provided binary doesn't

Thanks for report this, we'll see what happened with the provided binary.

I think it's not build with -tags pkcs11 I just built it like this go build -tags pkcs11 that works fine for me

Thanks for the feedback @florianeichin


.value with roundtrip does not update sub-dicts

When the value in a nested dictionary is changed, calling .dumps() or calling .value or on a parent dictionary sometimes does not show the updated values of the child.
To reproduce:
import bespon
ast=bespon.loads_roundtrip_ast("""
a=
    b=c
""")
ast['a']['b'].value='d'
print(ast.value['a']['b']) #Outputs "c" instead of "d"
print(ast['a'].value['b']) #Outputs "c" instead of "d"
print(ast['a']['b'].value) #Works as intended, prints "d"
ast.dumps() #Works as intended, prints "'\na=\n    b=d\n'"

ast.replace_val(['a','b'],'d') works the same way.
However, when the .value in the set command is moved to either of the parents, the effect is reversed:
import bespon
ast=bespon.loads_roundtrip_ast("""
a=
    b=c
""")
ast.value['a']['b']='d' #Changed this line (also acts the same as ast['a'].value['b']='d')
print(ast.value['a']['b']) #Works as intended, prints "d"
print(ast['a'].value['b']) #Works as intended, prints "d"
print(ast['a']['b'].value) #Outputs "c" instead of "d"
ast.dumps() #Outputs "'\na=\n    b=c\n'" instead of "'\na=\n    b=d\n'"

Note: Haven't tested replace_key

There are a few different things going on here.

There was a bug, which should be fixed by the last commit. The AST keeps an internal representation of itself (which is what .value returns), and this wasn't being updated for collections like lists and dicts.
There are some limitations in the current architecture. You want to always do things like ast['a']['b'].value='d' instead of ast.value['a']['b']='d'. With ast['a']['b'].value='d', you are modifying a value in the AST itself. With ast.value['a']['b']='d', you are first accessing the AST's representation of itself (ast.value), then going into that representation (ast.value['a']['b']) and making an assignment. So you are changing the representation but not the AST itself. Currently, everything operates under the assumption that the representation (ast.value) is treated as immutable by the user; all modifications to it are made indirectly through the AST. I've updated the README to reflect this. I believe it would be possible to avoid this limitation, but likely at the expense of needing a much more complex algorithm.


Coq 8.15.2

Using the same versions as Coq Platform 2022.04.1 for Coq 8.15.
https://github.com/coq/platform/blob/main/package_picks/package-pick-8.15~2022.04.sh

@kazk It would be really great though if the package set used could be extended beyond just Equations and mathcomp-ssreflect. The Coq Platform is a standard in the Coq ecosystem, as it contains many small but very convenient packages that Coq users may want to use or may learn about when asking questions in Coq's Zulip forum. Not providing them would be a bit like not providing mathlib in Lean (you are really disarmed without them). If you provide a size limit, the Coq Platform team may be able to come up with a list of recommended small but useful Coq Platform packages that fits in this limit.
cc Coq Platform team members @MSoegtropIMC @palmskog @gares

Yeah, we can extend as needed, like other languages. Equations and mathcomp-ssreflect are installed because we already have them in 8.12.
Anything we add should be already useful on Codewars, or is required to author a new kata. Might be easier to start adding a few as needed instead of coming up with a list.

If you provide a size limit

The image is currently 1.14 GB, and I'd like to keep it under 1.5 GB if possible.
Most of our images are under 1 GB. Agda is 278 MB.

@kazk  the mathlib version for Lean you already have on Code Wars already contains around 350k lines of Lean code. In contrast, the Coq libraries available (Stdlib + mathcomp-ssreflect) are around 170k lines of Coq code. Can you explain how your minimization requirements apply across both Coq and Lean?

The number of lines of code is irrelevant.
I actually meant to mention Lean and not Agda because @Zimmi48 mentioned it. Our Lean image is 844 MB.
Like I wrote above, most of our images are under 1 GB, and I'd prefer to keep Coq under 1.5 GB if possible.


[GPT-33] Post: Create Table of Contents

See https://jez.io/pandoc-markdown-css-theme/ for inspiration. Should be responsive in design.
From SyncLinear.com | GPT-33

https://handlebarsjs.com/
https://ghost.org/docs/themes/
/post.hbs
Page css are in /assets/css/site/
https://github.com/AdvisorySG/dawn-advisory-theme/blob/main/assets/js/main.js

Will be closing it for now since it is not an important issue + we might be moving towards a dropdown format instead


Updated how transaction result is represented [ECR-3693]

Overview
Updated how transaction result is represented. This PR uses an alternative format with an enum to represent the error kind, yet to be done in the core (ECR-3717).
Dropped the internal type representing the transaction result. It has both pros and cons:

(+) No need for an extra value type(s) and conversion code
(?) Directly serializable in protobuf
(-) Less-than-optimal interface and documentation of the generated code.
(-) Less freedom to hide any complexities and/or provide better interface.
(-) Worse JSON compatibility.

See: ECR-3693
Definition of Done

[ ] There are no TODOs left in the code
[x] Change is covered by automated tests
[x] The coding guidelines are followed
[x] Public API has Javadoc
[x] Method preconditions are checked and documented in the Javadoc of the method
[ ] Changelog is updated if needed (in case of notable or breaking changes)
[ ] The continuous integration build passes

Coverage decreased (-0.005%) to 86.059% when pulling 3b67e288999288f78f960cc55ca4f844ae75f30e on dmitry-timofeev:fix-tx-result-ECR-3693 into ab0cc993d475bcb1814ed7e0ba0f92a20f0e05f2 on exonum:dynamic-services.


[WIP][SPARK-40427][SQL] Move LIMIT/OFFSET CheckAnalysis error messages to use the new error framework

What changes were proposed in this pull request?
Move LIMIT/OFFSET CheckAnalysis error messages to use the new error framework.
This will help improve the usability of Apache Spark as a product, and link against documentation.
Why are the changes needed?
Error messages related to SQL query analysis in Apache Spark need some work to make them more descriptive and actionable.
Does this PR introduce any user-facing change?
Yes, error messages change.
How was this patch tested?
Unit test and query test coverage shows the updates in error messages received.

Can one of the admins verify this patch?


View orders does not display anything when clicked on in portfolio pg after market creation

I created a cat 4 market (3 + invalid)  Confirmed market creation which brought me to Portfolio pg....showed i had orders which needed to be signed...I had to sign 5 mm boxes...view orders still remains and nothing in there.

closing


[Provider Patch] Implement the Patch support for DerivceCustomResource

Add a patch field in the DerivceCR's exposeconfig:
apiVersion: catalog.kubecarrier.io/v1alpha1
kind: DerivedCustomResource
metadata:
  name: couchdbs.eu-west-1
  namespace: provider-example-cloud
spec:
  baseCRD:
    name: couchdbinternal.eu-west-1.example.cloud
  kindOverride: CouchDB
  expose:
  - versions:
    # versions of the CRD that this expose config can be applied to
    - v1alpha1
    # fields that are exposed on the external/public instance
    fields:
    - jsonPath: .spec.username
    - jsonPath: .spec.password
    - jsonPath: .status.address
    - jsonPath: .status.fauxtonAddress
    - jsonPath: .status.observedGeneration
    - jsonPath: .status.phase
    patch:
      spec:
        image: couchdb-supreme
        version: v3.14
status:
  phase: Ready
  conditions: []
  observedGeneration: 10

Additionally, the patch logic should be implemented in the tenantobj_controller of Elevator.

Needs complete concept - closing for now as defaulting is complicated see #312


weighted interventions

Description

adding weighted interventions to optimize

will need to merge this first:
https://github.com/DARPA-ASKEM/pyciemss-service/pull/121


save patch + file browser: clicking on already saved file puts full path in name box

... the preset is overwritten fine but with pathname instead. pathname appears in dropdown afterwards.
to reproduce:

switch to VPL
select nodes
save patch naming it e.g. "test1"
save patch again, click over 'test1', press Save
'your patches' list now contains .json pathname


Implement dialog box to display about application

For me, the dialog closes on it's own automatically after a few seconds. Is that intended?


Credits (Feature Request)

This is a simple example about how to read module.json file and provide some credits.
Most of the "Module" facade attributes are protected, thus a direct reading was required.
Should not be merged directly, this is still a maturing idea
Closes #1867 when finished 😺

Sorry... I read to not do it until the other ticket was closed. Whoops. Can you reopen?

Technically looks like I can't re-open this anymore, but I can send it again as a different PR maybe 🐱 Will look into it.


PR sent to master are accepted by default

See https://github.com/algolia/instantsearch.js/pull/930
cc @pixelastic?

Hmm, yes that's weird.

What is even weirder is that it's not that the Travis check is always succeeding, it's that the Travis check does not even start.

^ actually, I got confused by the GitHub display. I'm testing PR on master/develop.


unit tests

This package needs some unit tests. I'm not sure how to get access to a shared key for communicating with APNS though. Does apple have any public dev keys?

As discussed, there are no public developer keys :(
Ill work on doing mocks.

Lots of tests are in. We stilll don't have a way to test that the network calls happen. I haven't been able to make an HTTP/2 Server work yet.
Im stil working on it though.

Lots of tests are in. We stilll don't have a way to test that the network calls happen. I haven't been able to make an HTTP/2 Server work yet.

If we can help you with getting an HTTP/2 server up and running, please reach out.

@weissi is there any demo code for a HTTP/2 Server?

@kylebrowning Yes, there is.
For most unit tests you won't even need a HTTP/2 server, for example, you could just put APNSwiftRequestEncoder or APNSwiftResponseDecoder in an EmbeddedChannel and you don't even need a real network connection or threads or anything.
The cool thing with NIO is that you can just trust that the HTTP/2 implementation is tested elsewhere and you can simulate the HTTP/2 server within an EmbeddedChannel without even spinning up a client and a server. Sure, you'll want a few full integration tests as well where you actually do the whole thing but to verify that your individual handlers work, EmbeddedChannel should be great.

@kylebrowning there you go, wrote you three example test cases for APNSwiftRequestTests.swift:
    func testResponseDecoderBasics() throws {
        let channel = EmbeddedChannel(handler: APNSwiftResponseDecoder())

        // pretend to connect the connect (nothing real will happen)
        XCTAssertNoThrow(try channel.connect(to: .init(ipAddress: "<IP_ADDRESS>", port: 5)).wait())

        // send a valid server response
        let resHead = HTTPResponseHead(version: .init(major: 2, minor: 0), status: .ok)
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.head(resHead)))
        var buffer = channel.allocator.buffer(capacity: 16)
        buffer.writeString("foo bar")
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.body(buffer)))
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.end(nil)))

        // now, let's check that we read the response correctly
        let maybeResponse = try channel.readInbound(as: APNSwiftResponse.self)
        guard let response = maybeResponse else {
            XCTFail("no response produced")
            return
        }
        XCTAssertEqual(APNSwiftResponse(header: resHead, byteBuffer: buffer), response)

        // finally, let's check that there's no other stuff produced on the channel
        XCTAssertNoThrow(XCTAssertNil(try channel.readInbound(as: APNSwiftResponse.self)))
        XCTAssertNoThrow(XCTAssertTrue(try channel.finish().isClean))
    }

    func testResponseDecoderHappyWithReceivingTheBodyInMultipleChunks() throws {
        let channel = EmbeddedChannel(handler: APNSwiftResponseDecoder())

        // pretend to connect the connect (nothing real will happen)
        XCTAssertNoThrow(try channel.connect(to: .init(ipAddress: "<IP_ADDRESS>", port: 5)).wait())

        // send a valid server response
        let resHead = HTTPResponseHead(version: .init(major: 2, minor: 0), status: .ok)
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.head(resHead)))
        var buffer = channel.allocator.buffer(capacity: 16)
        buffer.writeString("foo bar")
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.body(buffer.getSlice(at: buffer.readerIndex,
                                                                                length: 3)!)))
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.body(buffer.getSlice(at: buffer.readerIndex + 3,
                                                                                length: 4)!)))

        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.end(nil)))

        // now, let's check that we read the response correctly
        let maybeResponse = try channel.readInbound(as: APNSwiftResponse.self)
        guard let response = maybeResponse else {
            XCTFail("no response produced")
            return
        }
        XCTAssertEqual(APNSwiftResponse(header: resHead, byteBuffer: buffer), response)

        // finally, let's check that there's no other stuff produced on the channel
        XCTAssertNoThrow(XCTAssertNil(try channel.readInbound(as: APNSwiftResponse.self)))
        XCTAssertNoThrow(XCTAssertTrue(try channel.finish().isClean))
    }

    func testResponseDecoderAcceptsTrailers() throws {
        let channel = EmbeddedChannel(handler: APNSwiftResponseDecoder())

        // pretend to connect the connect (nothing real will happen)
        XCTAssertNoThrow(try channel.connect(to: .init(ipAddress: "<IP_ADDRESS>", port: 5)).wait())

        // send a valid server response
        let resHead = HTTPResponseHead(version: .init(major: 2, minor: 0), status: .ok)
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.head(resHead)))
        var buffer = channel.allocator.buffer(capacity: 16)
        buffer.writeString("foo bar")
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.body(buffer)))
        XCTAssertNoThrow(try channel.writeInbound(HTTPClientResponsePart.end(["foo": "bar"])))

        // now, let's check that we read the response correctly
        let maybeResponse = try channel.readInbound(as: APNSwiftResponse.self)
        guard let response = maybeResponse else {
            XCTFail("no response produced")
            return
        }
        XCTAssertEqual(APNSwiftResponse(header: resHead, byteBuffer: buffer), response)

        // finally, let's check that there's no other stuff produced on the channel
        XCTAssertNoThrow(XCTAssertNil(try channel.readInbound(as: APNSwiftResponse.self)))
        XCTAssertNoThrow(XCTAssertTrue(try channel.finish().isClean))
    }

feel free to just copy them in. The only other changes you'll need are a few imports:
import NIO
import NIOHTTP1
import NIOHTTP2

and also you need to make APNSwiftResponse Equatable, literally by adding : Equatable next to the definition.

(btw, the third test I wrote for you reveals a bug: if the server responds with any trailers (which is totally might do), you hit a precondition...)

@weissi Thanks, will look into this very soon. Appreciate it!


⚠ Bofrost.at has degraded performance

In 4f23a48, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2095 ms

Resolved: Bofrost.at performance has improved in 03b760f after 13 minutes.


Unable to verify contract created by another contract

Component
Forge
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
forge 0.2.0 (906ba37 2022-09-25T00:04:37.878963958Z)
What command(s) is the bug in?
forge verify-contract
Operating System
Linux
Describe the bug
Was able to verify the factory contract but when I try to verify a contract created through the factory, it fails.
Using this command to verify:
forge verify-contract --chain-id CHAINID --num-of-optimizations 1000000 --watch --compiler-version 0.8.17+commit.8df45f5f CONTRACT_ADDRESS LlamaPayV2Payer API_KEY
it fails with the response "NOTOK" and the details "Fail - Unable to verify"
Tried it with multiple testnets and I am having the same issue
Contract created from
Contract I'm trying to verify

Marking as duplicate of https://github.com/foundry-rs/foundry/issues/6023
It is possible that this case has also been resolved over time as this is quite a common pattern