Create accumulator element (for loss) directly on the device

…rectly on the device
What does this PR do?

Fixes #12408
Does your PR introduce any breaking changes? If yes, please list them.
No
Before submitting

[x] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together?
[x] Did you make sure to update the documentation with your changes? (if necessary)
[x] Did you write any new necessary tests? (not for typos and docs)
[x] Did you verify new and existing tests pass locally with your changes?
[x] Did you list all the breaking changes introduced by this pull request?
[x] Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review
Anyone in the community is welcome to review the PR.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[x] Is this pull request ready for review? (if not, please submit in draft mode)
[x] Check that all items from Before submitting are resolved
[x] Make sure the title is self-explanatory and the description concisely explains the PR
[x] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
Make sure you had fun coding 🙃

@carmocca is it possible to trigger the ci-tests again? Looks like some pip dependency error was raised, which is unrelated to this PR. Build infrastructure hickup?


What is the relationship between theme and attributes?

Hi,
I was wondering what is the relationship between theme and attributes. For example, if I update one of the Attributes in attribute do the attributes in theme get update as well?
Best,

Can you give an example code sample of what you mean?

@SimonDanisch There is not much to go by from the docs when defining recipes. It only uses either Theme or Attributes
For example if I want a recipe that uses both a Theme and Attributes I would expect something like
@recipe(MyPlot) do scene
    Theme(
        a = :red
     )
    Attributes(
        b = :blue
    )
end

But it does not. I can not access both myplot.a and myplot.b in the plot! function. This should be somehow specified in the docs. Is there a way how to use both? I can then add it to the docs.

Theme is just a shorthand for Attributes.  I think it was introduced because we were planning on moving away from Attributes, but I'm not 100% sure.

julia> Theme
Attributes

julia> Attributes
Attributes

julia> Theme == Attributes
true

OK then. Thank you. I will change Attributes in the documentation to avoid more confusion then and submit a PR. Then this issue can maybe be closed?

I don't know why it included the other commits... Why is this?

this is such a foot gun, have we decided what to use? if so we should remove all Attributes in docs at least, and throw a deprecation in code, I can do it


Lexical or Preprocessor Issue (Xcode): 'TensorFlowLiteC.h' file not found

I have the error when running the project using this plugin?
Any solution for this?

The same problem for me. Anyone has a solution ?

Same problem + 1

The solution is to set the version for tflite in the podfile/podfile.lock to 2.2.0. It looks like version 2.9.x is not supported yet by this flutter plugin

target 'Runner' do
  use_frameworks!
  use_modular_headers!

  pod 'TensorFlowLiteC', '2.2.0'

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
  target 'RunnerTests' do
    inherit! :search_paths
  end
end

works


Add Packer installation instructions to README

Thanks, this is long overdue!
I will merge this after I push some small additions to your PR, notably:

[ ] use config field in Packer spec to run .setup()
[ ] add instructions for Lazy as well (which is what I use)


Wobbling when zooming in Chrome

I experience a strange wobbling behaviour in Chrome when zooming:

My setup:
MacOS 10.11.6
Chrome  61.0.3163.100
NVIDIA GeForce GT 750M
deck.gl 4.1.3
luma.gl 4.0.4
react-map-gl 3.0.4
mapbox-gl 0.38.0

I can reproduce the problem when using just one GeoJsonLayer but also with some custom layers.
It doesn't seem to be related to fp64, because it doesn't depend on the zoom level.
Same problem could be reproduced on two other Macbooks with Intel on-board graphic cards.
The problem can be seen on both my Macbook Pro retina screen as well as on an external monitor, but is significantly more pronounced on the retina display.
I have Chrome Canary on the same machine where the problem cannot be reproduced.  So chances are it's a Chrome rendering bug.
I accidentally found a workaround. Adding this 2D canvas overlay beside <DeckGL> magically solves the problem:
class AntiWobbleLayer extends PureComponent {

  componentDidMount() {
    this._redraw()
  }

  componentDidUpdate() {
    this._redraw()
  }

  _redraw() {
    const canvas = this.refs.overlay
    const ctx: CanvasRenderingContext2D = canvas.getContext('2d')
    ctx.clearRect(0, 0, this.props.width, this.props.height)
  }

  render() {
    return (
      <canvas
        ref="overlay"
        width={this.props.width}
        height={this.props.height}
        style={{
          width: `${this.props.width}px`,
          height: `${this.props.height}px`,
          position: 'absolute',
          pointerEvents: 'none',
          left: 0,
          top: 0,
        }}
      />
    )
  }
}

If I comment the line with ctx.clearRect() above, the problem is back.

@ilyabo
Thanks for the very detailed report, it is very helpful. We started seeing other rendering issues (e.g. flickering graphics and background maps) as soon as Chrome 61 autoupdates started, so it may indeed be a browser issue. I guess you could test on Firefox and Safari as well to collect further evidence.
Especially given your fix, it looks like a graphics synchronization issue, as if chrome had changed their graphics stack and changed ordering of operations. Especially as your clear call changes the order and restores synchronization.
Since mapbox and deck.gl draw in different canvases/different WebGL contexts, it is a good questions if there are guarantees that the browser must update them in sync. Worst case, Chrome has changed behavior but is still spec compliant.
In any case, perhaps we can build in something like you anti-wobble layer into the DeckGL component.
@shaojingli @Apercu @georgios-uber

I remember seeing the issue in Safari once, but I couldn't reproduce it now. Didn't see it in Firefox.
Note that AntiWobbleLayer is pure, hence clearRect is only called once, and that's enough to fix the problem.

Pinging @samccone to see if he has any insights. Sam, I recall seeing something about Chrome <canvas> changes when you were working with Shirley Wu on the regressions in her large <canvas>.  Does this seem related to the internal changes made? Should we file a crbug?

Happy to take a look, could someone stand up a demo for me somewhere where this is reproducible?
Thanks!

@samccone it might be a different issue, but I'd also appreciate it if you took a look at https://github.com/uber/deck.gl/issues/1067 as well. There are standalone demos.

Found one easy way to reproduce (at least on my Mac). Just add opacity to DeckGL:

Works with the deck.gl example layers, e.g. GeoJsonLayer and Scatterplot:

Note, that opacity is not the only way. I think I could see it after setting mixBlendMode also. And in my app it can be reproduced with neither of those.

Thanks @ilyabo , I can also reproduce this with any layer using layer-browser example by setting style={{opacity: 0.5}}, @ibgreen

Tested on Safari and Firefox, no issue there, so this is specific to Chrome.

@1chandu This is specific to Chrome 61. It is fixed on Chrome 62 and did not happen before 61.

@georgios-uber I'm still seeing this on Chrome 62 on an Nvidia GPU w/ High Sierra btw, so not fixed on their end yet.

Tested with Chrome64, can't reproduce it.


Give an example for an application from the Python Package Index

The README.md currently shows an example of how to use linuxdeploy-plugin-conda for an application that is "in" Conda, using export CONDA_CHANNELS=freecad CONDA_PACKAGES=freecad.
However, not all applications are "in" Conda. I think they can still be installed using pip if they are "in" the Python Package Index (PyPI). Python should be taken from (Mini)conda and the application from PyPI in this case.
Can you please give an example of how to use linuxdeploy-plugin-conda to produce an AppImage of, say, https://pypi.org/project/galacteek/?
Reference:
https://github.com/eversum/galacteek/issues/1#issuecomment-450564424

You're right, this information is missing right now in the README. For now, here's some info:
export PIP_REQUIREMENTS=dep1:dep2 can be used to list dependencies that need to be installed from PyPI. If you have local dependencies, you can also add paths there, e.g., export PIP_REQUIREMENTS=/.../path/to/dep1:pypi_dep2. If those local dependencies assume you to be in a specific directory (some packages have a setup.py which does not calculate paths to files it needs properly but just assumes you to be in the same dir, for instance), you can export PIP_WORKDIR=....

Thanks for the pointers. Can you add an example please?

I think this serves the purpose. Thank you.

For now, something like https://github.com/probonopd/linuxdeployqt#projects-using-linuxdeployqt would be better than nothing. Do you want me to add some examples there?

Please feel free to do so. Writing a little guide right now.


Linux PREEMPT_RT

Hi,
Wondering if anyone has taken at stab at using the Linux PREEMPT_RT patch with Rust to run some real-time(ish) tasks?
Thanks,

I have experience, unrelated to my Rust work, of maintaining the PREEMPT_RT patches (back against 2.6).  By-and-large the patch has little or nothing to do with Rust; the patches change the behavior of the kernel and how it interacts with userspace but userspace applications (like those written in Rust running on Linux) do not require changes.
The only thing you might do different in a system running a kernel patched with CONFIG_PREEMPT_RT relates to how you set up scheduling priorities for your process.  That's pretty outside of the scope of anything that we would really care about here as none of this changes the fundamental APIs by which applications interact with devices from userspace.
In general, my experience has been that when doing things like SPI you can expect some decreased latencies on average with PREEMPT_RT on a loaded system.  If you have really tight constraints and hard requirements on realtime behavior you'll be better suited using a coprocessor to do the realtime work (which could be running rust) or writing a kernel driver (this doesn't provide perfect guarantees but eliminates the userspace roundtrips).  Some newer stuff in the kernel like BPF that allow for pushing of behavior into kernelspace from userspace may eventually give us some additional options for banging bits without the userspace overhead and without sacrificing safety.

The only thing you might do different in a system running a kernel patched with CONFIG_PREEMPT_RT relates to how you set up scheduling priorities for your process.

That's what I'm trying to figure out how to do.  I tried looking for something resembling the pthread_attr_setschedpolicy and pthread_attr_setschedparam methods in C but no luck.  The closest I was able to find is this: https://github.com/chocol4te/nylon/blob/master/examples/cyclic.rs
I guess I'm just surprised nobody has come out with a cleaner way to go about this

Might be worth exploring adding wrappers for sched_* to nix as a start to making things more accessible.  Some of the sched functions are covered by not sched_setscheduler: https://github.com/nix-rust/nix/blob/master/src/sched.rs

Yeah, the nix crate was the first place I looked.  Then I turned here thinking that more folks in this space are concerned with scheduling.
Closing this off as I think it's probably not the correct forum.
Thanks for taking the time to reply Paul

Yeah, the nix crate was the first place I looked. Then I turned here thinking that more folks in this space are concerned with scheduling.

No problem, I happen to be a maintainer (though not too active recently) of nix as well.  I think looking at nix makes sense to add the safe syscall portion.

Created https://github.com/nix-rust/nix/issues/1260.  Let's see what comes out of it.


Add math typesetting support in descriptions

So I'm fond of making Kata's that are related to Math/Physics/Chemistry.(honestly I can't believe no one has opened an issue about this)
Can we kindly have support for Latex / MathJax or a similar utility in order to make creation of above mentioned Kata's a whole lot easier.
I will be awaiting a response from the dev team on whether it is feasible or not
tagging for attention @jhoffner , @kazk

@kazk thanks, for taking the time to take a look. It'd be really great if it could be done

@kazk thanks, for taking the time to take a look. It'd be really great if it could be done

I'd like to second this feature request. Now that we have Lean support on Codewars and a significant portion of Lean users are pure mathematicians, we'd like to author more theorem-proving Kata more suited to their tastes, and that sometimes means using mathematical notation familiar to them in the Kata description (as opposed to, say, ASCII workarounds). But it's currently rather difficult to do so in a pleasant manner; for example, in Mathematical Analysis - Limits of Sequences #1, I've had to typeset the mathematical notation in an external editor, take a screenshot of the rendered output, post the images on imgur and paste the links in the description ... which just looks horrible. Adding MathJax support or similar would probably make typesetting mathematics in Kata descriptions much easier and produce a much more pleasant visual output.

@DonaldKellett Yeah, I was thinking the same. I did experiment with KaTex some time ago and it was pretty easy to add support using Markdown code block:
```katex
```

or maybe
```math
```

This will work for places where the client side library is used to render the markdown like kata descriptions, but it'll just show the TeX markup anywhere else.

Would it be possible to display math inline though using built-in KaTeX / MathJax support or similar? See the revised Kata description for Mathematical Analysis - Limits of Sequences #1 for an example (I achieved that effect for now by generating MathML code from the MathJax website and copy-pasting the output into the Kata description).

MathML is not supported by Chrome. See https://caniuse.com/#feat=mathml
For inline Math typeset, we'll need some way to detect it.
I think I've seen some Markdown extension that does it with $:
`$ math $`

I'll go with math code block and code span starting and ending with $.
# KaTeX Example

Suppose `$ x_n \leq l \leq y_n $` and `$ \lim_{n\to\infty} (x_n - y_n) = 0 $`,
prove that `$ \lim_{n\to\infty} x_n = \lim_{n\to\infty} y_n = l $`.

```math
x_n \leq l \leq y_n
```

```math
\lim_{n\to\infty} (x_n - y_n) = 0
```

```math
\lim_{n\to\infty} x_n = \lim_{n\to\infty} y_n = l
```

Deployed. @DonaldKellett Let me know if you find any issues. It's currently only for the kata description and not comments.

Thanks for implementing KaTeX support, I've updated my 4 analysis Kata to use KaTeX instead and it's working like a charm ❤

@kazk Does this also work for kumite? I was trying to write a kumite with some latex in the description and it didn't seem to work (both inline and display mode).

No, it only works for kata descriptions at the moment. Anywhere else, the markdown is rendered on the server and doesn't handle this syntax. This will probably change in the future, but not anytime soon.

Okay, thanks for letting me know.


Add Docker

Add Dockerfile
Add k8s
Add Make file for building image and pushing it

Codecov Report

Merging #8 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master      #8   +/-   ##
======================================
  Coverage    79.5%   79.5%
======================================
  Files          18      18
  Lines        1137    1137
======================================
  Hits          904     904
  Misses        171     171
  Partials       62      62

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 4a43fe3...1fe80e2. Read the comment docs.


Specifying the path to Zig leads to error "cant find Zig in PATH" and does not set the path to Zig

I installed the extension on Windows 11.
This pops up when I open my existing project:

I choose "Specify Path"
I then navigate to where zig.exe already is (I can't choose a folder so I guess it wants that):

Which then leads to this error notification:

Then after that when I restart vscode the extension asks me again to locate Zig. The setup dialog did not set the path in settings.
I dont know if that's a bug or if I'm missing some kind of way to set this up, but it looks like a bug considering how obvious those steps are

Pretty sure I hit this every time I started playing with zig after being away for months. I was always confused whether it wanted me to pick the executable or the directory it was in. When I randomly guess right I forget about it again.

The prompt should not allow you to select a folder so that should not be an issue. Does the "cant find Zig in PATH" popup persist or is it only shown after you select the path? And can you confirm that in your settings file there is a zig.path: "some/path/to/zig.exe" pointing to a valid Zig binary?
This step may soon be automated by #230 so hopefully this issue should get resolved at the latest by then.

Does the "cant find Zig in PATH" popup persist or is it only shown after you select the path?

It is shown after I choose the path, but then I can repeat this forever if I restart VSCode.

can you confirm that in your settings file there is a zig.path: "some/path/to/zig.exe" pointing to a valid Zig binary?

Nope, as I said it doesn't fill that setting.


[R] warning for deprecated watchlist argument in xgb.train()

Regarding the renaming of watchlist to evals in `xgb.train()?  as per https://github.com/dmlc/xgboost/pull/10032 , we might consider raising a warning.
Often, the main training logic in R is to use xgb.train() with early stopping on the watchlist. By renaming the watchlist argument, such cases will accidently use the training data for early stopping, which means that the model does not stop training until the maximum possible number of rounds is reached. This happens silently, so we might consider this warning.

@david-cortes


Investigate better alternatives to entity graph

Test & prototype implementation with Blaze Persistence instead of Entity Graph

The developers of Blaze Persistence see entity views as a better alternative to JPA 2.1 entity graphs...

[ ] Test Inheritance

[ ] Test Updates

[ ] Test Transactions

Query again after update?
Insert data after transaction begin?

[ ] Test Filters

Is it possible to add kotlin jdsl?
evm.applySetting(setting, cbf.create(...).also { // add jdsl })

[ ] Codegen Views

As Blaze does not allow recursive views generate copies until threshold e.g. 2
Analyze schema or DTOs?
How to model skip over?

Model in schema?
How to omit m:n tables in schema?
Custom GraphQLEntityViewSupport

[ ] Codegen Selection

Selection should be possible without GraphQL DataFetchingEnvironment!

Custom GraphQLEntityViewSupport

Remove FullNonRecursiveSelection => Generate Full Simple Selection for every Type

Generate Simple Selection DSL
select(Show.DSL {
	actors {
		firstname()
		lastname()
		companies {
			users()
		}
	}
})

[ ] Generate real data classes instead of bytebuddy proxy

See TupleConstructorReflectionInstantiator

Investigated from last month till now blaze persistence and tested different functions (tests were done in crude manner in private repositoy). Tests seem quite positive in the sense that they could improve bee.persistent. This issue and related branch will try to replace the current entity graph implementation with blaze persistence.


Test Suite

The Python-based test suite should verify, that the general setup of the different components is working.
Prerequisites

reference the actual mailserver (bare-metal or container setup) as mail.sut.test providing (virtual) mail addresses @sut.test

Test Cases

[ ] Configuration Verification

read relevant configuration files

Dovecot's userdb: vmail_users
Postfix's virtual_mailboxes
Postfix's virtual_aliases
...

perform parsing and tests

[x] all entries in Postfix's virtual_mailboxes must have a corresponding entry in Dovecot's userdb (vmail_users)
[x] all of Postfix's addresses (virtual_mailboxesand the left-hand side of virtual_aliases) must have a domain part in virtual_domains
[x] all entries in Postfix's virtual_aliases must resolve to an entry in virtual_mailboxes (or an external address, which raises another warning!)
[x] all entries in Postfix's virtual_aliases should not resolve to an external address
[x] all entries in Postfix's virtual_mailboxes combined with virtual_aliases should have a corresponding entry in sender_login_map
[x] all entries in Postfix's sender_login_map must resolve to an entry in Dovecot's userdb
[x] all entries in Dovecot's userdb should have one of the following:

a (left hand side) entry in virtual_mailboxes
a (right hand side) entry in sender_login_map

[x] all domains in virtual_domains should have postmaster@domain and abuse@domain addresses (mailbox or alias)

[x] SMTP (:25)

This is pretty straight forward: every mail is considered one test case, with an expected result.
[ ] TODO: Now we have parsing of the virtual_alias config, can we use this as an input to the SMTP test suite, to send a mail to every valid recipient?
The expected result is provided in a dictionary.

[x] TODO: As of now, the implementation of SmtpTestSuite makes assumptions about the setup of the virtual alias database; this makes the whole test suite highly dependent on the actual test setup; this might be fixed by just returning a dict of the form
result = {
    "mails_sent": [a, b, c, d, e, f, g],
    "mail_rejected": [e, f],
<EMAIL_ADDRESS>[a, c],
<EMAIL_ADDRESS>[c],
<EMAIL_ADDRESS>[b],
<EMAIL_ADDRESS>[d],
    "alias_invalid@sut.test":[g],
}

Then, the test runner tests/mailsrv_test_suite.py can merge the results of SmtpTestSuite and SmtpStarttlsTestSuite and process them by resolving the aliases.

[x] TODO: The internal knowledge of the test setup is also reflected in the suite's logging messages. This should be fixed.

[x] TODO: When the above two things are fixed, SmtpTestSuite may be simplified significantly!

[x] send mail to<EMAIL_ADDRESS>
MAIL FROM<EMAIL_ADDRESS>RCPT TO<EMAIL_ADDRESS>message is accepted and placed in the (virtual) Maildir of<EMAIL_ADDRESS>

[x] send mail to<EMAIL_ADDRESS>
MAIL FROM<EMAIL_ADDRESS>RCPT TO<EMAIL_ADDRESS>message is accepted and placed in the (virtual) Maildir of<EMAIL_ADDRESS>

[x] send mail to<EMAIL_ADDRESS>and<EMAIL_ADDRESS>
MAIL FROM<EMAIL_ADDRESS>RCPT TO<EMAIL_ADDRESS><EMAIL_ADDRESS>message is accepted and placed in the (virtual) Maildir of<EMAIL_ADDRESS>and<EMAIL_ADDRESS>

[x] send mail to<EMAIL_ADDRESS>
MAIL FROM<EMAIL_ADDRESS>RCPT TO<EMAIL_ADDRESS>message is accepted and placed in the (virtual) Maildir of<EMAIL_ADDRESS>and<EMAIL_ADDRESS>

[x] send mail to<EMAIL_ADDRESS>
MAIL FROM<EMAIL_ADDRESS>RCPT TO<EMAIL_ADDRESS>message is rejected because the user does not exist!

[x] send mail to<EMAIL_ADDRESS>
MAIL FROM<EMAIL_ADDRESS>RCPT TO<EMAIL_ADDRESS>message is rejected, because the server (SUT) does not relay mails without authentication

[x] send mail to<EMAIL_ADDRESS>
MAIL FROM<EMAIL_ADDRESS>RCPT TO<EMAIL_ADDRESS>message is accepted, but a bounce message (non delivery notification?) is emitted

[x] use STARTTLS command

[ ] POP3 (:110) / POP3s (:995)
[ ] SMTP (submission :587)

Required Infrastructure

[x]<EMAIL_ADDRESS>is an actual vmail user with a password in Dovecot's userdb
[x]<EMAIL_ADDRESS>is an actual vmail user with a password in Dovecot's userdb
[x]<EMAIL_ADDRESS>is a virtual alias to<EMAIL_ADDRESS>[x]<EMAIL_ADDRESS>is a virtual alias to<EMAIL_ADDRESS>and<EMAIL_ADDRESS>[x]<EMAIL_ADDRESS>is a virtual alias to a non existent mailbox<EMAIL_ADDRESS>
make sure<EMAIL_ADDRESS>is not available in virtual_mailboxes and vmail_users

[x]<EMAIL_ADDRESS>Make sure this account does not exist in Dovecot's userdb, Postfix's virtual_mailboxes database and Postfix's virtual_aliases database

Adjust the output of the test suite.
As of now the code uses Python's logging library. But in fact, these are no logging messages, but the actual output of the test suite.
https://stackoverflow.com/a/5980173 suggests a different approach, which might be implemented like this:
if __name__ == "__main__":
    # Do argparse magic here and have ``args.verbosity`` as a number (default 1, max 3)
    print_v = print if verbosity >= 0 else lambda *a, **k: None
    print_vv = print if verbosity >= 1 else lambda *a, **k: None
    print_vvv = print if verbosity >= 2 else lambda *a, **k: None

SMTP Test Suite
class SmtpTestSuite:
    """Execute several tests against the SMTP part of a mail setup."""

    class SmtpTestSuiteException(Exception):
        """Base class for all exceptions of the ``SmtpTestSuite``."""

    class SmtpOperationalError(self.SmtpTestSuiteException):
        """Indicate operational errors, most likely while using ``smtplib``."""

    def __init__(self, target_ip=None, target_port=None, local_hostname="mail.another-host.test"):
        logger.verbose("Initializing SMTP test suite")

        if target_ip is None:
            self.target_ip = "<IP_ADDRESS>"

        self.smtp = smtplib.SMTP(host=None, local_hostname=local_hostname)
        self.smtp._host = self.target_ip

        if target_port is None:
            self.target_port = self.smtp.default_port

    def run(self):
        """Run the test suite."""
        logger.summary("Running SMTP test suite...")

        try:
            (code, msg) = self.smtp.connect(self.target_ip, self.target_port)
            if code != 220:
                self.smtp.close()
                logger.error("Error while connection to target ({}:{})".format(self.target_ip, self.target_port))
                logger.debug("connect() returned ({}, {})".format(code, msg))
                raise self.SmtpOperationalError("Could not connect to target")
        except smtplib.SMTPServerDisconnected as e:
            logger.error("Target ({}) closed the connection unexpectedly".format(self.target_ip))
            logger.debug(e, exc_info=1)
            raise self.SmtpOperationalError("Connection to target lost")
        except ConnectionRefusedError as e:
            logger.error("Target ({}) refused the connection".format(self.target_ip))
            logger.debug(e, exc_info=1)
            raise self.SmtpOperationalError("Connection refused")
        logger.info("Connection to target ({}) established".format(self.target_ip))

        logger.summary("SMTP test suite finished successfully")

Current Problem of processing a poplib exception: https://stackoverflow.com/questions/20569330/printing-passed-bytes-from-exception

class SmtpGenericTestSuite:
    """Wrap a test suite around the SMTP protocol."""

    class SmtpGenericException(MailsrvTestSuiteException):
        """Base class for all exceptions of SMTP test suites."""

    class SmtpOperationalError(SmtpGenericException):
        """Indicate operational errors, most likely while using ``smtplib``."""

    class SmtpTestSuiteError(SmtpGenericException):
        """Indicate an actual test failure."""

    def __init__(
        self,
        target_ip="<IP_ADDRESS>",
        target_port=smtplib.SMTP_PORT,
        local_hostname="mail.another-host.test",
        suite_name="Generic SMTP Suite"
    ):
        self.target_ip = target_ip
        self.target_port = target_port
        self.local_hostname = local_hostname

        self.suite_name = suite_name

    def _pre_connect(self):
        pass

    def _pre_run(self):
        pass

    def _post_run(self):
        pass

    def _run_tests(self):
        raise NotImplementedError("Has to be implemented in real test suite")

    def _sendmail(self, from_addr, to_addrs, msg, mail_options=(), rcpt_options=()):
        logger.debug(
            "sendmail(): {}, {}, {:16.16}, {}, {}".format(
                from_addr, to_addrs, msg, mail_options, rcpt_options
            )
        )
        try:
            return self.smtp.sendmail(
                from_addr, to_addrs, msg, mail_options, rcpt_options
            )
        except smtplib.SMTPHeloError as e:
            logger.critical("SMTP HELO Error")
            logger.debug(e, exc_info=1)
            raise self.SmtpOperationalError("SMTP HELO Error")

    def run(self):
        """Run the test suite."""
        logger.summary("Running {}...".format(self.suite_name))

        self._pre_connect()

        try:
            with smtplib.SMTP(
                host=self.target_ip,
                port=self.target_port,
                local_hostname=self.local_hostname,
            ) as self.smtp:
                logger.verbose(
                    "Connection to target ({}) established".format(self.target_ip)
                )

                self._pre_run()
                self._run_tests()
                self._post_run()

                self.smtp.quit()
                logger.verbose(
                    "Connection to target ({}) terminated".format(self.target_ip)
                )
        except smtplib.SMTPConnectError as e:
            logger.critical(
                "Error while connecting to target ({})".format(self.target_ip)
            )
            logger.debug(e, exc_info=1)
            raise self.SmtpOperationalError("Connection failed")
        except smtplib.SMTPServerDisconnected as e:
            logger.critical(
                "Target ({}) closed the connection unexpectedly".format(self.target_ip)
            )
            logger.debug(e, exc_info=1)
            raise self.SmtpOperationalError("Connection to target lost")
        except ConnectionRefusedError as e:
            logger.critical("Target ({}) refused the connection".format(self.target_ip))
            logger.debug(e, exc_info=1)
            raise self.SmtpOperationalError("Connection refused")

        logger.summary("{} finished successfully".format(self.suite_name))

https://rszalski.github.io/magicmethods/

Colored Output of the test runner

https://stackoverflow.com/questions/7445658/how-to-detect-if-the-console-does-support-ansi-escape-codes-in-python
https://stackoverflow.com/questions/384076/how-can-i-color-python-logging-output
https://medium.com/analytics-vidhya/python-logging-colorize-your-arguments-41567a754ac

Completely Reimplement the logging system

[ ] use the benefits of lazy logging

https://medium.com/swlh/why-it-matters-how-you-log-in-python-1a1085851205
https://stackoverflow.com/questions/4148790/lazy-logger-message-string-evaluation
https://www.przemodev.com/blog/articles/lazy-logging-how-to-properly-log-in-python

New Structure of Repository
[REPOSITORY_ROOT]
├── auxiliary/
│   ├── utility/
│   │   ├── __init__.py
│   │   ├── exceptions.py    [define MailsrvException; exceptions of utility package]
│   │   ├── io.py            [general file I/O, like class GenericFileReader]
│   │   ├── log.py           [custom extension of Python's logging module]
│   │   └── parser.py        [generic parsing of config files, without semantic meaning]
│   ├── validator/
│   │   ├── __init__.py
│   │   ├── checks.py        [the actual validator payloads
│   │   └── exceptions.py    [define MailsrvValidatorException(MailsrvException); exceptions of validator package]
│   ├── tests/
│   │   │   └── configs/     [test configuration files for Postfix/Dovecot]
│   │   ├── __init__.py
│   │   ├── exceptions.py    [define MailsrvTestException(MailSrvException); exceptions of tests package]
│   │   ├── fixture_mail.py
│   │   ├── pop3.py
│   │   ├── smtp.py
│   │   └── smtpd.py
│   ├── __init__.py
│   ├── test_runner.py
│   ├── validate.py
│   └──

[REPOSITORY ROOT]
├── util/
│   ├── common/
│   │   ├── __init__.py
│   │   ├── exceptions.py
│   │   ├── fs.py
│   │   ├── log.py
│   │   └── parser.py
│   ├── validation/
│   │   ├── __init__.py
│   │   ├── checks.py
│   │   └── exceptions.py
│   ├── tests/
│   │   ├── configs/
│   │   │   ├── dovecot_vmail_users
│   │   │   ├── postfix_sender_logins
│   │   │   ├── postfix_virtual_aliases
│   │   │   ├── postfix_virtual_domains
│   │   │   └── postfix_virtual_mailboxes
│   │   ├── __init__.py
│   │   ├── exceptions.py
│   │   ├── fixture_mail.py
│   │   ├── pop3.py
│   │   ├── smtp.py
│   │   └── smtpd.py
│   ├── manager.py
│   ├── tester.py
│   └── validator.py
│
├── .editorconfig
├── .flake8
├── .gitignore
├── .pre-commit-config.yaml
├── LICENSE
├── Makefile
├── README.md
└── pyproject.toml

Refactor validation
# file: [REPO ROOT]/util/mailsrv_aux/validation/exceptions.py

from ..common.exceptions import MailsrvBaseException

class MailsrvValidationException(MailsrvBaseException):
    """Base class for exceptions of the ``validation`` package."""

class MailsrvValidationOperationalError(MailsrvValidationException):
    """Indicate operational errors."""

# file: [REPO ROOT]/util/mailsrv_aux/validation/messages.py

import logging

# get a module-level logger
logger = logging.getLogger(__name__)

INFO = 20
WARNING = 30
ERROR = 40
CRITICAL = 50

__levels = [INFO, WARNING, ERROR, CRITICAL]

class ValidationMessage:
    """Provide the actual feedback of the validation process."""

    def __init__(self, level, msg, id, hint=None):
        if level not in __levels:
            # FIXME: Provide actual error message
            raise MailsrvValidationOperationalError()

        self.level = level
        self.msg = msg
        self.id = id
        self.hint = hint

    def __str__(self):
        return "{id}: [{level}] - {message}".format(id=self.id, level=self.level, message=self.msg)

    def __repr__(self):
        return "<{classname}: level={level!r}, msg={message!r}, id={id!r}, hint={hint!r}>".format(
            classname=self.__class__.__name__,
            level=self.level,
            message=self.msg,
            id=self.id,
            hint=self.hint,
        )

class Information(ValidationMessage):
    def __init__(self, *args, **kwargs):
        super().__init__(INFO, *args, **kwargs)

class Warning(ValidationMessage):
    def __init__(self, *args, **kwargs):
        super().__init__(WARNING, *args, **kwargs)

class Error(ValidationMessage):
    def __init__(self, *args, **kwargs):
        super().__init__(ERROR, *args, **kwargs)

class Critical(ValidationMessage):
    def __init__(self, *args, **kwargs):
        super().__init__(CRITICAL, *args, **kwargs)

class ReceiveMailTestSuite(SmtpGenericTestSuite):
    """Test the mail setup (receiving mails from another server).
    Parameters
    ----------
    valid_recipients : list
    invalid_recipients : list
    target_ip : str
    from_address : str
    relay_recipient : str
    mail_count_offset : int
    """

    def __init__(
        self,
        valid_recipients: list[str],
        invalid_recipients: list[str],
        target_ip: str = "<IP_ADDRESS>",
        from_address: str =<EMAIL_ADDRESS>        relay_recipient: str =<EMAIL_ADDRESS>        mail_count_offset: int = 0,
    ) -> None:
        super().__init__(
            target_ip=target_ip,
            suite_name="Receive Mail Suite",
            mail_count_offset=mail_count_offset,
        )

        self._valid_recipients = valid_recipients
        self._invalid_recipients = invalid_recipients
        self._from_address = from_address
        self._relay_recipient = relay_recipient

    def _sendmail(
        self,
        to_addrs: Union[str, list[str]],
    ) -> bool:
        """Send a mail.
        This is a suite-specific wrapper for the more generic ``_sendmail()``
        method, providing consistent default values for most parameters.
        Parameters
        ----------
        to_addrs : str, list
            The recipient or list of recipients for the mail.
        Returns
        -------
        bool
            Returns ``True`` if the mail is delivered to at least one of the
            recipient, ``False`` otherwise.
        """
        return super()._sendmail(
            self._from_address,
            to_addrs,
            GENERIC_VALID_MAIL,
        )

# util/test_runner.py
# ...
    try:
        try:
            # Read and parse the configuration files
            logger.verbose("Reading configuration files")  # type: ignore [attr-defined]

            dovecot_users = parser.PasswdFileParser(args.dovecot_userdb).get_usernames()
            logger.debug("dovecot_users: %r", dovecot_users)

            postfix_vmailboxes = parser.KeyParser(args.postfix_vmailboxes).get_values()
            logger.debug("postfix_vmailboxes: %r", postfix_vmailboxes)

            postfix_valiases = parser.KeyValueParser(args.postfix_valiases).get_values()
            logger.debug("postfix_valiases: %r", postfix_valiases)

            postfix_vdomains = parser.KeyParser(args.postfix_vdomains).get_values()
            logger.debug("postfix_vdomains: %r", postfix_vdomains)

            # The addresses are the actual virtual mailboxes combined with the RHS
            # of the virtual aliases.
            postfix_addresses = postfix_vmailboxes + list(postfix_valiases.keys())
            logger.debug("postfix_addresses: %r", postfix_addresses)

            invalid_recipient = "{}@{}".format(hash(postfix_addresses[0]), postfix_vdomains[0])
            logger.debug("invalid_recipient: %s", invalid_recipient)
        except MailsrvIOException as e:
            logger.error("Could not read config files")
            raise e

        suite = ReceiveMailTestSuite(
            postfix_addresses,
            [invalid_recipient,],
            target_ip=args.target_host
        )
        overall_result = suite.run()

        logger.summary("Test suite completed successfully!")  # type: ignore [attr-defined]
        sys.exit(0)
    except SmtpGenericTestSuite.SmtpTestSuiteError as e:
        logger.error("Error while running the test suite: %s", e)
        sys.exit(2)
    except MailsrvBaseException as e:
        logger.critical("Execution failed!")
        logger.debug(e, exc_info=True)  # noqa: G200
        sys.exit(1)

class OtherMtaTlsTestSuite(OtherMtaTestSuite):

    def _pre_run(self):
        logger.verbose("Sending command STARTTLS...")

        try:
            self.smtp.starttls()
        except (
            smtplib.SMTPNotSupportedError,
            RuntimeError,
            ValueError,
            smtplib.SMTPResponseException,
        ) as e:
            logger.critical("Could not establish TLS connection using STARTTLS")
            logger.debug(e, exc_info=1)
            raise self.SmtpOperationalError("TLS failure")
        logger.verbose("TLS encryption established")

from aiosmtpd.handlers import Mailbox

class OtherMtaReceiver(Mailbox):

    async def handle_RCPT(self, server, session, envelope, address, rcpt_options) -> str:
        # see https://aiosmtpd.readthedocs.io/en/latest/controller.html
        if not address.endswith(self._domain):
            return "550 I do not relay!"
        envelope.rcpt_tos.append(address)
        return "250 OK"

# https://aiosmtpd.readthedocs.io/en/latest/handlers.html#the-mailbox-handler

Note
To make the name resolution work during the test suite, the SUT's /etc/hosts is modified to include another-host.test.
For Postfix to pick this up, the following setting has to be applied
smtp_host_lookup = dns,native

By default, Postfix will only use the (system-configured) DNS server to resolve hosts, which is generally desired. Adding native enables lookups from /etc/hosts for hosts, that are not resolvable by DNS (and the *.test TLD is never resolvable by DNS).
Things to consider

[ ] are there negative impacts of this setting?
[ ] should it only be applied for testing or may it be included in the actual configuration?
[ ] (there might be lots of other things)

class VerifyPopMailboxContent(GenericPopTestSuite):

    def _run(self):
        # get a list of messages in the mailbox
        msg_list = self.pop.list()  # FIXME: use actual method of poplib here!

        for msg in msg_list:
            subject = msg.subject  # FIXME: actually work on the message, might require a generator?
            logger.debug("Processing subject '%s'", subject)

            if subject in expected_messages:
                logger.debug("Found '%s', subject)
                expected_messages.pop(subject)  # Remove from expected_messages

        if expected_messages:  # list of expected messages is not empty!
            logger.error("Could not find expected message(s): %s", expected_messages)
            logger.debug("Exptected Messages: %r", expected_messages)
            raise self.PopTestSuiteError("At least one expected message could not be found!")

# file: util/mailsrv_aux/common/exceptions.py
class MailsrvParserException(MailsrvBaseException):
    """Indicate a problem during parsing operations."""

# file: util/mailsrv_aux/common/parser.py
class PasswdFileParser(GenericFileReader):

    def get_password(self, username: str) -> str:
        try:
            return self._user_db[username]["password"]
        except KeyError:
            logger.error("No entry for '%s' in userdb", username)
            raise MailsrvParserException("Missing entry in userdb")

https://github.com/adamchainz/flake8-comprehensions

# Provide the sender to login map for the mail setup.
# These will be applied in Postfix's ``smtpd_sender_login_maps`` setting.
#
# FORMAT: [key][BLANK][list of logins]
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
<EMAIL_ADDRESS><EMAIL_ADDRESS>
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>

class SubmissionTestSuite(SmtpGenericTestSuite):

    def __init__(
        self,
        *args: Any,
        valid_from: list[str] = [],
        local_rcpt: str =<EMAIL_ADDRESS>        external_rcpt: str =<EMAIL_ADDRESS>        suite_name: str = "Submission Test Suite",
        **kwargs: Optional[Any],
    ) -> None:
        super().__init__(  # type: ignore
            *args,
            suite_name=suite_name,
            **kwargs,  # type: ignore
        )

        self.valid_from = valid_from
        self.local_rcpt = local_rcpt
        self.external_rcpt = external_rcpt

    def _run_tests(self) -> None:
        for addr in self.valid_from:
            self._sendmail_expect_queue(from_addr=addr, to_addrs=self.local_rcpt)
            self._sendmail_expect_queue(from_addr=addr, to_addrs=self.external_rcpt)


Cargo build fails on the src/ffi.rs:46

It looks like there is misspelling or so.
$ cargo build
Compiling hackrf v0.0.2 (file:///home/victorcrimea/radio/hackrf-rs) error: expected one of !, (, +, ::, ;, <, or ], found ,
--> src/ffi.rs:46:27
|
46 |     pub part_id: [uint32_t, ..2],
|                           ^ expected one of 7 possible tokens here

I think this is probably a deeper issue with compatibility with stable Rust, as that code is quite old. I will look in to updating it all to build correctly soon, thanks for the report.


Rust API

TensorFlow should have a Rust interface.

Moving email discussion here:
Rust bindings would be cool!  I don't think there's anyone working on rust bindings so far, though it might be worth an email to<EMAIL_ADDRESS>to check.  Agreed that a separate project is probably good to start out.
To start the conversation, there are a couple different levels of bindings:

Bindings that do not know about specific ops, but can create graphs "manually" or load them from GraphDefs, evaluate graphs (so that tensorflow models can be run inside rust servers), etc.  There's hopefully nothing blocking that.

Autogenerated bindings for each C++ op.  We do this for Python, and similar things should work for Rust (ideally with a lot more type safety).  I have limited intuition for rust's handling of ad-hoc polymorphism, so I can't judge how easy it'll be to fit tensorflow's notions of polymorphism into rust's.  Again, there's hopefully nothing blocking this.

Idiomatic bindings.  We currently have a lot of logic in pure Python, including both per-op sugar and key features such as automatic differentiation.  We will likely eventually move this to C++, but until then it will be difficult to capture this functionality in rust bindings without duplicating a ton of effort.  Unfortunately, automatic differentiation in particular is (mostly) necessary if you want to train models.

It's probably best to shoot for (1) to start and only move to (2) once it's clear how much of (3) will be a blocker for the desired applications.

FWIW, getting something like 1) is pretty straightforward with rust-bindgen and tensor_c_api.h, I put something together the other weekend in https://github.com/ajtulloch/tensorflow-rs/blob/master/src/tf.rs if that's useful.

I would be glad to work on a Rust interface for TensorFlow if nobody is currently working on a solution.

I just launched a project to provide the Rust bindings at https://github.com/google/tensorflow-rust.  The build glue is there, but most of the bindings have yet to be written.

Nice!  I'm happy to help with any issues you run into.

Cool!

It seems that the Rust bindings are building on top of c_api.h using the approach outlined in the how-to, which is great.
If you run into concerns with the documentation or the C-API, please do create a separate issue
Thanks!

Closing this issue. The Rust bindings have been moved to github.com/tensorflow/rust


⚠ ClamAV has degraded performance

In b5226ed, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 142 ms

Resolved: ClamAV performance has improved in 8ec73cb.


removed tags from secret in example

Key Vault RP does not support secret tags or other metadata at this time.

Hi @eocrawford, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

@eocrawford - thanks for submitting this change. Looks good.

@ggailey777 - this PR in azure-content is ready to be merged.

@eocrawford Thanks for your contribution to the Azure documentation. We appreciate your help improving the quality of our topics.


Test suite

Are you considering the addition of the test suite? If so, may I try to do it?
I will use tester helper from your other libraries, and I will try to follow your test philosophy.

Feel free to add tests here - There aren't many simply because I haven't gotten to it. Tests are always welcome!

Thank you! I will try.

So I added first two (easier ones) suites, please can you check if it LGTY?

Closed in #6


✨Add Visitor Counter feature done ! #985

Hello, PR
Add new feature - #985
Add Visitor Counter feature done properly -

before -

Type of change
What sort of changes have you made:

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

Checklist

[x] My code follows the code style of this project.
[x] I have followed the contribution guidelines
[x] I have performed a self-review of my own code.
[x] I have ensured my changes don't generate any new warnings or errors.
[x] I have updated the documentation (if necessary).
[x] I have resolved all merge conflicts.

@vishanurag done, please merge my PR with level 3,
Thank You

@vishanurag Sir kindly 🙏🏻 upgrade the level 2 to 3, If you check other projects, they are also giving level 3 for this.. You can check my code also...

Thank You

@vishanurag Sir kindly 🙏🏻 upgrade the level 2 to 3..

@vishanurag Sir kindly 🙏🏻 upgrade the level 2 to 3..


How to connect RaspberryPi Pico to Gameduino 3

Hi James, maybe I've missed something, but I'm having difficulty to figure out how to connect the Gamduino 3 to Raspberry Pi Pico board. I saw these 3 lines in the gameduino_circuitpython.py file:

    if mach == 'Raspberry Pi Pico with rp2040':
        self.sp = busio.SPI(board.GP2, MOSI=board.GP3, MISO=board.GP4)
        cs = (board.GP5, board.GP6, board.GP7)
       reset(board.GP10)

Following the text at the end of this page https://excamera.com/sphinx/gameduino3/, this is as far as I was able to depict:
Arduino header      Gameduino          RPi Pico
    11               SPI MOSI           GPIO3
    12               SPI MISO           GPIO4
    13               SPI SCK            GPIO2
     8               GPU SEL            GPIO5
     9               SD SEL             GPIO6
     2               INT                ?
     ?               ?                  GPIO7
     ?               ?                  GPIO10

I still don't know where to connect the CS GPIO7 and RESET GPIO10 pins on the Pico, and the INT pin on the Gameduino, to.
Your clarification is very much appreciated. Thank you - Mac Ha

These two signals (Dazzler CS and Dazzler reset) are only present on the Dazzler.
So on the Gameduino 3/3X you can leave them unconnected.
(The INT pin is unused by the CircuitPython driver - you can safely ignore it.)
I would expect this to work - I do test against the CircuitPython (Metro) + Gameduino 3X, but have not tried the Pico with Gameduino 3X.
Please let me know if you hit a problem with it and I will try to reproduce here.

Thank you very much for a quick reply, James. Unfortunately seems my GD2 and GD3 displays, were laying idle for more then a year now, are both dead :-( Here is what I get typing in the HelloWorld.py example on the REPL of the Pico:
 Adafruit CircuitPython 6.3.0 on 2021-06-01; Raspberry Pi Pico with rp2040
>>> import sys
>>> import bteve as eve
>>> gd = eve.Gameduino()
pgm reset
pgm reset done
cp init complete
>>> gd.init()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "bteve/gameduino.py", line 178, in init
AssertionError: No response - is device attached?
>>>

I then tried the Hello World sketch on my Arduino UNO, and the GD2 just light up a clear white screen, while the GD3 went full black... Don't know what happened, the last time, before the COVID, my kids were running Pacman's port on them with the UNOs. This is however out of scope of this issue, I think... Should I close it? Do you have a way to troubleshoot the hardware and revive the displays, if possible?...
Kind regards -- Mac Ha


address scripthash not known to server

Hi, I'm having a bit of a puzzle with the title notice in the terminal output.
Clean config.cfg with 1 electrum wallet
run server.py to import addresses
run rescan script
run server.py again,
Then, "address scripthash not known to server" pops up in blocks of 26 lines. I'm a bit at a loss to get rid of this. Am I missing something?

I see this all the time, and it still works OK. Scripthash would seem to indicate a pay-2-script-hash address, meaning either a script such as multisig, or a backwards-compatible P2SH-wrapped witness-pubkey-hash.
Electrum personal server works fine anyway, it's probably not a problem.

This error message means that your Electrum wallet requested addresses that were not known to Electrum Personal Server.
How many addresses has your wallet generated @coinsmith (in other words, how many payments has your wallet received). The default value for initial_import_count in config.cfg is 100, so if you have more than that then it would cause this.
scripthash in Electrum's protocol refers to sha256(scriptPubKey), so it's basically interchangable with "address". So if you're missing some then it's actually quite bad, the server could inadvertently lie by omission.

My bad, the prefix for pubkeys in config.cfg of multisig wallets needs to be the amount of needed signatories, not the amount of keys. Closing.

Having more than a hundred explains it. To fix the problem, increase the value of initial_import_count in your config.cfg file and then run server.py to import more addresses, rescan script then server.py again.
I'm going to improve the documentation about this so this can be more easily solved by others.

ok so it actually was the signatures-required number. One thing that could be done is have the server print out the first 3 receive addresses of each wallet, so such mistakes might be slightly more obvious.

Hm, that could clarify things for people such as myself. When I look at the config.cfg now and see 'number of required signatories', it should have been self explanatory. Again, my bad.

Dealt with the stuff in this issue with the recent commits, closing.

Nice, thanks.


Add mdox to CI

Description
During my onboarding I was trying to configure my pet cluster to send logs/traces/metrics to my personal Coralogix account. I've hit a few bumps in the process and started to find broken links while debugging my configuration. From a quick slack thread, we thought that it might be worth adding a CI check for dead links and docs formatting 🙂
This PR does so by adding mdox to our CI pipelines.
PR Breakdown (I recommend reviewing by commit 😛)
First commit
On the first commit I'm only adding the CI check. Since there is no github-action for mdox, I'm doing some scripting with Makefile+go install to make sure make check-docs works during CI runs and locally while using the same strategy in both places.
Second commit
For this one I'm just fixing links to images used inside our repo. I've added an exception at .mdox.validate.yml, making sure that links to files inside any folder called /assets are ignored. This way we can link to images/json files, as long as they are in the correct folder.
Third commit
Just run make fmt-docs

Obs: The CI is still failing because we have 3 broken links that I have no idea where they should be pointing to 😅

Before merging, it would be nice to find the correct links for the errors below:
error: 2 errors:
		logs/fluentd/image/README.md:11: "https://github.com/coralogix/sdk-ruby-fluentd" not accessible; status code 404: Not Found
2 errors:
		README.md:71: "https://github.com/coralogix/telemetry-shippers/blob/master/logs/fluentd/k8s-manifest/http/README.md" not accessible; status code 404: Not Found
		README.md:72: "https://github.com/coralogix/telemetry-shippers/blob/master/logs/fluent-bit/k8s-maifest/http/README.md" not accessible; status code 404: Not Found

Before merging, it would be nice to find the correct links for the errors below:
error: 2 errors:
		logs/fluentd/image/README.md:11: "https://github.com/coralogix/sdk-ruby-fluentd" not accessible; status code 404: Not Found
2 errors:
		README.md:71: "https://github.com/coralogix/telemetry-shippers/blob/master/logs/fluentd/k8s-manifest/http/README.md" not accessible; status code 404: Not Found
		README.md:72: "https://github.com/coralogix/telemetry-shippers/blob/master/logs/fluent-bit/k8s-maifest/http/README.md" not accessible; status code 404: Not Found

Seemed like those are not in use anymore, we will verify them on separate tasks, and inform relevant people.

@ArthurSens nice work 🙌 , I must have missed this PR yesterday.
I would suggest as a follow up if we could also add caching? We had quite a few issues with link checks failing, since this can be brittle (requests fail all the time for various reasons).
There's possibility to use simple SQLite cache, but I think it's undocumented 😞 . You can see the config here: https://github.com/bwplotka/mdox/blob/main/pkg/mdformatter/linktransformer/config.go#L23 and you can check a good example usage here: https://github.com/thanos-io/thanos/blob/main/.mdox.validate.yaml#L4.
WDYT?


Setting val doesn't work

Using the following $('.selectpicker').selectpicker('val', '1'); to preset the value of my select is returning the following error.
Uncaught TypeError: e.stopPropagation is not a function
The error is pointing to line 258 in bootstrap-select.js if it helps.
i.e.
if (e) {
    e.stopPropagation();
    e.preventDefault();
}

+1
I see this error too.

I am sorry I hurry. I see very strange thing. If I do this
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.7.3/js/bootstrap-select.min.js"></script>
at my page, all works fine. There is no errors in browser console and $('.selectpicker').selectpicker('val', '1') works.
But If I save this file from CDN to my project directory and do this <script src="/media/libs/bootstrap-select.min.js"></script>
then I see error d.stopPropagation is not a function. And selectpicker('val') doesn't work.

Well.. I'm confused. In Firefox, if I open page first time: no errors. All works as expected. But if I refresh page, I see error.
In Chrome all works fine.
Problem is, I can't reproduce it on jsfiddle.

Finally I found what was the probmle. It's not the browser and not the library error.
Problem was in appending options to <select></select>. If you are not refreshing selectpicker, then maybe you'll see the error. Or maybe not.
I've created fiddle: http://jsfiddle.net/nwd6gm6n/6/ but if you'll try to reproduce this situation, just copy source from fiddle to local html-file. Don't know why, but I can't get an error with jsfiddle.

Replace the conventional code:
 $target.selectpicker("val", value);

For this:
 $target.val(value);
 $target.selectpicker("refresh");

I have same issue seems .val() not working for me as well.I am using ng-repeat in HTML and i tried following options nothing works. Appreciate any help.
$('#state-search').selectpicker('selectAll');
$state-search.selectpicker("val",$scope.states[0]);
$('#state-search').selectpicker("val",'Utah');
$('#state-search').selectpicker('refresh');

+1

See guidelines for contributing.

Bug reports
A bug is a demonstrable problem that is caused by the code in the repository.
Good bug reports are extremely helpful - thank you!
Guidelines for bug reports:

Use the GitHub issue search. Check if the issue has already been reported.

Check if the issue has been fixed. Try to reproduce it using the latest master or development branch in the repository.

Provide environment details. Provide your operating system, browser(s), jQuery version, Bootstrap version, and bootstrap-select version.

Create an isolated and reproducible test case. Create a reduced test case.

Include a live example. Make use of jsFiddle or jsBin to share your isolated test cases.

I tried the following and it works.
 $target.selectpicker("refresh");
 $target.val(value);
 $target.selectpicker("refresh");

@D-Skywalker 's suggestion did not work for me, and I built on that to include additional refresh.
I believe there is some sort of delay induced by  $target.selectpicker("refresh"); which is causing this issue.

Can somebody please provide an example of this feature not working? I would love to get this figured out.

Same Uncaught TypeError: e.stopPropagation is not a function problem, and fixed with a 0 delay timer:
var val = $this.val();
setTimeout(function(){
  $this.selectpicker('val', val);
  if (val) {
    $this.trigger("change");
  }
 }, 0);

Dont have time to introspect, but I think this error came when the val function is called twice at the same time.
In my case, I use jquery-phoenix to save form state, and the bug came when I set the saved select state with val function on page initialisation.

+1

Instead of posting "+1", please provide an example. Here's a link to a bootstrap-select playground: http://silviomoreto.github.io/bootstrap-select/playground/.

same probleme tried all solutions above
`  var agents = $(".selectpicker");
$(agents).each(function(key, val) {
if(arrayOfArrayOfvalues[key].length>1){
//   $(val).selectpicker('val',arrayOfArrayOfvalues[key])
$(val).selectpicker("refresh");
$(val).val(arrayOfArrayOfvalues[key]);
$(val).selectpicker("refresh");
//  $(val).selectpicker("refresh");
console.log("id of select :" + $(val).attr("id")+" values to put "+arrayOfArrayOfvalues[key])
}
                });`

@yokidara01 This code is realy confused, there are many things out from scope like arrayOfArrayOfvalues. I sugest you try use one of codes showed here in isolation before run your complete code.

example:
                                $('select[name=event_id]').prepend($('<option>', {                                     value: response.description.id,                                     text: response.description.name                                 })).selectpicker('refresh').selectpicker('val', response.description.id);


[TTS]XXXXpkg_resources.DistributionNotFound: The 'editdistance' distribution was not found and is required by paddlespeech

pkg_resources.DistributionNotFound: The 'editdistance' distribution was not found and is required by paddlespeech

maybe try to update your pip version


Distance screen improvements

I'm thinking about perhaps doing distance so I checked the distance screen for the first time. Several improvements are desirable:

Always show distance in km (not meters). A precision of 0.1 is sufficient. In the test drive I did, the distance was shown in meters. After 10 km, the last digit overlaps with the "R" (for run distance).
Replace run distance with battery percentage. Run distance rarely, if ever, makes sense when going for distance. But battery charge can be an issue when doing 10+ hour sessions. Seeing that battery gets low can be a reminder to take a break and charge the battery. Even a half hour charge at 0.5 A for 30 minutes can add a couple of hours of battery life. This is an issue for units with smaller batteries, but can also become an issue with large batteries when they get older. Here on Lake George, someone posts a 200+ km session almost every day.
Consider a better layout, for example 2 lines with the same height, one for current speed and one for distance. Battery charge could be shown as an icon, like in older firmware versions, on the side. When doing distance, seeing total distance is just as important as current speed, and glasses or sunglasses may be quite dirty after a few hours on the water, making it hard to read smaller numbers.

Having a configurable active- and stat-screen with row/column definitions including sizes (discrete steps S/M/L) and a way to identify what text/graph/logo would go where would help everyone. It probably would need a separate screen config to be controlled from a HTML page that will show how the screen would look like.
The number of fonts and sizes are limited. Not sure how much space they are taking.
There is not yet a check, if the number of digits increases, it will be printed on the next line. It would be better to reduce the digits to prevent it from happening. Same is true for logos/icons, they have a fixed size, but a check to make it fit, once it is configurable, is needed.
Maximizing font size, reducing empty/white space will help most of us.
We could start to check the existing screen permutations and define what flexibility would be required to define these.
For some they will swap speed with distance, or alphas or nautical miles, whatever it is that you're trying to improve and will stimulate to push a bit more, longer...
Verzonden vanaf mijn Galaxy
-------- Oorspronkelijk bericht --------
Van: prichterich @.>
Datum: 10-02-2023 06:55 (GMT+01:00)
Aan: RP6conrad/ESP-GPS-Logger @.>
Cc: Subscribed @.***>
Onderwerp: [RP6conrad/ESP-GPS-Logger] Distance screen improvements (Issue #17)
I'm thinking about perhaps doing distance so I checked the distance screen for the first time. Several improvements are desirable:

Always show distance in km (not meters). A precision of 0.1 is sufficient. In the test drive I did, the distance was shown in meters. After 10 km, the last digit overlaps with the "R" (for run distance).
Replace run distance with battery percentage. Run distance rarely, if ever, makes sense when going for distance. But battery charge can be an issue when doing 10+ hour sessions. Seeing that battery gets low can be a reminder to take a break and charge the battery. Even a half hour charge at 0.5 A for 30 minutes can add a couple of hours of battery life. This is an issue for units with smaller batteries, but can also become an issue with large batteries when they get older. Here on Lake George, someone posts a 200+ km session almost every day.
Consider a better layout, for example 2 lines with the same height, one for current speed and one for distance. Battery charge could be shown as an icon, like in older firmware versions, on the side. When doing distance, seeing total distance is just as important as current speed, and glasses or sunglasses may be quite dirty after a few hours on the water, making it hard to read smaller numbers.

—
Reply to this email directly, view it on GitHubhttps://github.com/RP6conrad/ESP-GPS-Logger/issues/17, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AXUAXPZOIBHLVNHFPUOCIIDWWXJ4ZANCNFSM6AAAAAAUXM3E2Y.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

I noticed a bug in E_paper.cpp:
if(Ublox.total_distance/1000,0<9999)
Seems the line should read
if(Ublox.total_distance/1000.0<9999)
C always uses periods for the decimal point, not commas. Good example for mistakes that permissive languages like C or Perl allow that would be caught by the compiler in languages like Java, where using a comma here would be a syntax error.

I modified the distance code to show total distance and time. Here is what my code now looks like:
      if(field==5){
           display.setFont(&FreeSansBold12pt7b);
           display.print("D ");
           display.setFont(&FreeSansBold18pt7b);
           if(Ublox.total_distance/1000.0 < 999)
           display.print(Ublox.total_distance/1000,0);//Total distance in meter, als test run_distance
           else
           display.print(Ublox.total_distance/1000000,1);//Total distance in km, als test run_distance
           display.setCursor(offset+130,24);
           display.setFont(&FreeSansBold12pt7b);
           display.print(" ");
           display.setFont(&FreeSansBold18pt7b);
           display.print(time_now);
           }
        if(field==6){

There's enough space to show 4 digits before the comma.

The one thing that I'd like to see that's still missing for distance is a battery level indicator.

This will be in the next update. I noticed that there was a bug in this comparison, but I did not know why. The bat indicator will be on the right.  if(field==5){
if(config.speed_large_font==1){
bar_position=40;//test voor bigger font
display.setCursor(offset,36);
display.setFont(&FreeSansBold12pt7b);
display.print("Dist ");
display.setFont(&SansSerif_bold_46_nr);
display.print(Ublox.total_distance/1000000,1);//Total distance in km, als test run_distance
if(Ublox.total_distance/1000000>99.9){
display.setFont(&FreeSansBold12pt7b);
display.print(" km");
}
}
else{
display.setCursor(offset,36);
display.setFont(&FreeSansBold12pt7b);
display.print("Dist ");
display.setFont(&FreeSansBold18pt7b);
display.print(Ublox.total_distance/1000000,1);//Total distance in km, als test run_distance
display.setFont(&FreeSansBold12pt7b);
display.print(" km");
}
        Bat_level(offset+222,0);

`

Distance + bat level is now in SW 5.73


Enable want alignment

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

-5 of 5 (0.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.03%) to 32.31%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

queuelogic/logic.go
0
5
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.03%

Covered Lines:
1073

Relevant Lines:
3321

💛  - Coveralls


Check Recalbox and Retropie for overlays paths

It looks like Recalbox paths have changed.

Well it looks like it hasn't changed after all.


ocw-to-hugo output upload failing

The last step of the ocw-to-hugo pipeline is failing in QA and production with an error about the S3 bucket:
selected worker: ip-10-0-3-33
Uploading to S3...
fatal error: Parameter validation failed:
Invalid bucket name "": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$" or be an ARN matching the regex "^arn:(aws).*:(s3|s3-object-lambda):[a-z\-0-9]*:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-.]{1,63}$|^arn:(aws).*:s3-outposts:[a-z\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\-]{1,63}$"

https://cicd.odl.mit.edu/teams/ocw/pipelines/ocw-to-hugo-production/jobs/convert-plone-to-hugo/builds/75

This is resolved now after fixing the updates to the s3-sync resource that also enables direct syncing between buckets.


Fix #458: upgrade to camel k 0.3.4

Fixes #458
This upgrades camel sources to use latest camel k.

/lgtm
/approve

/retest

/ok-to-test

/retest

There were some deps added by dep ensure that now I've removed using update-deps.sh. It should be ok now.


ttx fails on some fonts

After building Abyssinica from source (with the latest fontTools) I get an error using ttx on the built font.
  File "/home/fontdev/.local/lib/python3.6/site-packages/fonttools-3.32.0-py3.6.egg/fontTools/ttLib/tables/S__i_l_f.py", line 499, in toXML
    writer.write(" ".join(self.scriptTags))
TypeError: sequence item 0: expected str instance, bytes found

I do not get this error (also with an up-to-date ttx) if I use the built font from the CI. Maybe the CI has an older version of fontTools.

Seems to work with fontTools 4.3.0, it looks like I did not have the latest version after all.


Edit Node Title Bug

Partial update issue: The first time a title is added to a new node, only the first word or so is saved.

marked fixed


Allow an organization to select their preferred channel for notifications

As an organization's administrator, one should be able to select the preferred channel for notification upon actions on data requests to the organizations. These should be after a data request is created, commented on, and after the status of a data request has changed.

Assigned to @WNjihia and @Ignatius

The PR for this issue is available @DavidLemayian


mlm upgrade to new version format

to_viz changes with mlm upgrade
This PR should go after the following
1.API Changes - https://bitbucket.oci.oraclecorp.com/projects/ODSC/repos/feature-store-dataplane/pull-requests/256/overview
2.UI Changes which would handle both new and old MLM response
3.MLM Upgrade

we should also handle the older MLM payload visualisation I feel.

thanks @najiyacl for putting it up. this is nicely handled using version property. can we add screenshots of one execution with older and newer version to the PR?


rmfakecloud-proxy:  Add status subcommand

This PR addresses the points from @Eeems’ review of last PR: https://github.com/toltec-dev/toltec/pull/448#issuecomment-986156400
The new rmfakecloudctl status introduced by this PR reports whether rmfakecloud-proxy is enabled, currently active, and whether the upstream server has been set. If the upstream server is set, it also checks whether it is reachable and a valid rmfakecloud server. Here are some possible states that can be shown by the command:
Disabled (happens, for example, right after install):

Enabled, but upstream not set:

Enabled, but upstream is unreachable:

Enabled, but upstream does not seem to be an rmfakecloud server:

Enabled and working:

This PR also changes the disable command to not clean up the /opt/etc/rmfakecloud-proxy/config file. This fixes the issue where doing rmfakecloudctl set-upstream, followed by an interrupted rmfakecloudctl enable, would unset the upstream.

Status command looks good, and it does indeed leave the configuration in place. Unfortunatly upon re-enable it shows me as no longer linked to the cloud. We might need to sort out how to properly clean up the xochitl configuration and reuse the pin.
I also noticed that when I tried to disable it got stuck waiting for xochtil to stop until after I entered my pin in Oxide's lockscreen. It might be good to have it detect that the application is in a stopped state, that or just detect that oxide is running and use rot to kill the application.

Thanks for testing!

Unfortunatly upon re-enable it shows me as no longer linked to the cloud. We might need to sort out how to properly clean up the xochitl configuration and reuse the pin.

That's a good point. To be on the safe side, I programmed the enable, disable, and set-upstream commands to disconnect the user from the cloud (by killing Xochitl and removing the usertoken and devicetoken fields from ~/.config/remarkable/xochitl.conf) before doing anything. This is to avoid situations where Xochitl would try to login to another server using credentials from the previous server.
We could implement something to save credentials for each server you connect to somewhere, and restore them when you switch between servers. But is there such a strong use-case for switching between multiple servers regularly enough that it’s worth implementing this? Also, the way it’s currently implemented, we force a full sync after each server switch, and assume that files on the device should overwrite those on the server. But for users who would switch between multiple servers I’m not sure what strategy would be best in that regard.

I also noticed that when I tried to disable it got stuck waiting for xochtil to stop until after I entered my pin in Oxide's lockscreen. It might be good to have it detect that the application is in a stopped state, that or just detect that oxide is running and use rot to kill the application.

It should have force-killed Xochitl after 5 seconds. Could you tell me how to reproduce this so that I can investigate? Thanks!

It probably did force kill after 5 seconds, it would still be nice if it could attempt to work with the launcher. See https://github.com/toltec-dev/toltec/issues/515#issuecomment-996187717
I think this is safe enough to merge for now. We can resolve the other issues later.

@matteodelabre poke

Seems good. Thanks for the review!


rename msvc_target to detect_target_triplet

This function name is misleading

Thanks! Because this isn't a public API function, I think this is a good change and will plan to merge it presuming the CI passes. CC @waych for visibility.


[Bug Report] WorldGuard bypass with Telepathy

Title says it all
My spigot version is 1.8.8
And plugin version is 1.8-Dev-Build-V8.1-SNAPSHOT-Build#139 (latest xd)

Actually, without blast (only Telepathy) you can bypass WorldEdit and askyblock protection.
If you have blast and telepathy, you can mine stuff in regions

I have the same problem!  This happened with Telepathy on Pickaxe. The User gets a Message from Worldguard that they cant break the block but still can break it! A other User tried it with Telepathy and Blast and it didnt work, so problem is Telepathy.
Server Version: 1.15.2
Paper Version: 245
CrazyEnchantments version: 1.8-Dev-Build-v8.1-SNAPSHOT-Build#141


Can't see CSharpier under Tools in VS2022

Hi, installed extension for VS2022 Community edition and I don't see CSharpier under Tools -> Options. I installed same extension on VS2019 and there I see CSharpier under Tools -> Options.

I'm running VS2022 pro 17.3.5 and this is where the CSharpier options show for me

Is there any information in the CSharpier Output window that could indicate some kind of exception being thrown?

Reinstalled today VS2022 and installed newer version 17.4.0, now I see CSharpier.
Before reinstall I didn't saw any exception in Output window, but when I executed "dotnet csharpier ." it would format my code but I couldn't see option "Reformat with CSharpier" when I right click in VS editor.


SDFGI Skylight Won't Respect Camera Attribute Exposure

Godot version
4.0 Stable
System information
Windows 11, Nvidia RTX4070ti, AMD Ryzen7700x
Issue description
SDFGI will not respect exposure regarding skylight influence.
When adjusting exposure via Camera Attributes, SDFGI lighting will adjust to the same average amount upon movement of the viewport.
This happens regardless of arbitrary or physical light units, and occurs with all exposure settings in both types of Camera Attributes.
This also happens when adjusting the brightness of the skylight via any setting in the Environment node.
Here are various ISO exposures in a scene using physical light units:

Steps to reproduce
Load MPR, adjust ISO and then move the viewport. SDFGI should update to the same average brightness regardless of exposure.
Minimal reproduction project
SDFGI Sky Exposure.zip

Related to https://github.com/godotengine/godot/issues/55104 and https://github.com/godotengine/godot/issues/62793.

Ran into this issue in Bistro-Demo-Tweaked. Here's another MRP for testing: SDFGI-exposure.zip
https://github.com/godotengine/godot/assets/39361911/f56e1218-555c-43f9-805a-b1b1827cbf23


Wrong subclasses in query

Query for: gamma Kenyon cell
Query for: list subclasses of gamma Kenyon cell
3 results, including the actual term 'gamma Kenyon cell'. There should be only 2: gamma dorsal and gamma main

Support info:
Referring page: https://v2-dev.virtualflybrain.org/
System details: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36 Size:[1280,676]

OWL query type needs changing here:
https://github.com/VirtualFlyBrain/VFB2/blob/master/html/conf/vfb.xmi#L354
Only used (//<EMAIL_ADDRESS>in one compound query so fine to change:
https://github.com/VirtualFlyBrain/VFB2/blob/master/html/conf/vfb.xmi#L422

@matentzn FYI

@Robbie1977 wasnt this by design? Your subclass query to aberowl is explicitly a subclass equal query; which returns the object of the query as well as its subclasses.


Dropdown selection default value incorrect when specifying apiSettings

If you specify apiSettings and a url while initializing a dropdown, the default value uses the value of the hidden input rather than the item's true label.
I've created a jsfiddle showing two identical dropdowns (with one varying test class name); one initialized with no settings and one initialized with only apiSettings. The first test loads "Item 1" correctly as the default value, and the second test loads "1" (the value), and does not display "Item 1" like it should be.
Is there something wrong with how I set the defaults here or did I stumble on a bug caused by the use of remote api settings?

I'm having a similar issue, I think it has to do with the saveRemoteData settings, which defaults to true. When setting it to false, your example works a bit better : the "1" is no more here, but the default is now empty.
I can see two issues here :

an "apiSettings: true" associated to an "saveRemoteData: false" always clear the dropdown. see here.
We might want to initialize with the div.menu (or select), then use the remoteData for changing the value, especially for multiple dropdowns.
several dropdowns with the "saveRemoteData: true" will conflict their caches for the same values, since it is shared and keys don't identify from which dropdown it is related. see here

Related to #3560

Conversation continued in #3560


Return an error when calling AssumeRole. Fixing #280 PR

As part of OSD-14258 ticket where Certman silently fails when calling AssumeRole for sts clusters so, we made sure that it returns an error when calling AssumeRole. Fixing https://github.com/openshift/certman-operator/pull/280

/lgtm since this seems like the same logic as #280 but with fixes to the logger calls

/retest

/retest

/lgtm
/approve

/lgtm


Inheriting the host when setting up ownership links

I'm in a case where nodes are inherited from each other like
host -> OSD -> PG -> RBD
When I set the "host->OSD" ownership link, the representation is fine.
When I set the OSD->PG ownership link, the host isn't inherited meaning the PG is not tied to the host leading to flying PGs like in https://imgur.com/a/EQM8qnJ
So the other option, is to add an ownership link between host->PG + 1 extra link OSD->PG which works but makes the visual output very complex to read like in https://imgur.com/a/abS2M5f
So I suggest than once we put an ownership link between two nodes, the host property should be inherited avoiding having an extra link to keep this new node beeing attached to this host.

Closing, new WebUI will handle this
https://github.com/skydive-project/skydive-ui


Roster: Improve precomputing keying for school overview, simplify authorization

Who is this PR for?
schoolwide admin, mostly at SHS
What problem does this PR fix?
There have been instances of the school roster page falling back to doing queries that should be precomputed (since they're pretty slow).  This is happening because the way this was initially written relied on some coordinated timing that may no longer be true.  This code also uses some older duplicate authorization code.
What does this PR do?
Reworks the precomputing:

Adds a new keying strategy that removes the "date" from the key. Relaxes a uniqueness constraint on key to support this.
Updates the write path to use the new keying strategy, and updates the read path to query for the latest document at the key, adding in some other guardrails around freshness of the document.
Remove the duplicate authorization code
Add precompute job to indexing step at the end of the import task

Checklists
Which features or pages does this PR touch?

[x] School Overview
[x] Import task

Does this PR use tests to help verify we can deploy these changes quickly and confidently?

[x] Included specs for changes
[x] Improved specs for existing code in need of better test coverage

selfie


Broken Source Link for WinRT.Runtime

Describe the bug
Even though WinRT.Runtime includes the Source Link GitHub package, the integration is completely broken. This means debugging WinRT.Runtime is a massive pain without embedding or building the source code yourself.
To Reproduce
Try to view the definitions of WinRT.Runtime methods and notice Visual Studio fallbacks to decompilation rather than Source Link.
Alternatively, it can also be verified by going to NuGet Package Info for CsWinRT. The Source Link label, under Health (at the left side) reports "Missing Symbols".
Expected behavior
Source Link should work properly.
Version Info
CsWinRT 2.0.7

This looks like we might need to publish symbols on the Microsoft public symbol server, will look more into this.


兄弟啥时候发个代码呀

Thank you for your interest in our work. The code will be released around mid-September.


Exports are placed inside a namespace when libraryTarget is commonjs2

Bug report

What is the current behavior?
If output.library is specified and output.libraryTarget is commonjs2, library exports are placed inside a namespace (output.library).
If output.library is omitted, the exports are as expected, but the paths in source maps are incorrect (paths do not include library name).
If the current behavior is a bug, please provide the steps to reproduce.
Reproduction repository: https://github.com/dkamyshov/webpack-5-lib-reproduction
See https://github.com/dkamyshov/webpack-5-lib-reproduction/blob/master/README.md for details.

What is the expected behavior?
Same as with webpack@^4 - no namespace and correct paths in source maps.

Other relevant information:
webpack version:  5.1.0
Node.js version: 12.8.4
Operating System: Ubuntu 20.04.1 LTS
Additional tools: yarn v1.22.5

The issue is still present as of<EMAIL_ADDRESS>Is this working as intended? Am I missing something in the config?

No, need a fix, feel free to send a fix

The namespace is missing because you don't have a "name" in your package.json. The configuration options output.devtoolNamespace controls the namespace in SourceMaps. It defaults to output.library.name || output.uniqueName. output.uniqueName defaults to package.json."name".
While the inconsistency of output.library between webpack 4 and 5 is unintended, I think changing that is not worth it. That would be a breaking change. You could take it as feature...

The namespace is missing because you don't have a "name" in your package.json. The configuration options output.devtoolNamespace controls the namespace in SourceMaps. It defaults to output.library.name || output.uniqueName. output.uniqueName defaults to package.json."name".
While the inconsistency of output.library between webpack 4 and 5 is unintended, I think changing that is not worth it. That would be a breaking change. You could take it as feature...


[DOCS] Improve documentation of functions

At the moment, one has the documentation printed when they execute the functions. However, one might want to know the parameters of the function before executing them, for example, in a notebook:

The parameters are printed, but not explained to the user, and in particular when using single-letter variables, they can be difficult to understand.
The standard way is writing a docstring. Basically, the same content that is printed during execution should just be a standalone string right below the def, e.g.:
def doppler_orbit_theoretical(t, units="keV", show_plot=False, precision_for_phase=0.01):
    """Compute the Doppler variation expected from orbital movement given a time array in seconds.

    Parameters
    ----------
    t: array-like
        Time array in seconds.

    Other parameters
    ----------------
    units: str, optional
        Units for the output. Default is "keV". Can be "keV", "s", or "angstrom".
    show_plot: bool, optional
        If True, a plot of the orbit and Doppler evolution is shown and saved. Default is False.
    precision_for_phase: float, optional
        Precision for phase calculation. Default is 0.01.

    Returns
    -------
    t: array-like
         Input time array.
    x: array-like
        Orbital phase array.
    equation: array-like
        Expected Doppler variation.

    """

Note that in this example I also formatted the docstring following the numpydoc standard. This is not required, but it is the standard used by Astropy and it works very well with sphinx for automatic documentation.

I have revised the documentation to follow the NumPy docstring standard, as suggested. I will keep the issue open until you have had a chance to review the changes and confirm that everything is in order. Thank you very much!

Thanks @xragua! Following up: many of the functions in the code are not documented at all. Typically, user-facing API (functions that the users are supposed to use) should all be documented, while for private functions it's less of an obligation. However, private functions should be signaled (e.g., with a leading underscore). In my opinion, private functions should also be documented, at least for the maintainer's sake, unless their working is obvious and their code is really simple. Coming back to the code you wrote in three years, you need to be able to still understand what a function exactly does.

Dear @matteobachetti, I completely agree. Now, I added docstrings in every function and also add a leading underscore to those that are private. Thanks!


Adds an inverse_cdf() specialization for Uniform

Without this, it falls back to the default binary search algorithm, which is not as accurate. For example: using the binary search Uniform::new(0.0, 10.0).unwrap().inverse_cdf(0.5) yeilds 5.0000457763671875, whereas the new specialization yeilds 5.0.

Hello, is anyone available to review this PR? I am still interested in getting this change merged.

Merged as 9e63ee4, thanks for this!


URL encode + symbol before requesting to the back end

Created issue  https://github.com/angular/angular/issues/20376

Factions not encoded with custom encoder

Fixed by commit:  d800058


Move to fsprojects

@dungpa what do you think about moving this to fsprojects org?
The project may find a new maintainer there and be updated for the latest Z3 and .NET support.
https://twitter.com/dsymetweets/status/1738900302978339278

@sergey-tihon Done.
See the new repo at https://github.com/fsprojects/Z3Fs.

thank you @dungpa !
@haf can you please add https://www.nuget.org/profiles/fsprojects to owners of https://www.nuget.org/packages/FsZ3? (if the package is created from this repo)

It's not; I extended and improved this repo and built it from https://github.com/haf/FsZ3

Also I don't add fsprojects as owners because the remove me from owners without asking.

@haf Our apologies, that would be against our policy if you were the originator, we may have made a mistake. Can we work with you to rectify it? Which project and package are we talking about?

It's not; I extended and improved this repo and built it from https://github.com/haf/FsZ3

Thank you for the clarification, I missed somehow that you have a fork.

Also I don't add fsprojects as owners because the remove me from owners without asking.

This should never happen with the original project owner. Sorry one more time, if it happened. Please share the project/package name so we may take a look and fix the mistake.
Closing this issue, because the move is done.
Happy New Year everyone!


doc: dts: Remove orphan section

'orphan:' appears before Flash Partitions section on
https://docs.zephyrproject.org/latest/guides/dts/index.html page.
Fix this
Signed-off-by: Erwan Gouriou<EMAIL_ADDRESS>

Not sure this is the right fix, but bug is there.

Codecov Report

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

@@            Coverage Diff            @@
##             master   #14987   +/-   ##
=========================================
  Coverage          ?   52.92%
=========================================
  Files             ?      309
  Lines             ?    45266
  Branches          ?    10451
=========================================
  Hits              ?    23955
  Misses            ?    16543
  Partials          ?     4768

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 5f83759...ff7a6b2. Read the comment docs.

this flash_partitions.inc file is included only by the index.rst file in this same directory. I'm not sure why it's in a separate included file and not just part of index.rst, but in any case this fix will correct the noticed :orphan: in the generated HTML output.


Same pixel predicting for two different instance mask2former

Hi , I was able to train mask2former for custom dataset for instance segmentation task, while inference, i noticed that, say example pixel (200,100) is present in instance 1 and instance 5 , which belong to two different instance of same object, can some one help me on this

Can anyone please help me on this


Not able to login with my host username and password

I'm on Ubuntu 20.04.
 However, I'm not able to log in with my host username and password.
My password has only 4 characters consisting of only numbers. I wonder if this conflicts with the rule set in the docker image.

Both the user name and password for logging to JupyterHub is your host username. The password is control by the environment variable DOCKER_PASSWORD. As you can see in the command above, it is id -un by default, which is your host user name.
There are 2 ways you can change the password.

Pass in a different password via the option -e DOCKER_PASSWORD when you start a container. This way is NOT recommended as it is not secure.
Change your password using passwd in a terminal after you login to JupyterHub. This is documented in https://www.legendu.net/en/blog/my-docker-images/#start-a-container (see highlighted in red) and is the recommended way.


Correct the documents.

README.md

With Visual C++ on Windows

Building from the source files cloned from the GitHub repository

Move the header level from 4 to 3.

Building setup

tetengi.msi


add item click callback

The origin project only allow developer set onTouch callback which is not suitable for my requirement, therefore I add a onClick callback which give more choices for developers to use.

Thanks for your work 👍


A project already exists not detailed message

On my local box, I get  "A Project Already Exists"
dan@localhost:~/DEV/github2/lgen/app$ mup init
Meteor Up: Production Quality Meteor Deployments
A Project Already Exists
I remove every meteor .meteor project and project n the server side even the meteor binary.
But still get that error message. Any idea ?

I'm having the same issue , can't find any documentation regarding this .

The code in mupx/lib/actions.js seems to suggest that error means mup.json or setting.json is found.
Actions.init  = function() {
  var destMupJson = path.resolve('mup.json');
  var destSettingsJson = path.resolve('settings.json');

  if(fs.existsSync(destMupJson) || fs.existsSync(destSettingsJson)) {
    console.error('A Project Already Exists'.bold.red);
    process.exit(1);
  }

Yup , just figured that out , i  deleted the settings.json file and no longer seeing the issue . Thank @MasterJames

Seriously, what a bad programming. And not even fixed after a year...
Wasted my life to figure this out... :-(


website: Fix Apache Podling Website Checks

https://whimsy.apache.org/pods/

[ ] disclaimer: https://whimsy.apache.org/pods/check/disclaimer
[ ] privacy: https://whimsy.apache.org/pods/check/privacy
[ ] image: https://whimsy.apache.org/pods/check/image

Possible logo:

wait for logo submit

We can open a new issue to track this.

https://svn.apache.org/repos/asf/comdev/project-logos/originals/opendal.svg

This site is automatically regenerated every hour.

I have submitted the logo, and it may take some time to wait for the update.

Thanks!


Instance only accepts certain shapes and another error thrown in setup

When creating an instance using most shapes you get the following error:
╷
│ Error: 400-InvalidParameter, Shape VM.Standard.E2.1 is not valid for image ocid1.image.oc1.uk-london-1.aaaaaaaaijev7i33dqmcv2lqef3vrxus75qcqzo732ouwblzn2k7hv7qoqvq.
│ Suggestion: Please update the parameter(s) in the Terraform config as per error message Shape VM.Standard.E2.1 is not valid for image ocid1.image.oc1.uk-london-1.aaaaaaaaijev7i33dqmcv2lqef3vrxus75qcqzo732ouwblzn2k7hv7qoqvq.
│ Documentation: https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/core_instance
│ API Reference: https://docs.oracle.com/iaas/api/#/en/iaas/20160918/Instance/LaunchInstance
│ Request Target: POST https://iaas.uk-london-1.oraclecloud.com/20160918/instances
│ Provider version: 4.77.0, released on 2022-05-26.
│ Service: Core Instance
│ Operation Name: LaunchInstance
│ OPC request ID: 39eb998582f0b8aa4fb132b6ce24a807/79F4A953CCE666F00A0B5B983C1E7CD4/F8A42A67AC64EB9B4244D3753A3726DD
│
│
│   with oci_core_instance.Compute[0],
│   on compute.tf line 9, in resource "oci_core_instance" "Compute":
│    9: resource "oci_core_instance" "Compute" {
│

I think this is an error in the provider as manually creating an instance seems to be fine in more shapes. I ended up using VM.Standard2.1 as a working shape. This is listed as a "shielded" instance. So maybe there's something built in to the provider to only accept this?
This error is also throws when using a shape that terraform accepts:
│ Error: remote-exec provisioner error
│
│   with null_resource.remote-exec-windows[0],
│   on winrm.tf line 60, in resource "null_resource" "remote-exec-windows":
│   60:   provisioner "remote-exec" {
│
│ error executing "C:/Temp/terraform_108376281.cmd": unknown error Post "https://<IP_ADDRESS>:5986/wsman": net/http: timeout awaiting response headers
╵

Seems like the second problem is resolved by simply waiting and then reapplying in a few minutes. - need to test further


Pointers and Functions in C++

Description 📜
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
Fixes #2176

Type of change 📝

[x] Documentation (Content Creation in the form of codes or tutorials)

Domain of Contribution 📊

[x] C/CPP

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I'm GWOC'21 contributor

Screenshots / Gif (Optional) 📸

/assign

Made changes as directed. Please review it !! @Suvraneel

@arjyo851  Awesome ❤