Python Graph QL

import requests

import json


# GraphQL endpoint

url = 'YOUR_GRAPHQL_ENDPOINT'


# GraphQL query. Replace this with your actual query.

query = """

{

  yourQuery {

    field1

    field2

    field3

  }

}

"""


# Headers, if needed (e.g., for authentication)

headers = {

    'Content-Type': 'application/json',

    # Uncomment and replace with your token if authentication is required

    # 'Authorization': 'Bearer YOUR_ACCESS_TOKEN',

}


# Make the request

response = requests.post(url, json={'query': query}, headers=headers)


# Check for errors

if response.status_code == 200:

    # Fetch the JSON data from the response

    data = response.json()

    

    # Specify the JSON file you want to write to

    json_file = 'output.json'

    

    # Write the JSON data to a file

    with open(json_file, 'w', encoding='utf-8') as file:

        json.dump(data, file, ensure_ascii=False, indent=4)

    

    print("JSON file has been created successfully.")

else:

    print(f"Failed to fetch data: {response.status_code} {response.text}")


import json

import csv


# Sample JSON data (replace this with your actual JSON data)

json_data = '''

[

    {"name": "John Doe", "age": 30, "city": "New York"},

    {"name": "Jane Doe", "age": 25, "city": "Los Angeles"}

]

'''


# Parse the JSON data

data = json.loads(json_data)


# Specify the CSV file name

csv_file = "output.csv"


# Open the CSV file for writing

with open(csv_file, mode='w', newline='') as file:

    # Create a CSV writer object

    writer = csv.writer(file)

    

    # Write the header (assuming all dictionaries have the same keys)

    writer.writerow(data[0].keys())

    

    # Write the data rows

    for item in data:

        writer.writerow(item.values())


print("CSV file has been created successfully.")



Siv Pravis

Technical capabilities

Code maintainability core Learn more

Make it easy for developers to find, reuse, and change code, and keep dependencies up-to-date. 

Continuous delivery core Learn more 

Make deploying software a reliable, low-risk process that can be performed on demand at any time. 

Continuous integration core Learn more 

Learn about common mistakes, ways to measure, and how to improve on your continuous integration efforts. 

Database change management core Learn more 

Make sure database changes don't cause problems or slow you down. 

Deployment automation core Learn more 

Best practices and approaches for deployment automation and reducing manual intervention in the release process. 

Empowering teams to choose tools core Learn more 

Empower teams to make informed decisions on tools and technologies. Learn how these decisions drive more effective software delivery.Learn more 

Flexible infrastructure core Learn more 

Find out how to manage cloud infrastructure effectively so you can achieve higher levels of agility, availability, and cost visibility.Learn more 

Monitoring and observability core Learn more 

Learn how to build tooling to help you understand and debug your production systems.Learn more 

Test automation core Learn more 

Improve software quality by building reliable automated test suites and performing all kinds of testing throughout the software delivery lifecycle.

Test data management core Learn more 

Understand the right strategies for managing test data effectively along with approaches to provide fast, secure data access for testing. Learn more 

Trunk-based development core Learn more 

Prevent merge-conflict hassles with trunk-based development practices.Learn more 

Version control core Learn more 

A guide to implementing the right version control practices for reproducibility and traceability.

Process capabilities

Customer feedback

Drive better organizational outcomes by gathering customer feedback and incorporating it into product and feature design. Learn more 

Documentation quality core

Maintain accurate, well-organized, user-centric internal documentation to empower teams throughout the software development process. Learn more 

Loosely coupled architecture core

Learn about moving from a tightly coupled architecture to service-oriented and microservice architectures without re-architecting everything at once Learn more 

Monitoring systems to inform business decisions

Improve monitoring across infrastructure platforms, middleware, and the application tier, so you can provide fast feedback to developers. Learn more 

Proactive failure notification

Set proactive failure notifications to identify critical issues and act on problems before they arise. Learn more 

Shifting left on security core

Build security into the software development lifecycle without compromising delivery speed. Learn more 

Streamlining change approval core

Replace heavyweight change-approval processes with peer review, to get the benefits of a more reliable, compliant release process without sacrificing speed. Learn more 

Team experimentation

Innovate faster by building empowered teams that can try out new ideas without approval from people outside the team.Learn more 

Visibility of work in the value stream

Understand and visualize the flow of work from idea to customer outcome in order to drive higher performance. Learn more 

Visual management

Learn about the principles of visual management to promote information sharing, get a common understanding of where the team is, and how to improve. Learn more 

Work in process limits

Prioritize work, limit the amount of things that people are working on, and focus on getting a small number of high-priority tasks done. Learn more 

Working in small batches

Create shorter lead times and faster feedback loops by working in small batches. Learn common obstacles to this critical capability and how to overcome them.Learn more 

Cultural capabilities

Generative organizational culture core

Discover how growing a generative, high-trust culture drives better organizational and software delivery performance. Learn more 

How to empower software delivery teams as a business leader

Measure and enable performance to help teams deliver value. Learn more 

How to transform

Find out about the importance of ensuring your people have the tools and resources to do their job, and of making good use of their skills and abilities. Learn more 

Job satisfaction

Find out about the importance of ensuring your people have the tools and resources to do their job, and of making good use of their skills and abilities. Learn more 

Learning culture

Grow a learning culture and understand its impact on your organizational performance. Learn more 

Transformational leadership

Learn how effective leaders influence software delivery performance by driving the adoption of technical and product management capabilities. Learn more 

Well-being core

A focus on employee happiness and work environment can improve organizational performance while helping retain talent. Learn more 


To ensure your efforts in enhancing Engineering Excellence (EE) capabilities lead to observable improvements in DORA metrics, capabilities, and enablers scores, as well as the adoption of enterprise and architecture tools and products, it's crucial to adopt a structured approach towards measuring outcomes and fostering adoption. Here's how you can align your project initiatives with these expected outcomes:

Observable Improvements in DORA Metrics

Enhancements in Capabilities and Enablers Scores

Adoption of Enterprise and Architecture Tools and Products

Ensuring Success

By focusing on these strategies, you can ensure that your project not only achieves its immediate goals but also lays the foundation for sustained improvements in engineering excellence over time.

1. Assessing Current EE Capabilities

a. Baseline Current DORA Metrics

b. Identify Gaps and Opportunities

c. Set Benchmark Goals


2. Planning for Implementation

a. Tool Selection

b. Best Practices and Processes


3. Implementation and Continuous Improvement

a. Rollout Plan

b. Measure and Adjust

c. Celebrate Success and Iterate

For each in-scope application, tailor this approach based on its specific context, technology stack, and team dynamics. By systematically assessing, planning, and implementing improvements, you can enhance your engineering excellence capabilities, leading to better productivity, higher quality, and more reliable software delivery.