- @ConditionalOnClass did not find required class 'org.springframework.jms.core.JmsTemplate' (OnClassCondition)

   JndiDataSourceAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType' (OnClassCondition)

   JooqAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.jooq.DSLContext' (OnClassCondition)

   JpaRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.jpa.repository.JpaRepository' (OnClassCondition)

   JsonbAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'javax.json.bind.Jsonb' (OnClassCondition)

   JsonbHttpMessageConvertersConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'javax.json.bind.Jsonb' (OnClassCondition)

   JtaAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'javax.transaction.Transaction' (OnClassCondition)

   KafkaAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.kafka.core.KafkaTemplate' (OnClassCondition)

   KubernetesAutoConfiguration#kubernetesClient:
      Did not match:
         - @ConditionalOnMissingBean (types: io.fabric8.kubernetes.client.KubernetesClient; SearchStrategy: all) found beans of type 'io.fabric8.kubernetes.client.KubernetesClient' kubernetesClient (OnBeanCondition)

   KubernetesAutoConfiguration#kubernetesClientConfig:
      Did not match:
         - @ConditionalOnMissingBean (types: io.fabric8.kubernetes.client.Config; SearchStrategy: all) found beans of type 'io.fabric8.kubernetes.client.Config' kubernetesClientConfig (OnBeanCondition)

   KubernetesAutoConfiguration#kubernetesPodUtils:
      Did not match:
         - @ConditionalOnMissingBean (types: org.springframework.cloud.kubernetes.StandardPodUtils; SearchStrategy: all) found beans of type 'org.springframework.cloud.kubernetes.StandardPodUtils' kubernetesPodUtils (OnBeanCondition)

   KubernetesAutoConfiguration.KubernetesActuatorConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.boot.actuate.health.HealthIndicator' (OnClassCondition)

   LdapAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.ldap.core.ContextSource' (OnClassCondition)

   LdapRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.ldap.repository.LdapRepository' (OnClassCondition)

   LiquibaseAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'liquibase.change.DatabaseChange' (OnClassCondition)

   MailSenderAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'javax.mail.internet.MimeMessage' (OnClassCondition)

   MailSenderValidatorAutoConfiguration:
      Did not match:
         - @ConditionalOnSingleCandidate did not find required type 'org.springframework.mail.javamail.JavaMailSenderImpl' (OnBeanCondition)

   MessageSourceAutoConfiguration:
      Did not match:
         - ResourceBundle did not find bundle with basename messages (MessageSourceAutoConfiguration.ResourceBundleCondition)

   MongoAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.mongodb.client.MongoClient' (OnClassCondition)

   MongoDataAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.mongodb.client.MongoClient' (OnClassCondition)

   MongoReactiveAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.mongodb.reactivestreams.client.MongoClient' (OnClassCondition)

   MongoReactiveDataAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.mongodb.reactivestreams.client.MongoClient' (OnClassCondition)

   MongoReactiveRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.mongodb.reactivestreams.client.MongoClient' (OnClassCondition)

   MongoRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.mongodb.client.MongoClient' (OnClassCondition)

   MustacheAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.samskivert.mustache.Mustache' (OnClassCondition)

   Neo4jDataAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.neo4j.ogm.session.SessionFactory' (OnClassCondition)

   Neo4jRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.neo4j.ogm.session.Neo4jSession' (OnClassCondition)

   OAuth2ClientAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.config.annotation.web.configuration.EnableWebSecurity' (OnClassCondition)

   OAuth2ResourceServerAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken' (OnClassCondition)

   PersistenceExceptionTranslationAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor' (OnClassCondition)

   ProjectInfoAutoConfiguration#buildProperties:
      Did not match:
         - @ConditionalOnResource did not find resource '${spring.info.build.location:classpath:META-INF/build-info.properties}' (OnResourceCondition)

   ProjectInfoAutoConfiguration#gitProperties:
      Did not match:
         - GitResource did not find git info at classpath:git.properties (ProjectInfoAutoConfiguration.GitResourceAvailableCondition)

   QuartzAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.quartz.Scheduler' (OnClassCondition)

   R2dbcAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'io.r2dbc.spi.ConnectionFactory' (OnClassCondition)

   R2dbcDataAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.r2dbc.core.DatabaseClient' (OnClassCondition)

   R2dbcRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'io.r2dbc.spi.ConnectionFactory' (OnClassCondition)

   R2dbcTransactionManagerAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.r2dbc.connectionfactory.R2dbcTransactionManager' (OnClassCondition)

   RSocketMessagingAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'io.rsocket.RSocketFactory' (OnClassCondition)

   RSocketRequesterAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'io.rsocket.RSocketFactory' (OnClassCondition)

   RSocketSecurityAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.rsocket.core.SecuritySocketAcceptorInterceptor' (OnClassCondition)

   RSocketServerAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'io.rsocket.core.RSocketServer' (OnClassCondition)

   RSocketStrategiesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'io.netty.buffer.PooledByteBufAllocator' (OnClassCondition)

   RabbitAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.rabbitmq.client.Channel' (OnClassCondition)

   ReactiveElasticsearchRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient' (OnClassCondition)

   ReactiveElasticsearchRestClientAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'reactor.netty.http.client.HttpClient' (OnClassCondition)

   ReactiveOAuth2ClientAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'reactor.core.publisher.Flux' (OnClassCondition)

   ReactiveOAuth2ResourceServerAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity' (OnClassCondition)

   ReactiveSecurityAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'reactor.core.publisher.Flux' (OnClassCondition)

   ReactiveUserDetailsServiceAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.authentication.ReactiveAuthenticationManager' (OnClassCondition)

   ReactiveWebServerFactoryAutoConfiguration:
      Did not match:
         - @ConditionalOnWebApplication did not find reactive web application classes (OnWebApplicationCondition)

   RedisAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.redis.core.RedisOperations' (OnClassCondition)

   RedisCacheConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.redis.connection.RedisConnectionFactory' (OnClassCondition)

   RedisReactiveAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'reactor.core.publisher.Flux' (OnClassCondition)

   RedisRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.redis.repository.configuration.EnableRedisRepositories' (OnClassCondition)

   RefreshAutoConfiguration.JpaInvokerConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'javax.persistence.EntityManagerFactory' (OnClassCondition)

   RefreshEndpointAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration' (OnClassCondition)

   RepositoryRestMvcAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration' (OnClassCondition)

   Saml2RelyingPartyAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistrationRepository' (OnClassCondition)

   SecurityAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.authentication.DefaultAuthenticationEventPublisher' (OnClassCondition)

   SecurityFilterAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.config.http.SessionCreationPolicy' (OnClassCondition)

   SendGridAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.sendgrid.SendGrid' (OnClassCondition)

   ServletWebServerFactoryAutoConfiguration#forwardedHeaderFilter:
      Did not match:
         - @ConditionalOnProperty (server.forward-headers-strategy=framework) did not find property 'server.forward-headers-strategy' (OnPropertyCondition)

   ServletWebServerFactoryConfiguration.EmbeddedJetty:
      Did not match:
         - @ConditionalOnClass did not find required classes 'org.eclipse.jetty.server.Server', 'org.eclipse.jetty.util.Loader', 'org.eclipse.jetty.webapp.WebAppContext' (OnClassCondition)

   ServletWebServerFactoryConfiguration.EmbeddedUndertow:
      Did not match:
         - @ConditionalOnClass did not find required classes 'io.undertow.Undertow', 'org.xnio.SslClientAuthMode' (OnClassCondition)

   SessionAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.session.Session' (OnClassCondition)

   SolrAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.apache.solr.client.solrj.impl.CloudSolrClient' (OnClassCondition)

   SolrRepositoriesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.apache.solr.client.solrj.SolrClient' (OnClassCondition)

   SpringApplicationAdminJmxAutoConfiguration:
      Did not match:
         - @ConditionalOnProperty (spring.application.admin.enabled=true) did not find property 'enabled' (OnPropertyCondition)

   SpringDataWebAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.data.web.PageableHandlerMethodArgumentResolver' (OnClassCondition)

   TaskSchedulingAutoConfiguration#taskScheduler:
      Did not match:
         - @ConditionalOnBean (names: org.springframework.context.annotation.internalScheduledAnnotationProcessor; SearchStrategy: all) did not find any beans named org.springframework.context.annotation.internalScheduledAnnotationProcessor (OnBeanCondition)

   ThymeleafAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.thymeleaf.spring5.SpringTemplateEngine' (OnClassCondition)

   TransactionAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.transaction.PlatformTransactionManager' (OnClassCondition)

   UserDetailsServiceAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.security.authentication.AuthenticationManager' (OnClassCondition)

   ValidationAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'javax.validation.executable.ExecutableValidator' (OnClassCondition)

   WebClientAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.web.reactive.function.client.WebClient' (OnClassCondition)

   WebFluxAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.web.reactive.config.WebFluxConfigurer' (OnClassCondition)

   WebMvcAutoConfiguration#hiddenHttpMethodFilter:
      Did not match:
         - @ConditionalOnProperty (spring.mvc.hiddenmethod.filter.enabled) did not find property 'enabled' (OnPropertyCondition)

   WebMvcAutoConfiguration.ResourceChainCustomizerConfiguration:
      Did not match:
         - @ConditionalOnEnabledResourceChain did not find class org.webjars.WebJarAssetLocator (OnEnabledResourceChainCondition)

   WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter#beanNameViewResolver:
      Did not match:
         - @ConditionalOnMissingBean (types: org.springframework.web.servlet.view.BeanNameViewResolver; SearchStrategy: all) found beans of type 'org.springframework.web.servlet.view.BeanNameViewResolver' beanNameViewResolver (OnBeanCondition)

   WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter#localeResolver:
      Did not match:
         - @ConditionalOnProperty (spring.mvc.locale) did not find property 'locale' (OnPropertyCondition)

   WebServiceTemplateAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.oxm.Marshaller' (OnClassCondition)

   WebServicesAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.ws.transport.http.MessageDispatcherServlet' (OnClassCondition)

   WebSocketMessagingAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer' (OnClassCondition)

   WebSocketReactiveAutoConfiguration:
      Did not match:
         - @ConditionalOnWebApplication did not find reactive web application classes (OnWebApplicationCondition)

   WebSocketServletAutoConfiguration.JettyWebSocketConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer' (OnClassCondition)

   WebSocketServletAutoConfiguration.UndertowWebSocketConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'io.undertow.websockets.jsr.Bootstrap' (OnClassCondition)

   WritableEnvironmentEndpointAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointProperties' (OnClassCondition)

   XADataSourceAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'javax.transaction.TransactionManager' (OnClassCondition)

Exclusions:
-----------

    None

Unconditional classes:
----------------------

    org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration

    org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration

    org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration

    org.springframework.cloud.autoconfigure.LifecycleMvcEndpointAutoConfiguration

    org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration

    org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration

2021-01-07 16:18:02.281  INFO 1 --- [           main] c.g.d.e.s.SystemInformerApplication      : Started SystemInformerApplication in 32.19 seconds (JVM running for 36.324)

I am pretty sure it is StandardPodUtils which is talking to the API server, as we try to get information about the pod when the bean is created.
However given that you are only using Spring Cloud Kuberentes to read secrets from the path, I am not sure you really need Spring Cloud Kubernetes, it seems like overkill.  You could do this without Spring Cloud Kubernetes.

I am pretty sure it is StandardPodUtils which is talking to the API server, as we try to get information about the pod when the bean is created.
However given that you are only using Spring Cloud Kuberentes to read secrets from the path, I am not sure you really need Spring Cloud Kubernetes, it seems like overkill.  You could do this without Spring Cloud Kubernetes.

However given that you are only using Spring Cloud Kubernetes to read secrets from the path, I am not sure you really need Spring Cloud Kubernetes, it seems like overkill. You could do this without Spring Cloud Kubernetes.
You are probably right. It was a quick and convenient solution, but it is probably overkill for our use case.
I still believe it could be a good thing to not contact the API server unless there is a specific need by the library user, but feel free to close the issue if you do not believe it to be a worthwhile change.
As for our use case, we will probably implement the reading of secrets ourselves and not rely on Spring Cloud Kubernetes, as suggested.

However given that you are only using Spring Cloud Kubernetes to read secrets from the path, I am not sure you really need Spring Cloud Kubernetes, it seems like overkill. You could do this without Spring Cloud Kubernetes.
You are probably right. It was a quick and convenient solution, but it is probably overkill for our use case.
I still believe it could be a good thing to not contact the API server unless there is a specific need by the library user, but feel free to close the issue if you do not believe it to be a worthwhile change.
As for our use case, we will probably implement the reading of secrets ourselves and not rely on Spring Cloud Kubernetes, as suggested.

I still believe it could be a good thing to not contact the API server unless there is a specific need by the library user

I think that if you are going to do anything meaningful with Spring Cloud Kubernetes you are going to need to access the API server.  I will close this or now, but welcome someone to convince me otherwise :)

I still believe it could be a good thing to not contact the API server unless there is a specific need by the library user

I think that if you are going to do anything meaningful with Spring Cloud Kubernetes you are going to need to access the API server.  I will close this or now, but welcome someone to convince me otherwise :)

I know this is closed, but +1 for this use case
The spring secrets property loader is very convenient but is bundled with lots of unnecessary functionality for my use case of just wanting to read secrets from local filepath.
we've had to home roll our own solution due to this

If you mount the secret as a volume why not just use Spring Boot to load the properties?  Why use Spring Cloud Kubernetes?

Thanks for the reply
if I have a file called "secret" with contents of "value" in /run/secrets
I would like to reference that in Spring Boot with ${secret} like any other property
However Spring boot has no native way to read secrets from file
Therefore we had to implement our own loader and register it in spring.factories
Frustrating when there is already a solution out there, just packaged in a heavyweight jar with functionality that can't be disabled

@stewartie4 cant you just point to the mounted file using spring.config.import?

spring.config.import can't be used to load secrets in from a volume/file on local file system as far as I know
any searches I have performed have resulted in either using spring-cloud-k8s or home rolling your own property loader
eg. but not limited to https://bmuschko.com/blog/docker-secret-spring-boot/

Have you tried it though?  That post is from 2018 long before spring.config.import existed.

You have a point, the articles i've been reading are old
I can see this being used in the context of config trees which is pretty much what secrets are so this may work
However, I'm on spring boot 2.2, I believe this was only introduced in 2.4
I'll have a look and update this thread for posterity
Thanks very much

Spring boot 2.2 has reach end of life as of July.  Spring boot 2.4 introduced spring.config.import I believe.  But there are ways to point spring boot at additional configuration locations in 2.3 as well.

The configtree type does what you are looking for and was built for exactly your use case

Thanks guys
We have upgraded to spring boot 2.4 and spring.config.import with configtree works exactly as intended
unfortunately spring boot 2.4 removed support for bootstrap.properties which we were using to load our vault/consul credentials
But that's my problem to sort out, i'm sure there are docs somewhere
thanks again!

For posterity, I ended up with the following:
spring-boot-starter 2.4.12
spring-cloud-bootstrap 3.0.0
bootstrap.properties:
spring.config.import= configtree:/run/secrets/
And now everything is working perfectly!
Thanks to all for the suggestions


Generate a better DOM interface from WebKit IDL files

I think we could modify https://github.com/ghcjs/domconv-webkit to also generate Fay functions that use Fay ffi calls to manipulate the DOM.
Currently there are two generators

domconv-webkit creates the Haskell functions that call the WebKitGTK+ C functions (used in the WebKitGTK+ Haskell bindings)
domconv-webkit-js creates GHCJS JavaScript replacement functions for the WebKitGTK+ C functions (these work on any browser not just WebKit)

Both are run like this
domconv-webkit webkit.idl -I/home/hamish/build/webkit-1.10.0/Source/WebCore

Where webkit.idl is from https://patch-tag.com/r/hamish/webkit/home and /home/hamish/build/webkit-1.10.0 is the location of the WebKitGTK+ source code.
A Fay generator would probably be closer to the domconv-webkit than domconv-webkit-js.

Spring cleaning. Lack of activity, it's unlikely that this will happen.


guard: add workload partitioning annotation

This is required to address https://issues.redhat.com/browse/OCPBUGS-22112.

Proof: https://github.com/openshift/cluster-kube-apiserver-operator/pull/1576

/lgtm
/approve

/cherrypick release-4.14

/cherrypick release-4.13
/cherrypick release-4.12
/cherrypick release-4.11

/cherrypick release-4.12

/cherrypick release-4.11


run("cmd /c dir")

Hi Ken,
Tried to run a DOS command using your suggestion in: https://github.com/kelaberetiv/TagUI/issues/473
The following works in TagUI:
run cmd /c dir
echo run_result

In TagUI-Python on windows 10:
run_result = t.run("cmd /c dir")
print("run_result)

The above will give the error message:
Traceback (most recent call last):
  File "test1.py", line 2, in <module>
    run_result = t.run("cmd /c dir")
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\tagui.py", line 1173, in run
    shell=True))
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 395, in check_output
    **kwargs).stdout
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 487, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'cmd /c dir; exit 0' returned non-zero exit status 1.

Hi CK, thanks for raising this! May need your help to test because I don't have access to a Windows laptop now. Issues #45 #46 should be related to the same cause.
The best practice for running commands from Python using subprocess requires using the exit 0 to be always appended. This is to capture error messages if the command results in error -
https://docs.python.org/3.4/library/subprocess.html?highlight=exp#subprocess.check_output
Below shows a replication case if exit 0 is not appended and what happens if appended. When it is not appended as part of the command, if the command returns error it will raise a Python exception with error code instead of showing the error message which is more meaningful for debugging.
>>> t.run('abc')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "tagui.py", line 1173, in run
    shell=True))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 573, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'abc' returned non-zero exit status 127

>>> t.run('abc')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "tagui.py", line 1173, in run
    shell=True))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 573, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'abc' returned non-zero exit status 127
>>> t.run('abc; exit 0')
'/bin/sh: abc: command not found\n'

Will dig further. There may not be a solution or the solution could be not appending for echo commands. For the cmd error, looks like it is some other cause.

For echo on macOS, it looks alright with appending exit 0.
>>> t.run('echo 123; exit 0')
'123\n'

On macOS, the ; works in echo as a delimiter for next command. From your above example, it looks like for Windows, the ; is not recognised by echo as a delimiter. Thus the ;exit 0 string becomes part of the echo output result when you run echo.
Tebel:tagui-python kensoh$ echo 123; echo 456
123
456

Solution may be to use & when run() is invoked on Windows environment. I'll have to borrow a Windows laptop and test on this.
https://stackoverflow.com/questions/8055371/how-do-i-run-two-commands-in-one-line-in-windows-cmd

The issue should have the same root cause at #45 - probably the ; gets interpreted as part of the command resulting in the error message, will check on this when I borrow a Windows laptop.

Going to update run() to below, tested ok on Windows. Will test on macOS and Linux before patching -
def run(command_to_run = None):
    if command_to_run is None or command_to_run == '':
        print('[TAGUI][ERROR] - command(s) missing for run()')
        return ''

    else:
        if platform.system() == 'Windows':
            command_delimiter = ' & '
        else:
            command_delimiter = '; '
        return _py23_decode(subprocess.check_output(
            command_to_run + command_delimiter + 'exit 0',
            stderr=subprocess.STDOUT,
            shell=True))

This is now fixed in v1.10 - to upgrade, using pip install tagui --upgrade
Thank you very much @ck81 for spotting this and raising this issue!

Hi Ken,
Just downloaded the latest version.
Yes, the following now run's perfectly ok now.
run_result = t.run("cmd /c dir")
print("run_result)

Thanks for the fix!

Thanks CK for your update! I appreciate very much that you spotted this and feedback.


Could not merge documents

Hi,
I tried following the README and ran the poetry run mlflow2prov extract command but got this error:
Could not merge documents: 'generator' object is not subscriptable

I removed the merge argument and the command was executing for a while, but eventually I got this:
mlflow.exceptions.MlflowException: API request to http://localhost:5001/api/2.0/mlflow/runs/search failed with exception HTTPConnectionPool(host='localhost', port=5001): Max retries exceeded with url: /api/2.0/mlflow/runs/search (Caused by ResponseError('too many 500 error responses'))


Bugfix: mistakes in 2 Glorot initializers

In 2 Glorot initializers glorot_uniform() and glorot_normal(), VarianceScaling object is returned.
Parameter scale passed to create VarianceScaling object in function .
When distribution is normal, stddev of VarianceScaling object is sqrt(scale / n).
But for Glorot normal initializer, stddev equals to  sqrt(2 / n). So scale should be 2. at L322.
When distribution is uniform, limit of VarianceScaling object is sqrt(3 * scale / n).
But for Glorot uniform initializer, stddev equals to  sqrt(6 / n). So scale should be 2. at L346.

No; see the implementation of VarianceScaling.

Opps... Got it. My mistake. Thank you for your time.


added email notification text content support

added email notification text content support (configuration text)
added default email notification text content default value empty
converted email notification from html to multipart/alternatives with support to both html (first) and text (last)
ignore intellij IDE .idea working folder

Thanks for picking this up!
Go's standard library actually has a package for multipart: https://godoc.org/mime/multipart
It seems cleaner to use this rather than constructing everything ourselves. Could you switch to using that?

@fabxc The original code of email notification was constructed manually from smtp handshake to email construction. I am not at the level to rework this entire section of code. The smtp protocole is old dated and is not likely to change any time soon. may I recommend adding //TODO refactor to use standard multipart library https://godoc.org/mime/multipart?

Hi, any progress with this pull request? I see that the flag for changes requested is still there but I have removed the offending file (.gitignore).

@awaragi For sure. Thanks for the reminder.
@fabxc Can you have a second look at this?

@fabxc The original code of email notification was constructed manually from smtp handshake to email construction. I am not at the level to rework this entire section of code. The smtp protocole is old dated and is not likely to change any time soon. may I recommend adding //TODO refactor to use standard multipart library https://godoc.org/mime/multipart?

Sorry, I've to raise a very clear "NO" on this. Every new feature is a maintenance liability and already having pending TODOs when adding them is not sustainable.
The question is, who is going to refactor this? The answer is typically no one.
I hope my concern is understandable.
I'm happy to review any attempts to use the proper standard library package. If you don't feel like trying it yourself, maybe someone else who's keen on this feature wants to give it a shot.

@fabxc I understand your point. My liking to Go is increasing so I've attempted to use the mime/multipart library. Take another look and let me know if it works.
By the way, your original TODO about adding support text template is now removed so one less to go.

As far as I can tell (for documentation purposes): Fixes #290

Hey Guys @fabxc @mxinden , any other suggestions, modifications or can you accept this PR?

Any chance someone can take a look at this PR?

Thanks for the feedback. I will update accordingly.

@fabxc any chance to take another look?

@fabxc any possibility to move forward with this pull request?

Anyone?

Any possibility of merging this pull request?

Sorry for the delay, I'll try to poke @fabxc again

Thanks, LGTM! Sorry about the long delay.

This causes a regression.
I've built alertmanager from head and now I'm getting multipart emails with the old html content and empty text content. If your email client chooses the text format (which Gmail does for me, for some reason) then the content of the alert email is empty.
The code should check for non-empty html and/or text templates and skip the empty one, if any.

Also, a MIME-Version: 1.0 header must be added: http://www.rfc-base.org/txt/rfc-2045.txt

And, per RFC 2046 section 5.1.4, the parts should be in increasing preference order. Meaning text should come before HTML. This explains why I'm seeing the empty plain text version in Gmail.
Never mind, I'll submit a PR.

@alin-amana Are you working on this currently? This is a big enough issue that a new release will go out when it's fixed.

Yup, working as we speak.

Done, PTAL at #1009.

Huh, missed that one. Thanks to all involved!


provide show/hide link for the ISBN list

I'm not sure how many cases are like this, but perhaps a show/hide link could be added to the list of ISBNs displayed on our item page? See item/14673465

We found that 676 bib records have more than 20 ISBN's on them. So we need to limit the number that we display. We should also think about how to revise our code to limit the number we retrieve. There are 24 bibs that have over 100 ISBN's on them.
A query that identifies them in MS Access is
query-isbn-count.txt
Worst case screen shot:

I have introduced a limit to the number of rows we process in voyager.py queries. The result of the limits is reduced the time required to handle 4032705 --  from 7+ minutes down to 7 seconds. The results continue to show the combined set of records. Checking all ISBNs was overkill. No need to hide/show, instead a limited set is returned.

Casper test failed to associate a related record. Need to check more ISBNs


Make engines requirement less strict

Changesp

Change Node version requirement from equal to greater than or equal (→ documentation)

Question: Is v8.9.4 really the first version of Node that's supported, or could this be lower?
Closes #12.

Hello @connor-baer !
Thanks so much for the pull request, this looks great.
I think you're right that the engines could be lowered as really I'm mostly interested in communicating that I'm running the latest LTS (as specified in .nvmrc).
So we could update this to be the lowest active LTS version, but since I'm not actively testing that version it may not be the best idea.

Hello @connor-baer !
Thanks so much for the pull request, this looks great.
I think you're right that the engines could be lowered as really I'm mostly interested in communicating that I'm running the latest LTS (as specified in .nvmrc).
So we could update this to be the lowest active LTS version, but since I'm not actively testing that version it may not be the best idea.

I'll merge this in and get a release out.

Thanks for the quick release!
Personally, I don't mind the recent version since I'm running the latest LTS of Node as well. Was just wondering :)


Offset is "scaled"

When moving the mouse on X axis, the offset seems to be scaled:
https://user-images.githubusercontent.com/297578/124279503-dead6a80-db47-11eb-837b-47160a6ad6b5.mp4
I don't have this issue on Y axis.

I've restored the old version, this one's  now called "Special mode" and it's optional. The math & logic behind it is not  implemented by me. @34700 ping, could you please also look at this :eyes: ?

Seems that @34700 is inactive, @Glandos could you try using just cursor source and do this Transform > Edit Transform > Positional Alignment > Center for that scene item, or cropped special mode is must have feature for you?