python_uml_class 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/user_code.py ADDED
@@ -0,0 +1,52 @@
1
+ import json
2
+ import sqlite3
3
+ import re
4
+ from pydantic import BaseModel, Field
5
+
6
+ class SaveProductTool:
7
+ def _run(self, name: str, store: str = None, price: str = None, url: str = "", description: str = "", model_number: str = "", release_date: str = "", ram: str = "", ssd: str = "", **kwargs):
8
+ try:
9
+ if should_save:
10
+ cursor.execute('''
11
+ INSERT INTO products (name, store, price, url, description, model_number, release_date, ram, ssd, updated_at)
12
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
13
+ ''', (name, store, price, url, description, model_number, release_date, ram, ssd))
14
+ if not msg:
15
+ msg = f"Saved product: {name} from {store} for {price}."
16
+ else:
17
+ msg = msg_prefix
18
+
19
+ if should_update:
20
+ if (price != curr_price_str):
21
+ cursor.execute('''
22
+ UPDATE products
23
+ SET price = ?, url = ?, description = ?, model_number = ?, release_date = ?, ram = ?, ssd = ?, store = ?, updated_at = CURRENT_TIMESTAMP
24
+ WHERE id = ?
25
+ ''', (price, url, description, final_model, final_release, final_ram, final_ssd, store, current_cheapest['id']))
26
+ if not msg:
27
+ msg = f"Updated product {name} info."
28
+ else:
29
+ msg = msg_prefix
30
+ else:
31
+ msg = f"No changes for {name} at {store}."
32
+
33
+ if should_save or should_update:
34
+ cursor.execute("SELECT id, price FROM products WHERE name = ?", (name,))
35
+ rows = cursor.fetchall()
36
+ if len(rows) > 1:
37
+ rows_parsed = []
38
+ for r in rows:
39
+ rows_parsed.append({'id': r[0], 'val': parse_price_val(r[1])})
40
+
41
+ rows_parsed.sort(key=lambda x: x['val'])
42
+ winner = rows_parsed[0]
43
+
44
+ for loser in rows_parsed[1:]:
45
+ cursor.execute("DELETE FROM products WHERE id = ?", (loser['id'],))
46
+ msg += " (Cleaned up duplicate records)"
47
+
48
+ conn.commit()
49
+ conn.close()
50
+ return msg
51
+ except Exception as e:
52
+ return f"Error saving product: {str(e)}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: python_uml_class
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masataka kuwayama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-16 00:00:00.000000000 Z
11
+ date: 2026-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: browser_app_base
@@ -38,6 +38,48 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '4.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rackup
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webrick
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
41
83
  description: Create a Python UML class diagram with PlangUml.
42
84
  email:
43
85
  - masataka.kuwayama@gmail.com
@@ -47,10 +89,12 @@ executables:
47
89
  extensions: []
48
90
  extra_rdoc_files: []
49
91
  files:
92
+ - ".rspec_status"
50
93
  - Gemfile
51
94
  - Gemfile.lock
52
95
  - LICENSE
53
96
  - README.md
97
+ - README_JA.md
54
98
  - Rakefile
55
99
  - bin/start_python_uml_class.rb
56
100
  - bin/start_python_uml_class.rbw
@@ -73,6 +117,11 @@ files:
73
117
  - lib/wsserver.rb
74
118
  - python_uml_class.gemspec
75
119
  - sig/PythonUmlClass.rbs
120
+ - test_run.log
121
+ - test_run.rb
122
+ - test_run_new.log
123
+ - test_script.py
124
+ - user_code.py
76
125
  homepage: https://github.com/kuwayama1971/PythonUmlClass
77
126
  licenses:
78
127
  - MIT